ExcelVBA Microsoft

ワークブックの操作

ブックを単体で開く場合の処理

ブックを開く関数:Open

Workbooks.Open(ファイルのフルパス)

ファイル選択ダイアログの表示:GetOpenFilename

これはファイルのパスを文字列型で返す
キャンセルされた場合も文字型で"False"と返ってくる

path = Application.GetOpenFilename("Microsoft Excel ブック, *.xls?")

キャンセル対策+開いたブックをオブジェクト変数にセット

if not filepath = "False" then
Dim wb As Workbook: Set wb = Workbooks.Open(path)
end if

指定したブックをマクロ無効で開く

 Sub test()
   Dim fileName As String
   fileName = "C:\フルパス\マクロ無効で開きたいブック.xlsm"

   Application.EnableEvents = False
   Workbooks.Open fileName 
   Application.EnableEvents = True

 End Sub

開いたブックを閉じる

wb.Close

複数のブックを開く場合の処理

GetOpenFilenameの引数に「MultiSelect:=True」を追加
1ベースの一次元配列が返ってくる(キャンセル時はBoolean型のFalse)

arr_path = Application.GetOpenFilename("Microsoft Excel ブック, *.xls?", MultiSelect:=True)

IsArray()関数でキャンセルされてないか判定可能

if not IsArray(arr_path) then
	msgBox "キャンセルされました"
end if

複数のブックをループ処理する(ScreenUpdatingでチラツキ防止)

if IsArray(arr_path) then
	Application.ScreenUpdating = False

	for i = 1 to ubound(arr_path)
		set wb = Workbooks.Open(arr_path(i))
		'~処理~
		wb.Close
	next i

	Application.ScreenUpdating = True
end if

ショートカットの割当

Workbook_openイベントにこれを書く

Application.Onkey ”{F1}”, "プロシージャ名"

指定できるキーの一覧:公式ドキュメント

-ExcelVBA, Microsoft