Excel VBAでは、外部ライブラリを利用するために参照設定を行うことが必要です。適切なライブラリを参照設定することで、VBAの機能を拡張し、より高度なプログラムを作成することができます。主要なライブラリとおすすめの設定について説明します。
目次
- Excel VBAのおすすめのライブラリ
- 1. Microsoft Excel 〇.〇 Object Library
- 2. Microsoft Office 〇.〇 Object Library
- 3. Microsoft Forms 2.0 Object Library
- 4. Microsoft Scripting Runtime
- 5. Microsoft ActiveX Data Objects Library
- 有用なライブラリ
- 1. Microsoft Outlook 〇.〇 Object Library
- 2. Microsoft Word 〇.〇 Object Library
- おすすめの参照設定まとめ
- 参照設定のトラブルシューティング
Excel VBAのおすすめのライブラリ
1. Microsoft Excel 〇.〇 Object Library
- 概要
Excelの基本機能にアクセスするためのライブラリです。デフォルトで有効になっています。 - 用途
ワークシートの操作、セルの操作、グラフの作成など、Excelの基本機能を操作する際に必要です。
2. Microsoft Office 〇.〇 Object Library
- 概要
Officeアプリケーション全体の機能にアクセスするためのライブラリです。 - 用途
Excel以外のOfficeアプリケーション(Word、PowerPoint、Outlookなど)との連携や、共通のOffice機能を利用する際に必要です。
3. Microsoft Forms 2.0 Object Library
- 概要
フォームとコントロールの作成に使用されるライブラリです。 - 用途
ユーザーフォームを作成し、テキストボックス、コンボボックス、リストボックスなどのコントロールを利用する際に必要です。
4. Microsoft Scripting Runtime
- 概要
ファイルシステムオブジェクトを使用するためのライブラリです。 - 用途
ファイルやフォルダの操作、テキストファイルの読み書きなど、ファイルシステム関連の操作を行う際に必要です。
Sub EnableScriptingRuntime()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim file As Object
Set file = fso.CreateTextFile("C:\ExampleFolder\example.txt", True)
file.WriteLine "Hello, World!"
file.Close
End Sub
【コード解説】
■特定のフォルダに新しいテキストファイルを作成し、そのファイルにテキストを書き込むことを目的としています。
- Set fso = CreateObject("Scripting.FileSystemObject")は、fso変数に「Scripting.FileSystemObject」オブジェクトを割り当てています。このオブジェクトは、ファイルやフォルダを操作するための機能を提供します。
- Set file = fso.CreateTextFile("C:\ExampleFolder\example.txt", True)は、file変数に新しいテキストファイルを割り当てます。このファイルはC:\ExampleFolder\ディレクトリに「example.txt」という名前で作成されます。Trueパラメータは、ファイルが既に存在する場合にそれを上書きすることを示しています。
- file.WriteLine "Hello, World!"は、開かれたテキストファイルに「Hello, World!」というテキストを書き込みます。
- file.Closeは、ファイルを閉じます。これにより、書き込まれたデータが保存され、ファイルが正しく閉じられます。
【実行の環境条件】
このコードを実行する前に、C:\ExampleFolder\フォルダが存在している必要があります。
5. Microsoft ActiveX Data Objects Library
- 概要
データベース接続を行うためのライブラリです。 - 用途
Excelから外部データベース(Access、SQL Serverなど)に接続し、データの読み書きを行う際に必要です。
Sub ConnectToDatabase()
Dim conn As Object
Dim rs As Object
Dim connString As String
Dim query As String
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\ExampleFolder\example.accdb;"
query = "SELECT * FROM Table1"
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Open connString
rs.Open query, conn
Do Until rs.EOF
Debug.Print rs.Fields("FieldName").Value
rs.MoveNext
Loop
rs.Close
conn.Close
End Sub
【コード解説】
■Microsoft Accessデータベースに接続し、特定のテーブルから全てのデータを取得することを目的としています。
- connStringは、Microsoft Accessデータベースに接続するための文字列で、データベースファイルの場所を指定しています。
- queryは、データベース内の「Table1」というテーブルから全てのデータを選択するSQLクエリです。
- Set conn = CreateObject("ADODB.Connection")は、ADODBのConnectionオブジェクトを作成し、データベース接続のためのインスタンスを生成しています。
- Set rs = CreateObject("ADODB.Recordset")は、ADODBのRecordsetオブジェクトを作成し、データベースクエリの結果を扱うためのインスタンスを生成しています。
- conn.Open connStringは、指定された接続文字列を使ってデータベースに接続します。
- rs.Open query, connは、開かれた接続を通じてSQLクエリを実行し、結果をレコードセットに格納します。
- Do Until rs.EOFは、レコードセットの終わり(EOF: End Of File)に達するまでループを続けるという意味です。
- Debug.Print rs.Fields("FieldName").Valueは、現在のレコードの特定のフィールド(この場合は"FieldName")の値をデバッグウィンドウに出力します。
- rs.MoveNextは、レコードセット内の次のレコードに移動します。
- rs.Closeとconn.Closeは、それぞれレコードセットとデータベース接続を閉じます。これは、リソースを解放し、プログラムの安全な終了を保証するために重要です。
【実行の環境条件】
- Microsoft Accessデータベースファイルが存在し、適切なパスに配置されている必要があります。
- 実行するPCには、Microsoft.ACE.OLEDB.12.0プロバイダがインストールされている必要があります。
有用なライブラリ
1. Microsoft Outlook 〇.〇 Object Library
- 用途
ExcelからOutlookを操作し、メールの送信や受信メールの読み取りを行う際に使用します。
Sub SendEmail()
Dim OutlookApp As Object
Dim MailItem As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set MailItem = OutlookApp.CreateItem(0)
With MailItem
.To = "recipient@example.com"
.Subject = "Test Email"
.Body = "This is a test email sent from Excel VBA."
.Send
End With
End Sub
【コード解説】
Outlookアプリケーションを介して特定の受信者にテストメールを送信することを目的としています。
- Set OutlookApp = CreateObject("Outlook.Application")は、Outlookアプリケーションのインスタンスを作成します。
- Set MailItem = OutlookApp.CreateItem(0)は、新しいメールアイテムを作成します。ここでの0はolMailItem(メールアイテム)を示す定数です。
- With MailItemからEnd Withまでのブロックでは、メールアイテムのプロパティを設定し、メールを送信しています。
- .To = "recipient@example.com"は、メールの受信者のアドレスを設定します。
- .Subject = "Test Email"は、メールの件名を設定します。
- .Body = "This is a test email sent from Excel VBA."は、メールの本文を設定します。
- .Sendは、設定されたプロパティを用いてメールを送信します。
【実行の環境条件】
- 実行するPCにMicrosoft Outlookがインストールされており、正しく設定されている必要があります。
- Outlookが開かれていなくても、バックグラウンドでメールを送信することができますが、セキュリティの設定によっては、マクロからのメール送信を許可するための追加の許可が求められることがあります。
2. Microsoft Word 〇.〇 Object Library
- 用途
ExcelからWordを操作し、文書の作成や編集を行う際に使用します。
Sub CreateWordDocument()
Dim WordApp As Object
Dim WordDoc As Object
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Add
WordDoc.Content.Text = "Hello, World!"
WordDoc.SaveAs "C:\ExampleFolder\example.docx"
WordDoc.Close
WordApp.Quit
End Sub
【コード解説】
■Wordドキュメントを新規作成し、テキストを挿入して保存することを目的としています。
- Set WordApp = CreateObject("Word.Application")は、Wordアプリケーションのインスタンスを作成します。これにより、Wordが起動します。
- Set WordDoc = WordApp.Documents.Addは、新しいドキュメントを追加します。これにより、空のWordドキュメントが生成されます。
- WordDoc.Content.Text = "Hello, World!"は、ドキュメントの内容(Content)にテキスト「Hello, World!」を設定します。これにより、ドキュメントにそのテキストが挿入されます。
- WordDoc.SaveAs "C:\ExampleFolder\example.docx"は、指定されたパスにドキュメントを保存します。この例では、C:\ExampleFolder\ディレクトリにexample.docxとして保存されます。
- WordDoc.Closeは、開かれたドキュメントを閉じます。
- WordApp.Quitは、Wordアプリケーションを終了します。これにより、Wordが完全に閉じられ、リソースが解放されます。
【実行の環境条件】
- C:\ExampleFolder\というフォルダが存在していることを確認してください。
- Wordアプリケーションがインストールされている必要があります。
- スクリプト実行中にWordの可視性を設定していないため、Wordがバックグラウンドで動作しますが、WordApp.Visible = Trueをコードに追加することで、Wordが画面上で動作するのを確認できます。
おすすめの参照設定まとめ
Excel VBAでの開発を効率化するために、以下のライブラリを参照設定することをおすすめします。
Microsoft Excel 〇.〇 Object Library
Microsoft Office 〇.〇 Object Library
Microsoft Forms 2.0 Object Library
Microsoft Scripting Runtime
Microsoft ActiveX Data Objects Library
プロジェクトのニーズに応じて、OutlookやWordなどの特定のライブラリも追加で参照設定すると良いでしょう。
参照設定のトラブルシューティング
参照設定が開かない場合や設定が反映されない場合、以下の点を確認してください。【VBA】参照設定が開かない:原因と解決方法
- Excelの再起動
一度Excelを再起動してから再度試してみてください。 - VBAプロジェクトの実行を停止
実行中のコードがある場合は停止(Ctrl + Break)してください。 - Excelファイルの修復
ファイルが破損している可能性がある場合は、ファイルを修復してみてください。 - アドインの無効化
特定のアドインが干渉している可能性があります。使用していないアドインを無効にしてみてください。