VBAとは?カテゴリ別の関数一覧と104の実践例を紹介
VBAの全体像とVBA関数について解説しています
- そもそも VBAとは? マクロとの違いも含め解説
- VBA関数 を カテゴリ別 一覧表 で紹介
- カテゴリ別の具体例 を合計104個 紹介
VBA関数を単体で見ただけでは、使うイメージがしづらいと思うので
カテゴリ別に分けて、具体例(例、解説、コード、出力結果)を紹介しています
目次から知りたい情報へ飛んで、辞書のように使って ください
悩み解決・アイデア探し・業務改善 に役立てば嬉しいです
※ Microsoft公式リファレンス でも「VBA関数」について学ぶことができます
VBAとは、関数を自作すること
VBA(Visual Basic for Applications)とは Microsoft Office製品を拡張するためのプログラミング言語です
自動化したり、特定の操作をカスタマイズするためのスクリプト(プログラム)を書くことができます
というのが みんなが口をそろえて言うセリフですが、初心者からすると意味不明です
要するにどういうことか?
「VBA」を学ぶということは、関数を自作する ということです
例えば、皆が知ってるであろう「SUM関数」
選択した範囲を合計するソレです
VBAを用いることで、SUM関数と同じ動作の関数を自作する事が出来ます
「=SUM()」と全く同じ機能を持った「=俺のSUM()」という関数を作ってみます
動画を見てください
イメージ動画(音声はありません)
動画のように関数を自作すことができます
自作した関数によって、実務を効率化したり 自動化したりできます
作った関数は 動画のように セルに打ち込んで 使用したり
ボタンを配置し それを クリック する事で使用したり、様々な実行方法があります
「他のエクセルブックを開いて、セル範囲を指定して、コピーして、今のブックに貼り付ける」
のような一連の作業を関数として作成し、その関数をボタンクリックで実行 のようなこともできます
普段のルーティンワークを自動化することができます
それが VBA です
こちら が上記のような自動化を紹介した記事です
ちなみに「俺のSUM」のコードは以下です
Function 俺のSUM(range As Range) As Double
Dim cell As Range
Dim total As Double
total = 0 ' 合計を格納する変数の初期化
' 指定された範囲内の各セルに対してループ処理
For Each cell In range
If IsNumeric(cell.Value) Then ' セルの値が数値の場合のみ
total = total + cell.Value ' 合計値に加算
End If
Next cell
俺のSUM = total ' 計算された合計値を関数の結果として返す
End Function
VBA関数とは
一般に「VBA関数」と呼んでいるのは、予め用意されている「組み込みVBA関数」を指します
特定のタスクを実行するためのコードの集まりで、数値計算、文字列操作、日付と時間の管理など、様々な目的で使用されます
「組み込みVBA関数」を組み合わせることで、オリジナルの「関数」を 自作します
VBAとマクロの違い
違いを理解することは重要ではありませんが、一応 説明します
VBAとマクロは密接に関連していますが 同じものではありません
マクロ は、繰り返し行う操作を自動化する一連の命令のこと
VBA は、マクロを作成するための言語
以上。です
VBA関数一覧(カテゴリ別)
数値、文字列、日時、配列、ファイル、変換、条件分岐、エラーハンドリングなど、カテゴリ別に関数一覧表を作成してあります。
知りたいカテゴリへは、目次からすばやくアクセスできます。
<数値>
数値を操作する関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
Abs | 指定した数値の絶対値を返します。 | Abs(-123) | 123 |
Atn | 指定した数値のアークタンジェント(逆正接)を返します。 | Atn(1) | 0.785398163 |
Cos | 指定した角度のコサインを返します。 | Cos(PI()/3) | 0.5 |
Exp | eを底とする指定した数値の指数関数を計算します。 | Exp(1) | 2.718281828 |
Fix | 数値の整数部分を返します。正数では小数点以下を切り捨て、負数では小数点以下を切り上げます。 | Fix(-123.45) | -123 |
Int | 数値の整数部分を返します。常に小数点以下を切り捨てます。 | Int(-123.45) | -124 |
Log | 指定した数値の自然対数を返します。 | Log(E()) | 1 |
Rnd | 0以上1未満の乱数を生成します。 | Rnd() | 0.7055475 (例) |
Sgn | 数値の符号を示します。(正は1、0は0、負は-1) | Sgn(-10) | -1 |
Sin | 指定した角度のサインを返します。 | Sin(PI()/2) | 1 |
Sqr | 指定した数値の平方根を返します。 | Sqr(16) | 4 |
Tan | 指定した角度のタンジェントを返します。 | Tan(PI()/4) | 1 |
<文字列>
文字列を操作する関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
Asc | 指定した文字の文字コードを返します。 | Asc("A") | 65 |
Chr | 指定した文字コードに対応する文字を返します。 | Chr(65) | "A" |
InStr | 一つの文字列内で別の文字列が最初に現れる位置を返します。 | InStr("Hello World", "World") | 7 |
LCase | 文字列を小文字に変換します。 | LCase("HELLO") | "hello" |
Left | 文字列の左端から指定した数の文字を返します。 | Left("Hello World", 5) | "Hello" |
Len | 文字列の長さ(文字数)を返します。 | Len("Hello") | 5 |
Mid | 文字列の指定された位置から、指定された数の文字を返します。 | Mid("Hello World", 7, 5) | "World" |
Right | 文字列の右端から指定した数の文字を返します。 | Right("Hello World", 5) | "World" |
StrComp | 二つの文字列を比較し、結果を返します。 | StrComp("hello", "hello") | 0 |
Trim | 文字列の両端から空白を除去します。 | Trim(" Hello World ") | "Hello World" |
UCase | 文字列を大文字に変換します。 | UCase("hello") | "HELLO" |
<日付と時刻>
日付と時刻を操作する関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
Date | 現在の日付を返します。 | Date() | 2024-03-20 (例) |
DateAdd | 特定の日付単位(年、月、日など)を日付に加算します。 | DateAdd("m", 1, #2024-03-20#) | 2024-04-20 |
DateDiff | 二つの日付の間の特定の単位(年、月、日など)における差を計算します。 | DateDiff("d", #2024-03-20#, #2024-04-20#) | 31 |
DatePart | 日付から特定の部分(年、月、日など)を抽出します。 | DatePart("yyyy", #2024-03-20#) | 2024 |
DateSerial | 指定した年、月、日から日付を生成します。 | DateSerial(2024, 3, 20) | 2024-03-20 |
DateValue | 日付の文字列を日付型に変換します。 | DateValue("March 20, 2024") | 2024-03-20 |
Day | 指定した日付から「日」を抽出します。 | Day(#2024-03-20#) | 20 |
Month | 指定した日付から「月」を抽出します。 | Month(#2024-03-20#) | 3 |
Now | 現在の日付と時刻を返します。 | Now() | 2024-03-20 15:30:00 (例) |
Time | 現在の時刻を返します。 | Time() | 15:30:00 (例) |
Timer | 午前0時からの経過秒数を返します。 | Timer() | 55800 (例) |
TimeSerial | 指定した時、分、秒から時刻を生成します。 | TimeSerial(15, 30, 0) | 15:30:00 |
TimeValue | 時刻の文字列を時刻型に変換します。 | TimeValue("15:30:00") | 15:30:00 |
Weekday | 指定した日付の曜日を返します。(1=日曜日) | Weekday(#2024-03-20#) | 4 (水曜日) |
Year | 指定した日付から「年」を抽出します。 | Year(#2024-03-20#) | 2024 |
<配列>
配列を操作する関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
Array | 値のリストから配列を作成します。 | Array("apple", "banana", "cherry") | {"apple", "banana", "cherry"} |
LBound | 配列の最小インデックスを返します。 | LBound(Array("apple", "banana", "cherry")) | 0 |
UBound | 配列の最大インデックスを返します。 | UBound(Array("apple", "banana", "cherry")) | 2 |
Filter | 配列内の要素から特定の文字列を含むものを抽出します。 | Filter(Array("apple", "banana", "cherry"), "a") | {"apple", "banana"} |
Join | 配列の要素を指定した区切り文字で結合して文字列を作成します。 | Join(Array("apple", "banana", "cherry"), ", ") | "apple, banana, cherry" |
Split | 文字列を指定した区切り文字で分割して配列を作成します。 | Split("apple, banana, cherry", ", ") | {"apple", "banana", "cherry"} |
<ファイルとディレクトリ>
ファイルを操作する関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
Dir | パターンに一致する最初のファイル名を返します。複数ある場合は、Dir関数を繰り返し呼び出して次のファイルを取得します。 | Dir("C:\*.txt") | "example.txt" |
EOF | ファイルの終端に達しているかどうかを示します。 | Open "C:\example.txt" For Input As #1 EOF(1) | False |
FileLen | 指定されたファイルのサイズ(バイト数)を返します。 | FileLen("C:\example.txt") | 1024 |
FreeFile | 使用できるファイル番号を返します。これにより、Openステートメントでファイルを開く際に使用するファイル番号の衝突を避けることができます。 | FreeFile() | 1 |
GetAttr | 指定したファイルまたはディレクトリの属性を返します。 | GetAttr("C:\example.txt") | vbNormal |
Kill | 指定したファイルを削除します。 | Kill("C:\example.txt") | |
MkDir | 新しいディレクトリを作成します。 | MkDir("C:\NewFolder") | |
RmDir | ディレクトリを削除します。 | RmDir("C:\NewFolder") |
<型変換>
型を変換する関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
CBool | 式をブール型(True または False)に変換します。 | CBool(0) | False |
CByte | 式をバイト型に変換します。 | CByte(123) | 123 |
CCur | 式を通貨型に変換します。 | CCur(123.456) | 123.456 |
CDate | 式を日付型に変換します。 | CDate("2024-03-20") | 2024-03-20 |
CDbl | 式を倍精度浮動小数点数に変換します。 | CDbl(123.456) | 123.456 |
CDec | 式を10進数に変換します。 | CDec(123.456) | 123.456 |
CInt | 式を整数型に変換します。 | CInt(123.456) | 123 |
CLng | 式を長整数型に変換します。 | CLng(123.456) | 123 |
CSng | 式を単精度浮動小数点数に変換します。 | CSng(123.456) | 123.456 |
CStr | 式を文字列型に変換します。 | CStr(123) | "123" |
CVar | 式をバリアント型(任意の型)に変換します。 | CVar("123.456") | 123.456 |
<条件分岐と決定>
条件分岐に関する関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
IIf | 指定した条件がTrueかFalseかに基づいて、2つの値のいずれかを返します。 | IIf(True, "Trueの場合", "Falseの場合") | "Trueの場合" |
Choose | 指定したインデックスに応じて、リストから値を選択します。 | Choose(2, "一番目", "二番目", "三番目") | "二番目" |
Switch | 複数の条件を評価し、最初にTrueと評価される条件に対応する値を返します。 | Switch(1=2, "一番目", 2=2, "二番目", True, "それ以外") | "二番目" |
IIf
関数は、単純な条件式に基づいて一方の値または他方の値を選択する際に便利です。Choose
関数は、インデックス(通常は数値)に基づいて値を選択する場合に使用されます。例えば、ユーザーの選択や一連のオプションからの選択を処理する際に役立ちます。Switch
関数は、複数の条件を同時に評価し、最初にTrueとなる条件に対応する値を返す場合に使用します。これにより、複数のIf-Then-ElseIfステートメントを簡潔に表現できます
<その他の便利関数>
その他の便利な関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
Environ | 環境変数の値を返します。 | Environ("PATH") | システムのPATH環境変数の値 |
IsArray | 指定した変数が配列かどうかを判定します。 | IsArray(Array("apple", "banana")) | True |
IsDate | 指定した式が日付として認識できるかを判定します。 | IsDate("2024-03-20") | True |
IsEmpty | 指定した変数が初期化されていないかを判定します。 | IsEmpty(a) | True (aが未初期化の場合) |
IsNull | 指定した式がNull値かどうかを判定します。 | IsNull(Nothing) | True |
IsNumeric | 指定した式が数値として評価できるかを判定します。 | IsNumeric("123.45") | True |
IsObject | 指定した変数がオブジェクトかどうかを判定します。 | IsObject(CreateObject("Scripting.FileSystemObject")) | True |
TypeName | 指定した変数のデータ型名を返します。 | TypeName(123) | "Integer" |
VarType | 指定した変数のバリアント型を示す数値を返します。 | VarType(123) | 2 (整数型) |
これらの関数を活用することで、プログラムの実行時にデータの型や状態を検証し、より堅牢なコードを書くことができます。例えば、ユーザー入力の検証、プログラム内での条件分岐の決定、変数の型に応じた処理の分岐などに役立ちます。
<ユーザーインターフェース>
「MsgBox」や「InputBox」といった、ユーザーと対話するための基本的な関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
MsgBox | ダイアログボックスを表示し、ユーザーからの応答を得ます。 | MsgBox("Hello World!", vbInformation, "Title") | “Hello World!”というメッセージと情報アイコン、”Title”というタイトルのダイアログボックスが表示されます。 |
InputBox | ユーザーにテキスト入力を求めるダイアログボックスを表示します。 | InputBox("あなたの名前は何ですか?", "名前の入力") | “あなたの名前は何ですか?”と尋ねるダイアログボックスが表示され、ユーザーはテキストボックスに回答を入力できます。 |
これらの関数は、ユーザーから直接情報を取得したり、プログラムの実行状態について通知したりする際に非常に便利です。
<エラーハンドリング>
エラーハンドリングに関する関数一覧です
名前 | 説明 | サンプルコード | 結果 |
---|---|---|---|
Err.Number | 最後に発生したエラーの番号を返します。 | Err.Number | エラーコード(例: 9) |
Err.Description | 最後に発生したエラーの説明を返します。 | Err.Description | エラーの説明(例: “Subscript out of range”) |
Err.Clear | Err オブジェクトをクリアします。 | Err.Clear |
エラーハンドリングの基本的な使い方は、以下の通りです:
On Error GoTo ErrorHandler
' ここに通常の処理を記述
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description
Err.Clear
On Error GoTo
ステートメントを使用してエラーが発生した場合のジャンプ先を指定し、エラー情報をErr
オブジェクトから取得して適切に処理します
104の実践例(カテゴリ別)
ここからはカテゴリ別に実践例を紹介します
知りたい情報へは、目次から素早くアクセスできます
<日付 / 時刻>
日付や時刻を操作するVBA関数は、日報作成やスケジュール管理など、ビジネスアプリケーション開発において非常に重要です
実務での使用例、コードスニペット、および簡単な解説を提供します
現在のシステム日付
Date
関数は、システムの現在日付を取得します
報告書やログファイルに日付を記録する場合に便利です
Dim today As Date
today = Date
MsgBox "今日の日付は " & today & " です。"
現在のシステム時刻
Time
関数は、現在の時刻を文字列形式で返します
タイムスタンプの記録や時間に基づく処理の実行に使用されます
Dim currentTime As String
currentTime = Time
MsgBox "現在の時刻は " & currentTime & " です。"
現在の日付と時刻
Now
関数は、現在の日付と時刻を返します
ログ記録やタイムスタンプの作成に非常に便利です
Dim currentDateTime As String
currentDateTime = Now
MsgBox "現在の日付と時刻は " & currentDateTime & " です。"
日付に指定された期間を加算
DateAdd
関数は、指定された日付に日数、月数、年数などを加算した新しい日付を返します
期限日の計算やスケジュール調整に役立ちます
Dim futureDate As Date
futureDate = DateAdd("d", 10, Date) ' 今日から10日後
MsgBox "10日後の日付は " & futureDate & " です。"
二つの日付の差を計算
DateDiff
関数は、2つの日付の間の差(日数、月数、年数など)を計算します
プロジェクトの期間計算や経過日数の計測に便利です
Dim startDate As Date
Dim endDate As Date
Dim dayCount As Long
startDate = #1/1/2024#
endDate = #1/31/2024#
dayCount = DateDiff("d", startDate, endDate)
MsgBox "期間内の日数: " & dayCount
日付から月を取得
Month
関数は
指定した日付から月を整数で返します
月ごとの報告書作成などに使用されます
Dim thisMonth As Integer
thisMonth = Month(Now)
MsgBox "現在は " & thisMonth & " 月です。"
日付から年を取得
Year
関数は
指定された日付の年を返します。年次報告書の作成などに役立ちます
Dim thisYear As Integer
thisYear = Year(Now)
MsgBox "現在の年は " & thisYear & " です。"
日付から日を取得
Day
関数は
指定された日付から日を返します
日ごとのデータ集計やログ記録に便利です
Dim today As Integer
today = Day(Date)
MsgBox "今日は " & today & " 日です。"
日付から曜日を取得
Weekday
関数は
指定された日付の曜日を数字で返します(例: 日曜日=1)
スケジュール管理や曜日に基づいた条件分岐に使用されます
Dim dayOfWeek As Integer
dayOfWeek = Weekday(Now)
MsgBox "今日の曜日番号は " & dayOfWeek & " です。"
年、月、日から日付を作成
DateSerial
関数は
年、月、日を指定して新しい日付を作成します
特定の日付を基準にした処理や計算に便利です
Dim specificDate As Date
specificDate = DateSerial(2024, 1, 1)
MsgBox "指定した日付は " & specificDate & " です。"
<文字列操作>
文字列操作は、データの整形や検証、ログの生成など、あらゆるプログラムにおいて基本的かつ不可欠な処理の一つです。
文字列を効率的に扱うためのVBA関数を10個選び、それぞれについて具体的な使用例、コード、そして簡単な解説を提供します。
文字列の長さ
Len
関数は
指定された文字列の文字数を整数で返します
文字列の検証や処理の際に長さを知ることが必要な場合に使用します
Dim length As Integer
length = Len("Hello World")
MsgBox "文字列の長さは " & length & " 文字です。"
一部を抽出
Mid
関数は
指定された位置から指定された数の文字を文字列から抽出します
特定のパターンを持つ文字列から特定の部分を取り出す際に便利です
Dim partOfString As String
partOfString = Mid("Hello World", 7, 5)
MsgBox "抽出した文字列は '" & partOfString & "' です。"
文字を置換
Replace
関数は
文字列内の指定された文字列を別の文字列に置換します
データの整形や修正に使用されます
Dim replacedString As String
replacedString = Replace("I love VBA", "love", "like")
MsgBox "置換後の文字列は '" & replacedString & "' です。"
前後の空白を削除
Trim
関数は
文字列の先頭と末尾の空白文字を削除します
入力値の前後に不要な空白がある場合に有効です
Dim trimmedString As String
trimmedString = Trim(" Hello World ")
MsgBox "'" & trimmedString & "'"
左側から指定された数の文字を取得
Left
関数は
文字列の左側から指定された文字数分の文字列を返します
特定のフォーマットから必要な情報を切り出す場合に役立ちます
Dim leftPart As String
leftPart = Left("Hello World", 5)
MsgBox "左側の文字列は '" & leftPart & "' です。"
右側から指定された数の文字を取得
Right
関数は
文字列の右側から指定された文字数分の文字列を返します
ファイル名の拡張子を取得する場合などに使用されます
Dim rightPart As String
rightPart = Right("Hello World", 5)
MsgBox "右側の文字列は '" & rightPart & "' です。"
大文字に変換
UCase
関数は
指定された文字列内のすべての小文字を大文字に変換します
一貫した文字列の処理や比較を行う際に役立ちます
Dim upperCaseString As String
upperCaseString = UCase("Hello World")
MsgBox "大文字に変換: '" & upperCaseString & "'"
小文字に変換
LCase
関数は
指定された文字列内のすべての大文字を小文字に変換します
大文字・小文字を問わない検索や比較に使用されます
Dim lowerCaseString As String
lowerCaseString = LCase("Hello World")
MsgBox "小文字に変換: '" & lowerCaseString & "'"
文字列の変換(例: 全角⇔半角)
StrConv
関数は
文字列の大文字・小文字変換、全角・半角変換など、さまざまな形式の変換をサポートします
国際化されたアプリケーションで特に役立ちます
Dim convertedString As String
convertedString = StrConv("アイウエオ", vbHiragana)
MsgBox "変換後の文字列: '" & convertedString & "'"
一つの文字列が別の文字列に含まれる位置を検索
InStr
関数は
指定された文字列が別の文字列内に最初に現れる位置を返します
文字列内の特定のパターンやキーワードの存在チェックに有効です
Dim position As Integer
position = InStr("Hello World", "World")
If position > 0 Then
MsgBox "'World' は位置 " & position & " に見つかりました。"
Else
MsgBox "'World' は見つかりませんでした。"
End If
<データ型操作>
データ型操作関連の関数は、VBAにおけるプログラムの柔軟性と信頼性を高めるために不可欠です
異なるデータ型間での変換や特定のデータ型の操作を可能にするこれらの関数を通じて、エラーの可能性を減らし、プログラムの効率を向上させることができます
それぞれについて具体的な使用例、コードスニペット、そして簡単な解説を提供します
整数型に変換
CInt
関数は
数値を整数に丸めて変換します
小数点以下は四捨五入されます
数値の加工やパラメータの型指定に使用されます
Dim number As Integer
number = CInt(10.75)
MsgBox "整数に変換された値: " & number
倍精度浮動小数点数に変換
CDbl
関数は
文字列や数値を倍精度浮動小数点数に変換します
計算精度を必要とする場合に便利です
Dim doubleNumber As Double
doubleNumber = CDbl("123.456")
MsgBox "倍精度浮動小数点数に変換された値: " & doubleNumber
文字列に変換
CStr
関数は
数値や日付を文字列に変換します
数値や日付をテキストとして扱う場合に使用されます
Dim text As String
text = CStr(100)
MsgBox "文字列に変換された値: '" & text & "'"
日付に変換
CDate
関数は
文字列を日付型に変換します
日付としての妥当性が必要な場合に役立ちます
Dim dateValue As Date
dateValue = CDate("January 1, 2024")
MsgBox "日付に変換された値: " & dateValue
長整数型に変換
CLng
関数は
数値を長整数に変換します
より大きな整数値を扱う必要がある場合に使用されます
Dim longNumber As Long
longNumber = CLng(123456789)
MsgBox "長整数に変換された値: " & longNumber
単精度浮動小数点数に変換
CSng
関数は
数値を単精度浮動小数点数に変換します
メモリ使用量を節約するための計算に適しています
Dim singleNumber As Single
singleNumber = CSng(123.456)
MsgBox "単精度浮動小数点数に変換された値: " & singleNumber
式を論理値に変換
CBool
関数は
数値をTrueまたはFalseの論理値に変換します
条件式の結果を扱う際に用いられます
Dim logicValue As Boolean
logicValue = CBool(1)
MsgBox "論理値に変換された値: " & logicValue
バリアント型に変換
CVar
関数は
任意のデータ型をバリアント型に変換します
バリアント型はあらゆる種類のデータを格納できる柔軟性を持ちます
Dim variantValue As Variant
variantValue = CVar("任意の値")
MsgBox "バリアント型に変換された値: " & variantValue
バイト型に変換
CByte
関数は
数値をバイト型に変換します
0から255までの範囲の整数値を扱う際に使用されます
Dim byteValue As Byte
byteValue = CByte(255)
MsgBox "バイト型に変換された値: " & byteValue
通貨型に変換
CCur
関数は
数値を通貨型に変換します
金融データの処理において、高い精度を要求される場合に有効です
Dim currencyValue As Currency
currencyValue = CCur(123.456)
MsgBox "通貨型に変換された値: " & currencyValue
<乱数や配列>
乱数や配列を扱う関数は、データのサンプリング、テストデータの生成、データの格納や操作など、多岐にわたる用途で活用されます
VBAで乱数を生成したり、配列を効率的に扱ったりするための主要な関数を10個紹介します
それぞれに具体的な使用例、コードスニペット、そして簡単な解説を提供します。
乱数を生成
Rnd
関数は
0以上1未満のランダムなSingle型の値を返します
Randomize
ステートメントと組み合わせて使うことで、毎回異なる乱数を生成できます
Randomize ' 乱数ジェネレータを初期化
Dim randomNumber As Single
randomNumber = Rnd ' 0以上1未満の乱数を生成
MsgBox "生成された乱数: " & randomNumber
乱数ジェネレータのシード値を設定
Randomize
ステートメントは
乱数ジェネレータのシード値を設定します
シード値にはTimer
関数を使うことが多く
プログラムの実行ごとに異なる乱数シーケンスが得られます
Randomize Timer ' 現在時刻をシード値として使用
配列を作成
Array
関数は
引数に指定した値から配列を作成します
作成された配列はVariant型であり、異なるデータ型の値を含むことができます
Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
MsgBox "配列の第1要素: " & myArray(0)
配列の最大インデックスを返す
UBound
関数は
指定された配列の最大インデックス(要素数-1)を返します
配列のサイズを知ることができるため、配列をループ処理する際に有用です
Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
MsgBox "配列の最大インデックス: " & UBound(myArray)
配列の最小インデックスを返す
LBound
関数は
指定された配列の最小インデックスを返します
VBAでは配列のインデックスが通常0から始まるため
この関数の戻り値はほとんどの場合0ですが
Option Base 1
を使用している場合や
動的配列を特定のインデックスから始めた場合に便利です
Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
MsgBox "配列の最小インデックス: " & LBound(myArray)
配列のサイズを変更
ReDim
ステートメントは
動的配列のサイズを変更します
Preserve
キーワードを使うことで
既存の配列データを保持したままサイズ変更が可能です
Dim myArray() As Integer
ReDim myArray(5)
ReDim Preserve myArray(10) ' Preserveキーワードで元のデータを保持しつつサイズ変更
MsgBox "配列の新しいサイズ: " & UBound(myArray) + 1
文字列を区切り文字で分割して配列に格納
Split
関数は
第一引数に指定された文字列を第二引数に指定された区切り文字で分割し
結果を配列として返します
文字列データを配列に変換する際に役立ちます
Dim myArray() As String
myArray = Split("Apple,Banana,Cherry", ",")
MsgBox "配列の第2要素: " & myArray(1)
配列の要素を結合して文字列にする
Join
関数は
配列の要素を指定された区切り文字で結合し、1つの文字列として返します
配列のデータを文字列で表現したい場合に使用されます
Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
Dim myString As String
myString = Join(myArray, ", ")
MsgBox "結合された文字列: " & myString
配列かどうかを判定
IsArray
関数は
指定された式が配列であるかどうかを判定します
変数の型を確認する際に役立ちます
Dim myArray As Variant
myArray = Array("Apple", "Banana", "Cherry")
If IsArray(myArray) Then
MsgBox "変数は配列です。"
Else
MsgBox "変数は配列ではありません。"
End If
要素を初期化
Erase
ステートメントは
指定された配列の要素を全て初期化します
動的配列の場合、サイズも0になります
配列をリセットしたい時に使用します
Dim myArray() As Integer
ReDim myArray(5)
Erase myArray ' 配列の要素を全て初期化
<ファイル操作>
ファイル操作は、データの保存、読み込み、管理などを自動化する上で重要な役割を果たします
ファイルやフォルダに対するさまざまな操作を行う関数やステートメントが用意されています
VBAで利用できるファイル操作関連の主要な機能を10個選び、それぞれについて具体例と共に紹介します
ファイルを開く
Open
ステートメントは
ファイルを開くために使用され
For Input
は
ファイルからの読み取り専用を意味します
#1
はファイル番号です。
Open "C:\test.txt" For Input As #1
' ファイル操作
Close #1
ファイルを閉じる
Close
ステートメントは
指定したファイル番号のファイルを閉じます
ファイル操作後は必ず閉じる必要があります
Close #1
ファイルにデータを書き込む
Print #
ステートメントは
開かれたファイルにデータを書き込みます
For Output
は
ファイルへの書き込み専用を意味します
Open "C:\test.txt" For Output As #1
Print #1, "Hello, World!"
Close #1
ファイルからデータを読み取る
Input$
関数は
開かれたファイルから指定された数の文字を読み取ります
LOF(1)
は
ファイル番号1の長さ(バイト数)を返します
Dim data As String
Open "C:\test.txt" For Input As #1
data = Input$(LOF(1), #1)
Close #1
MsgBox data
ファイルから一行読み取る
Line Input
ステートメントは
開かれたファイルから一行を読み取り、変数に格納します
Dim lineData As String
Open "C:\test.txt" For Input As #1
Line Input #1, lineData
Close #1
MsgBox lineData
ファイルの終端を判定
EOF
関数は
指定したファイル番号のファイルが終端に達したかどうかを判定します
ファイルの内容を最後まで読み取る際に使用します
Dim data As String
Open "C:\test.txt" For Input As #1
Do Until EOF(1)
Line Input #1, data
MsgBox data
Loop
Close #1
ファイルを削除
Kill
ステートメントは
指定したパスのファイルを削除します
ファイルのクリーンアップに使用されます
Kill "C:\test.txt"
ファイルやフォルダの一覧を取得
Dir
関数は
指定したパターンに一致するファイルやフォルダの名前を返します
ファイルやフォルダの一覧を取得する際に便利です
Dim fileName As String
fileName = Dir("C:\*.*")
Do While fileName <> ""
MsgBox fileName
fileName = Dir()
Loop
新しいフォルダを作成
MkDir
ステートメントは
指定したパスに新しいフォルダを作成します
フォルダが既に存在する場合はエラーが発生します
MkDir "C:\NewFolder"
カレントディレクトリを変更
ChDir
ステートメントは
プログラムのカレントディレクトリを変更します
ファイル操作のデフォルトの場所を変更するのに使用されます
ChDir "C:\NewFolder"
<エラー処理>
エラー処理は、プログラムが予期せぬエラーに遭遇したときに、それを適切に処理し、プログラムの安定性と信頼性を確保するために重要です
VBAでは、エラー処理を効率的に行うためのいくつかのステートメントが用意されています
エラー処理に関連する主要な機能を紹介し、それぞれについて具体的な使用例と簡単な解説を提供します
エラーハンドラへのジャンプ
On Error GoTo
ステートメントは
エラーが発生した場合に指定したラベル(エラーハンドラ)にジャンプします
エラー処理を集中して記述することができ、コードの可読性が向上します
On Error GoTo ErrorHandler
' ここに通常のコードを記述
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description
Resume Next
エラー番号の取得
Err.Number
プロパティは
発生したエラーの番号を返します
この番号を用いて、特定のエラーに対する対応を行うことができます
If Err.Number <> 0 Then
MsgBox "エラー番号: " & Err.Number
End If
エラーの説明を取得
Err.Description
プロパティは
発生したエラーの詳細な説明を返します
ユーザーにエラー情報を提供する際に有用です
MsgBox "エラーの説明: " & Err.Description
エラーオブジェクトをクリア
Err.Clear
メソッドは
エラーオブジェクトの現在の値をクリアします
エラー処理後にエラー情報をリセットする際に使用します
Err.Clear
次の行から処理を続行
On Error Resume Next
ステートメントは
エラーが発生しても次の行から処理を続けるように指示します
このモードではエラーが無視されるため
エラーが発生した後にErr.Number
をチェックして
適切に処理する必要があります
On Error Resume Next
' エラーが発生しうるコード
If Err.Number <> 0 Then
' エラー処理
End If
エラーハンドリングを無効
On Error GoTo 0
ステートメントは
On Error Resume Next
によるエラーハンドリングを無効にし
エラーが発生した場合にデフォルトのエラーハンドラを使用するように設定します
エラーハンドリングの範囲を制限することができます
On Error GoTo 0
<数学関係>
VBAには、数値計算をサポートする多くの数学関係の関数があります
金融分析、統計データの処理、エンジニアリング計算など、多岐にわたる用途で役立ちます
数学関連の主要なVBA関数をいくつかピックアップし、それぞれの具体的な使用例と解説を提供します
絶対値を返す
Abs
関数は
指定された数値の絶対値を返します
負の値を正の値に変換する際に使用されます
Dim result As Double
result = Abs(-10.5)
MsgBox "絶対値: " & result
平方根を計算
Sqr
関数は
指定された数値の平方根を返します
数学的な計算や統計分析においてよく使用されます
Dim result As Double
result = Sqr(16)
MsgBox "平方根: " & result
乱数を生成
Rnd
関数は
0 から 1 までのランダムなSingle型の値を返します
Randomize
ステートメントと組み合わせて
異なる乱数シーケンスを生成します
Randomize
Dim randomNumber As Single
randomNumber = Rnd
MsgBox "乱数: " & randomNumber
整数部分を返す(Int
)
Int
関数は
指定された実数の整数部分を返します
数値の切り捨てに使用されます
Dim result As Integer
result = Int(10.75)
MsgBox "整数部分: " & result
数値を丸める
Round
関数は
指定された精度で数値を丸めます
第二引数には小数点以下の桁数を指定します
金融計算など、特定の精度での数値処理に使用されます
Dim result As Double
result = Round(10.678, 2)
MsgBox "丸めた結果: " & result
自然対数を計算
Log
関数は
指定された数値の自然対数(底はe)を返します
科学計算や統計分析でよく使用されます
Dim result As Double
result = Log(10)
MsgBox "自然対数: " & result
三角関数を計算
Sin
, Cos
, Tan
関数は
それぞれ指定された角度(ラジアン単位)の正弦、余弦、正接を返します
物理学やエンジニアリングの問題を解く際に頻繁に使用されます
Dim angle As Double
angle = 3.14159265358979 / 4 ' 45度(ラジアンで指定)
MsgBox "Sin: " & Sin(angle)
MsgBox "Cos: " & Cos(angle)
MsgBox "Tan: " & Tan(angle)
自然対数の底eの指数関数を計算
Exp
関数は
e(自然対数の底)を指定された数値のべき乗にした結果を返します
指数関数の計算に使用されます
Dim result As Double
result = Exp(1)
MsgBox "eの1乗: " & result
整数部分を返す(Fix
)
Fix
関数もInt
関数と同様に
数値の整数部分を返しますが、負の数値に対する挙動が異なります
Fix
は数値を0に近づける方向で切り捨てます
Dim result As Integer
result = Fix(-10.75)
MsgBox "Fix結果: " & result
円周率πの値を返す
Pi
関数は
円周率πの値を返します
円や球の面積、体積の計算に必要な定数です
Dim piValue As Double
piValue = Application.Pi
MsgBox "Piの値: " & piValue
<オブジェクト操作>
VBAにおけるオブジェクト操作は、ExcelシートやWord文書、Outlookメールなど、Microsoft Officeアプリケーションの豊富なオブジェクトモデルにアクセスし、これらを制御するために不可欠です
オブジェクトを扱う際によく使用される操作やプロパティ、メソッドを紹介します
外部アプリケーションのオブジェクトを生成
CreateObject
関数は
指定されたプログラムIDを持つオブジェクト(例:Excelアプリケーション)を生成します
他のOfficeアプリケーションやCOMオブジェクトを操作する際に使用されます
Dim excelApp As Object
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = True
既存のオブジェクトにアクセス
GetObject
関数は
既に開かれているオブジェクトやファイルにアクセスするために使用されます
特定のファイルやアプリケーションのインスタンスとの連携に役立ちます
Dim existingWorkbook As Object
Set existingWorkbook = GetObject("C:\path\to\file.xlsx")
プロパティやメソッドにアクセス
With
ステートメントは
同一のオブジェクトに対する複数の操作をグループ化しコードの可読性を高めるために使用されます
With Worksheets("Sheet1")
.Cells(1, 1).Value = "Hello"
.Cells(1, 2).Value = "World"
End With
オブジェクト変数にオブジェクトを割り当て
Set
ステートメントは
オブジェクト変数にオブジェクトの参照を割り当てる際に使用されます
オブジェクト変数を通じてオブジェクトのプロパティやメソッドにアクセスできます
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Sheets("Sheet1")
オブジェクト変数の割り当てを解除
オブジェクト変数からオブジェクトの参照を解除するために
Nothing
キーワードを使用します
不要になったオブジェクトへの参照をクリアしメモリリソースの解放を助けます
Set sheet = Nothing
コレクションに新しいアイテムを追加
.Add
メソッドは
新しいシートをワークブックに追加するなどコレクションに新しいアイテムを追加する際に使用されます
Dim newSheet As Worksheet
Set newSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
オブジェクトを削除
.Delete
メソッドは
指定したオブジェクト(例えばワークシート)を削除します
不要なデータやオブジェクトの整理に役立ちます
ThisWorkbook.Sheets("Sheet2").Delete
現在アクティブなブックやシートにアクセス
ActiveWorkbook
やActiveSheet
プロパティを使用すると
現在アクティブなワークブックやシートに簡単にアクセスできます
ActiveWorkbook.Save
ActiveSheet.Cells(1, 1).Value = "Active Sheet"
セル範囲を指定
Range
オブジェクトやCells
メソッドを使用して
ワークシート上の特定のセルや範囲を指定し値の設定や書式設定を行うことができます
With Range("A1:B2")
.Value = "Test"
.Font.Bold = True
End With
Cells(1, 1).Value = "First Cell"
セル範囲内で値を検索
Find
メソッドは
指定した範囲内で特定の値を検索し見つかった場合はそのセルを返します
データ検索や情報抽出の際に使用されます
Dim foundCell As Range
Set foundCell = Sheets("Sheet1").Range("A1:A100").Find(What:="検索文字列")
If Not foundCell Is Nothing Then
MsgBox "見つかったセル: " & foundCell.Address
Else
MsgBox "文字列が見つかりませんでした。"
End If
<グラフィックと描画>
ExcelやWordなどのOfficeアプリケーション内でグラフィック要素(図形、チャートなど)を操作するための多くの関数やプロパティが用意されています
データの視覚化、報告書の美化、ユーザーインターフェースのカスタマイズなどが行えます
グラフィックと描画に関連する主要な操作をいくつか紹介します
図形を追加
AddShape
メソッドは
ワークシートに指定された形状(この例では四角形)を追加します
位置とサイズを指定して図形を作成し色を設定することができます
Dim shape As Object
Set shape = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10, 10, 100, 50)
shape.Fill.ForeColor.RGB = RGB(255, 0, 0)
チャートを作成する
ChartObjects.Add
メソッドは
ワークシートに新しいチャートを追加します
データソースを指定しチャートの種類を設定することができます
Dim chartObj As ChartObject
Set chartObj = ActiveSheet.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
chartObj.Chart.SetSourceData Source:=Range("A1:B10")
chartObj.Chart.ChartType = xlLine
セルの背景色を設定
Interior.Color
プロパティを使用して
セルの背景色を設定します
色はRGB値で指定します
Range("A1").Interior.Color = RGB(0, 255, 0)
セルの背景色やパターン(模様)を操るための詳細は こちら で紹介しています
セルの枠線を設定
Borders
プロパティを使用して
セル範囲の特定の枠線(この例では下辺)に対するスタイル、色、太さを設定します
With Range("A1:B2").Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Color = RGB(0, 0, 0)
.Weight = xlMedium
End With
テキストエフェクトを追加する
AddTextEffect
メソッドは
ワークシートに特殊効果が適用されたテキストを追加します
フォントの種類、サイズ、太字の有無などをカスタマイズできます
Dim textEffect As Shape
Set textEffect = ActiveSheet.Shapes.AddTextEffect(PresetTextEffect:=msoTextEffect1, Text:="Hello World", _
FontName:="Arial", FontSize:=24, FontBold:=msoTrue, FontItalic:=msoFalse, Left:=100, Top:=100)
画像を挿入する
AddPicture
メソッドは
指定したパスの画像をワークシートに挿入します
画像の位置やサイズを指定することができます
Dim picture As Shape
Set picture = ActiveSheet.Shapes.AddPicture("C:\path\to\image.jpg", _
LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=50, Top:=50, Width:=100, Height:=100)
<データベース操作>
VBAを使用してデータベース操作を行う機能は、データの抽出、更新、挿入などのデータベース管理タスクを自動化する上で非常に有用です
Microsoft Office製品と連携することで、ExcelやAccessなどのアプリケーションから直接SQLクエリを実行し、データベースを操作することが可能になります
データベース操作に関連するVBAの主要な機能を紹介します
データベースへの接続を開く
ADODB.Connection
オブジェクトは
データベースへの接続を管理します
Open
メソッドを使用して接続文字列を指定しデータベースへ接続します。
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\path\to\database.mdb"
データベースからデータを抽出
ADODB.Recordset
オブジェクトは
データベースから抽出したデータを保持します
Open
メソッドにSQLクエリと接続オブジェクトを指定してデータを抽出します
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM Table", conn, adOpenStatic, adLockReadOnly
SQLクエリを実行
Connection
オブジェクトのExecute
メソッドを使用して、SQLクエリ(INSERT、UPDATE、DELETEなど)を直接実行します
データの更新や管理タスクを自動化できます
conn.Execute "INSERT INTO Table (Field1, Field2) VALUES ('Value1', 'Value2')"
パラメータ化されたSQLクエリを実行
ADODB.Command
オブジェクトを使用して、パラメータ化されたSQLクエリを実行することで、SQLインジェクション攻撃などのセキュリティリスクを減らすことができます
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = conn
.CommandText = "INSERT INTO Table (Field1, Field2) VALUES (?, ?)"
.Parameters.Append .CreateParameter("param1", adVarChar, adParamInput, 50, "Value1")
.Parameters.Append .CreateParameter("param2", adVarChar, adParamInput, 50, "Value2")
.Execute
End With
トランザクションの管理
BeginTrans
, CommitTrans
, RollbackTrans
メソッドを使用して、複数の操作を1つのトランザクションとして管理します
エラーが発生した場合には、RollbackTrans
によって変更を元に戻すことができます
conn.BeginTrans
On Error GoTo RollbackTrans
conn.Execute "INSERT INTO Table1 (Field) VALUES ('Value')"
conn.Execute "INSERT INTO Table2 (Field) VALUES ('Value')"
conn.CommitTrans
Exit Sub
RollbackTrans:
conn.RollbackTrans
<イベント処理>
VBAでのイベント処理は、ユーザーからの入力や特定のアクションに応じてコードを実行するために重要です
Excel、Word、Accessなどのアプリケーションで発生するイベントを捕捉し、それに対応する処理を自動的に行うことができます
VBAにおけるイベント処理の主要な概念を紹介します。
ワークシートイベント
ワークシート内のセルが変更されたときに発生するChange
イベントを捕捉します
この例では、特定のセル(A1)が変更された場合にメッセージボックスを表示します。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
MsgBox "A1が変更されました。"
End If
End Sub
ワークブックイベント
ワークブックが開かれたときに発生するOpen
イベントを捕捉します
このコードはThisWorkbook
オブジェクトの中に配置することで、ワークブック開始時に自動的に実行されます
Private Sub Workbook_Open()
MsgBox "ワークブックが開かれました。"
End Sub
フォーム(UserForm)イベント
ユーザーフォーム上のコマンドボタンがクリックされたときに発生するClick
イベントを捕捉します
ユーザーのアクションに対する応答として、メッセージボックスを表示します。
Private Sub CommandButton1_Click()
MsgBox "ボタンがクリックされました。"
End Sub
コントロールイベント
ユーザーフォーム内のテキストボックスの内容が変更されたときに発生するChange
イベントを捕捉します
ユーザーによる入力の変更を検知して、特定の処理を実行することができます
Private Sub TextBox1_Change()
MsgBox "テキストボックスの内容が変更されました。"
End Sub
アプリケーションイベント
Excelアプリケーション全体で発生するイベント(この例ではワークブックが閉じられる前のイベント)を捕捉します
WithEvents
キーワードを使用してアプリケーションオブジェクトを宣言し、イベントを監視します
イベント処理の設定には、専用のセットアップサブルーチン(この例ではSetupApplicationEvent
)を用います
Private WithEvents App As Application
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
MsgBox "ワークブックが閉じられようとしています。"
End Sub
Sub SetupApplicationEvent()
Set App = Application
End Sub
<ユーザーインターフェイス>
VBAを使用してユーザーインターフェイス(UI)を操作する関数は、ユーザーの操作性を向上させ、インタラクティブなダイアログボックスやフォームを提供することで、ユーザーエクスペリエンスを豊かにします
UIを操作する際によく使用されるVBAの機能を紹介します
メッセージボックスを表示する
MsgBox
関数は、ユーザーに情報を提供するためのシンプルなダイアログボックスを表示します。表示するテキスト、アイコン、ボタンの種類をカスタマイズできます。
MsgBox "処理が完了しました。", vbInformation, "完了"
ユーザーからの入力を受け取る
InputBox
関数は、ユーザーからテキスト入力を受け取るためのダイアログボックスを表示します
入力された値を変数に格納して後続の処理で使用することができます。
Dim userName As String
userName = InputBox("あなたの名前を入力してください。", "名前の入力")
カスタムダイアログボックスを作成
UserForm
は、VBAでカスタムダイアログボックスを設計し、表示するために使用します
テキストボックス、ラベル、ボタンなどのコントロールを配置して、ユーザーインタラクションを実装できます
' UserFormとそのコントロールの設計が必要
UserForm1.Show
ファイル選択ダイアログを表示
Application.GetOpenFilename
メソッドは、ファイル選択ダイアログボックスを表示し、ユーザーが選択したファイルのパスを返します
特定のファイルタイプをフィルタリングすることができます
Dim selectedFile As String
selectedFile = Application.GetOpenFilename("Excelファイル, *.xlsx")
If selectedFile <> "False" Then
MsgBox "選択されたファイル: " & selectedFile
End If
保存ダイアログを表示
Application.GetSaveAsFilename
メソッドは、保存ダイアログボックスを表示し、ユーザーが指定した保存先のパスを返します
ファイルの保存処理をより柔軟に行うことができます
Dim savePath As String
savePath = Application.GetSaveAsFilename("document.xlsx", "Excelファイル, *.xlsx")
If savePath <> "False" Then
MsgBox "保存されるパス: " & savePath
End If
ファイルやフォルダを選択
FileDialog
オブジェクトを使用すると、ファイル選択、フォルダ選択、ファイルの保存など、さまざまな種類のファイルダイアログを表示できます
SelectedItems
コレクションを通じてユーザーが選択したアイテムにアクセスします
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then
MsgBox "選択されたフォルダ: " & fd.SelectedItems(1)
End If
<ドキュメント作成>
ドキュメントやレポート作成は、データ分析、経営報告、プロジェクト管理など多くのビジネスプロセスにおいて重要な役割を果たします
VBAを活用することで、Word文書やExcelレポートの自動生成、フォーマットの調整、データの挿入などが効率的に行えます
ドキュメントとレポート作成に関連するVBAの主要な機能を紹介します
新しいWord文書を作成
Documents.Add
メソッドは、新しいWord文書を開きます
Wordの自動化プロセスの一環として文書を生成できます
Dim doc As Word.Document
Set doc = Word.Application.Documents.Add
doc.Activate
新しいExcelワークブックを作成
Workbooks.Add
メソッドは、新しいExcelワークブックを開きます
Excelでのデータ分析やレポート作成を自動化する際に使用されます
Dim wb As Excel.Workbook
Set wb = Excel.Application.Workbooks.Add
wb.Activate
Excelにデータを挿入
Range.Value
プロパティを使用して、指定したセル範囲にデータを挿入します
Excelレポートのデータ入力を自動化する際に役立ちます
Dim ws As Excel.Worksheet
Set ws = wb.Sheets(1)
ws.Range("A1").Value = "レポートタイトル"
Wordにテキストを挿入
Selection.TypeText
メソッドは、Word文書の現在の選択範囲にテキストを挿入します
Word文書の作成や編集を自動化する際に使用されます
Word.Application.Selection.TypeText Text:="ここに文書の内容が入ります。"
Excelにチャートを挿入
Charts.Add
メソッドは、新しいチャートをワークブックに追加し、データ範囲とチャートタイプを設定します
データの視覚化を自動化する際に役立ちます
Dim chart As Excel.Chart
Set chart = wb.Charts.Add
With chart
.SetSourceData Source:=ws.Range("A1:B10")
.ChartType = xlColumnClustered
End With
Wordでメールマージを実行
MailMerge
オブジェクトを使用して、Wordのメールマージ機能を自動化します
テンプレート文書にExcelなどの外部データソースからデータを挿入し、一括で文書を生成できます
Dim mainDoc As Word.Document
Set mainDoc = Word.Application.Documents.Open("メールマージテンプレート.docx")
With mainDoc.MailMerge
.OpenDataSource Name:="データソース.xlsx"
.Destination = wdSendToNewDocument
.Execute
End With