プログラミングのメモ

プログラミングの学び直し備忘録

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

リファレンス

docs.microsoft.com

docs.microsoft.com