AccessからExcelを操作すると便利なことがたくさん
Accessはすごくたくさんの機能がありますが、テーブルの構造を変更したり、格納されたデータを少し入れ替えたりする場合Excelを利用する方が融通が利く場合があります。
AccessのVBAを使用してExcelを操作できると色々な操作が自動化できるようになります。
今回はAccessのVBA でExcelを起動する方法と基本的なワークシートの操作についてご紹介します。
AccessからExcelを操作する手順
まず、CreateObject(“Excel.Application”)を用いて、Excelをオブジェクト型変数に格納しVBAで操作できるようにします。
その後はExcelVBAで使用するコードをほぼそのまま使用することができます。
プロパティを指定する際、Excelを格納した変数を頭に記入しないとExcelVBAの操作であることが認識されないので注意が必要です。
つい忘れがちになるので、Excelの操作ステップが多いならWithステートメントを使用してコードを省略した方がわかりやすくなります。
スポンサーリンク
Excelを操作するAccessVBAのサンプルコード
今回紹介するAccessVBAコードは①新しくExcelファイルを新規作成し、セルA1に「aaaa」と入力してデスクトップに保存するものと、②既存のExcelファイルを起動してセルA1に「aaaa」と入力して上書き保存するコードになります。
いずれの場合もExcelの操作の場合はWithステートメントを使用して、コードを理解しやすくしています。
①Excelファイルの新規作成と保存
Sub AccessVBAでExcelファイルの新規作成と保存()
Dim ExApp As Object
Set ExApp = CreateObject(“Excel.Application”)
ExApp.Visible = True
Dim DesktopPath As String, FilePath As String, WSH As Variant
Set WSH = CreateObject(“Wscript.Shell”)
DesktopPath = WSH.SpecialFolders(“Desktop”)
FilePath = DesktopPath & “\作成したExcelファイル.xlsx”
ExApp.Workbooks.Add
With ExApp.Workbooks(ExApp.Workbooks.Count)
.Sheets(1).Cells(1, 1) = “aaaaa”
.SaveAs FileName:=FilePath
.Close
End With
ExApp.Quit
Set ExApp = Nothing
Set WSH = Nothing
End Sub
Dim ExApp As Object
Set ExApp = CreateObject(“Excel.Application”)
ExApp.Visible = True
Dim DesktopPath As String, FilePath As String, WSH As Variant
Set WSH = CreateObject(“Wscript.Shell”)
DesktopPath = WSH.SpecialFolders(“Desktop”)
FilePath = DesktopPath & “\作成したExcelファイル.xlsx”
ExApp.Workbooks.Add
With ExApp.Workbooks(ExApp.Workbooks.Count)
.Sheets(1).Cells(1, 1) = “aaaaa”
.SaveAs FileName:=FilePath
.Close
End With
ExApp.Quit
Set ExApp = Nothing
Set WSH = Nothing
End Sub
②既存Excelファイルの起動と上書き保存
Sub Accessで既存のExcelファイル起動と編集()
Dim ExApp As Object
Set ExApp = CreateObject(“Excel.Application”)
ExApp.Visible = True
Dim DesktopPath As String, FilePath As String, WSH As Variant
Set WSH = CreateObject(“Wscript.Shell”)
DesktopPath = WSH.SpecialFolders(“Desktop”)
FilePath = DesktopPath & “\元Excelファイル.xlsx”
ExApp.Workbooks.Open FileName:=FilePath
With ExApp.Workbooks(ExApp.Workbooks.Count)
.Sheets(1).Cells(1, 1) = “aaaaa”
.Save
.Close
End With
ExApp.Quit
Set ExApp = Nothing
Set WSH = Nothing
End Sub
Dim ExApp As Object
Set ExApp = CreateObject(“Excel.Application”)
ExApp.Visible = True
Dim DesktopPath As String, FilePath As String, WSH As Variant
Set WSH = CreateObject(“Wscript.Shell”)
DesktopPath = WSH.SpecialFolders(“Desktop”)
FilePath = DesktopPath & “\元Excelファイル.xlsx”
ExApp.Workbooks.Open FileName:=FilePath
With ExApp.Workbooks(ExApp.Workbooks.Count)
.Sheets(1).Cells(1, 1) = “aaaaa”
.Save
.Close
End With
ExApp.Quit
Set ExApp = Nothing
Set WSH = Nothing
End Sub
コメント