あるファイルを開く処理がしたい。
アプリみたいにダイアログを開いて、ファイルを選びたい。
今回は上記のようなVBA処理を解説します。
Excelファイルを開く方法
Workbooks.Open (“ファイルパス”)
まずは基本的な操作で開いてみましょう。
Option Explicit
Sub test()
Workbooks.Open ("C:\Users\test\Desktop\test.xlsx")
End Sub
ファイルパスを書くだけですね。
ファイルパスの取得方法
ファイルパスを確認方法ですが、指定のファイルを選択し、『パスのコピー』という項目をクリックすればOKです!
VBAを実行しているブックから読み解く
Application.ThisWorkbook.Path
↑でVBA実行ブックのフォルダパスまで取れます。
Sub test()
Dim filepath As String
filepath = Application.ThisWorkbook.Path
MsgBox filepath & "\test.xlsx"
End Sub
同じフォルダ内にあるのであれば、あとは\ファイル名でOKですね。
開いているブックのフォルダパスの場合
Application.ActiveWorkbook.Path
使い方は上記と一緒です。
保存前のブックであれば空白になるよ!
ダイアログを使ってファイルを指定して開く方法
GetOpenFilenameメソッドを使います。
Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
項目 | 解説 |
---|---|
FileFilter | ファイルの種類を指定します。Excelであればxlsxとかです。 |
FilterIndex | ↑で指定したファイルの中でどれを規定値にするかを決められる。 |
Title | ダイアログのタイトル。規定値は”ファイルを開く”です。 |
ButtonText | Mac用の指定値です。 |
MultiSelect | ファイルの複数選択をOKとするかです。規定値はFalseです。 |
基本的にはFileFilterぐらいしか使わないです。
↓みたいに使います。
Application.GetOpenFilename(FileFilter:=”Excelファイル,*.xlsx”)
実際に使う際には省くことも多いです。
Sub test()
'ダイアログ開く
Dim filepath As String
filepath = Application.GetOpenFilename("Excel,*.xls*,CSV,*.csv")
If filepath <> "False" Then
Workbooks.Open (filepath)
Else
MsgBox "キャンセルします"
Exit Sub
End If
End Sub
:=は引数だから
なぜ=ではなくて、:=かというと引数だからです。
イメージ的には引数という名の変数に入れる際は:=を使うと思っておけばいいと思います。
指定したブックを変数に入れて使ってみる
指定したブックを変数に入れることもできます。
Sub test()
'ダイアログ開く
Dim filepath As String
Dim wb As Workbook
filepath = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xlsx")
If filepath <> "False" Then
Set wb = Workbooks.Open(filepath)
Else
MsgBox "キャンセルします"
Exit Sub
End If
wb.Sheets(1).Range("A1") = "開けたよ"
End Sub
Setを使うことを忘れないでください。
オブジェクト変数の場合はSetになります。
閉じる方法
開いたら閉じたくなります。
ブック名.Save
ブック名.Close
上記でOKですが、変更を保存しますかと出てくるのがうっとうしいです。
通知は切っておきましょう。
Application.DisplayAlerts = False
Application.DisplayAlerts = True
Sub test()
'ダイアログ開く
Dim filepath As String
Dim wb As Workbook
filepath = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xlsx")
If filepath <> "False" Then
Set wb = Workbooks.Open(filepath)
Else
MsgBox "キャンセルします"
Exit Sub
End If
wb.Sheets(1).Range("A1") = "開けたよ"
Application.DisplayAlerts = False
wb.Save
wb.Close
Application.DisplayAlerts = True
End Sub
保存したくないならSaveしなければOKです!
Audible (オーディブル) – 本を聴くAmazonのサービス
読んでくれてありがとう!
コメント