見出し画像

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 初版公開。


この記事が気に入ったらサポートをしてみませんか?