VBA:Excel :ブック
ブックを開く
'************************************* '// ブックを開く '// '************************************* Sub ブックを開く_パス指定() Dim wb As Workbook '戻りを使わないときには、引数をカッコで括らないというのがVBAの文法です。 '戻りを使うのならカッコで引数を括らなければならない。 Set wb = Workbooks.Open(Filename:="D:\_Prog\Excel_VBA\■01_ブック\Sample.xlsx") MsgBox wb.Name MsgBox wb.Path wb.Close End Sub
ブックを閉じる
'************************************* '// ブックを閉じる '// 上書き保存/保存しない '************************************* Sub mth_CloseBook() Call ブックを開く_パス指定 Dim wb As Workbook Set wb = Workbooks("Sample.xlsx") Dim ws As Worksheet Set ws = wb.Worksheets(1) ws.Range("A1").Value = "dd" Dim bSaveFlg As Boolean Dim res As VbMsgBoxResult res = MsgBox("上書き保存?", vbYesNo) If res = vbYes Then bSaveFlg = True Else bSaveFlg = False End If If bSaveFlg Then wb.Close SaveChanges:=True Else wb.Close SaveChanges:=False End If End Sub
ブック OPEN確認
[Excel作業をVBAで効率化]ブックが開かれているかチェックする
[Office TANAKA]ブックが開かれているかどうか調べる
[Office TANAKA]共有ブックを開いているユーザーを調べる
'******************************* '// Check book Opened '// ファイルOPEN確認 '******************************* Function mth_ChkBookOpen(ByVal sFile_fp As String) As Boolean On Error Resume Next Open sFile_fp For Append As #1 Close #1 If Err.Number > 0 Then mth_ChkBookOpen = True Else mth_ChkBookOpen = False End If End Function
ブック開く ダイアログ
'******************************* '// Open FileDialog '// ダイアログでファイルを開く '******************************* Sub mth_OpenFileDialog() Dim vFileName_fp As Variant '// GetOpenFilename : 「キャンセル」の戻り値は、bool型 vFileName_fp = Application.GetOpenFilename("Excel Book,*.xsl?") If VarType(vFileName_fp) = vbBoolean Then MsgBox "Cancel" Else Workbooks.Open vFileName_fp End If End Sub
他のブックのプロシージャ呼び出し
'**************************************** '// 他のブックのプロシージャ呼び出し '**************************************** Sub mth_他のブックのプロシージャ呼び出し() Dim sFile_fp As String sFile_fp = "D:\_Prog\Excel_VBA\■01_ブック\Sample_VBA.xlsm" Debug.Print Application.Run("'D:\_Prog\Excel_VBA\■01_ブック\Sample_VBA.xlsm'!Test", 2) Debug.Print Application.Run("'" & sFile_fp & "'" & "!Test", 2) End Sub
名前を付けて保存 (xlsm --> xlsx)
'**************************************** '// 名前を付けて保存(ダイアログ) '// xlsm --> xlsx '**************************************** Sub mth_SaveAs_xlsx() Dim strFileName As String strFileName = ThisWorkbook.Path & "\" _ & "SAMPLE_" & Format(Now, "yyyymmddhhmmssms") & ".xlsx" Dim FileName As Variant FileName = Application.GetSaveAsFilename( _ InitialFileName:=strFileName, _ FileFilter:="Excelファイル,*.xlsx" _ ) If FileName = False Then Exit Sub End If Application.DisplayAlerts = False '警告メッセージ非表示 ActiveWorkbook.SaveAs _ FileName:=FileName, _ FileFormat:=xlWorkbookDefault Application.DisplayAlerts = True '警告メッセージ非表示解除 End Sub '**************************************** '// 名前を付けて保存(自動) '// xlsm --> xlsx '**************************************** Sub mth_SaveAs_xlsx2() Dim strFileName As String strFileName = ThisWorkbook.Path & "\" _ & "SAMPLE_" & Format(Now, "yyyymmddhhmmssms") & ".xlsx" '名前を付けて保存(.xlsx) Application.DisplayAlerts = False '警告メッセージ非表示 ThisWorkbook.SaveAs FileName:=strFileName, FileFormat:=xlOpenXMLWorkbook Application.DisplayAlerts = True '警告メッセージ非表示解除 End Sub
Sub Sample() Dim strFileName As String strFileName = "D:\_Prog\Excel_VBA\■01_ブック\■01_ブック - コピー.xlsm" Dim strFileName_2 As String strFileName_2 = "D:\_Prog\Excel_VBA\■01_ブック\SAMPLE_20201110215605115_SSS.xlsx" If strFileName = "False" Then MsgBox "ファイル選択をキャンセルしました" Exit Sub End If Dim wb As Workbook Application.DisplayAlerts = False '警告メッセージ非表示 Application.EnableEvents = False '★マクロ起動 無効 Set wb = Workbooks.Open(strFileName) ActiveWindow.Visible = False wb.SaveAs FileName:=strFileName_2, FileFormat:=xlOpenXMLWorkbook wb.Close Application.EnableEvents = True '★ Application.DisplayAlerts = True '警告メッセージ非表示解除 End Sub