ExcelサンプルVBAコードまとめ
環境
Microsoft 365
事前準備
一部でFSOを使用するため、以下の参照設定の"Microsoft Scripting Runtime"にチェックしてください。
Excelを開くVBA
ファイルを開きWorkBookオブジェクトを返却します。
Public Function OpenExcelFile(ByVal filePath As String, Optional ByVal isReadOnly As Boolean = True) As Workbook
' ファイル存在チェック
If Dir(filePath) = "" Then
MsgBox "指定されたファイルは存在しません。"
' 戻り値にfalse設定
OpenExcelFile = False
Exit Function
End If
' ファイルを開く
Set OpenExcelFile = Workbooks.Open(filePath, , isReadOnly)
End Function
第1引数 :ファイルパスを指定
第2引数(省略可能):True 読み取り専用で開く
False 書き込み可で開く
省略 読み取り専用で開く
ファイルパスをチェックするVBA
ファイル名込みのパスをディレクトリとファイル名に分け、ディレクトリが存在するかチェックします。
Public Function CheckFilePathAndName(fullPath As String) As Boolean
CheckFilePathAndName = True
Dim fso As New FileSystemObject
Dim folderPath As String
Dim fileName As String
' フルパスが空でないか確認
If fullPath = "" Then
MsgBox "パスが空です。"
CheckFilePathAndName = False
Exit Function
End If
' ディレクトリとファイル名に分ける
folderPath = fso.GetParentFolderName(fullPath)
fileName = fso.GetFileName(fullPath)
' ディレクトリが存在するかを確認
If Not fso.FolderExists(folderPath) Then
MsgBox "ディレクトリが存在しません:" & folderPath
CheckFilePathAndName = False
Exit Function
End If
End Function
第1引数 :ファイルパスを指定
ブックをPDF保存するVBA
ブックをPDFに保存するVBAです。対象はブック内のシート全てです。
ディレクトリのチェックとして上記のCheckFilePathAndName()を使用しています。
Public Sub SaveWorkbookAsPDF(wb As Workbook, Optional ByVal saveFilePath As String = "")
' PDFとして保存
If saveFilePath <> "" Then
' パス指定あり
If Not CheckFilePathAndName(saveFilePath) Then Exit Sub
Call wb.ExportAsFixedFormat(xlTypePDF, saveFilePath)
Else
'パス指定なし
Call wb.ExportAsFixedFormat(xlTypePDF)
End If
End Sub
第1引数 :WorkBookを指定。
第2引数(省略可能):ファイルパスを指定。指定しない場合はVBA実行ファイルと同じフォルダに出力される。
ブックを閉じるVBA
ブックを閉じます。第2引数で変更を破棄するか保存するかを選択できます。デフォルトは破棄します。
あえてプロシージャ化するまでもないですが、備忘録として残します。
Public Sub WorkBookClose(wb As Workbook, Optional saveChanges As Boolean = False)
wb.Close (saveChanges)
End Sub
余談
以下のお茶を常備しています。安いので。
更新履歴
2023/9/4 初版公開。
この記事が気に入ったらサポートをしてみませんか?