◆Fileを選択するオープンダイアログ / Bookを開く / CSVファイルを開く
VBA でアプリケーションを作成する場合、Excel のファイルを選択したり、
CSV ファイルを選択したりすることで汎用性を持たせることができます。
そのときに重要なユーザーインターフェースになるのがオープンダイアログです。
オープンダイアログを表示するには GetOpenFilename を使用します。
実際にファイルを開くわけではなく、ファイル名とパスを取得します。
GetOpenFilename(FileFilter, 省略, Title, 省略, 省略)
FileFilter: 選択するファイルを指定する文字列を記述します。
ファイルフィルタ文字列とワイルドカードのペアを
カンマで区切って記述します。
Title: オープンダイヤログのタイトルを記述します。
Sub OpenDialog()
Dim File種類, Prompt, Item As String
Dim FileNamePath As Variant
File種類 = "Excel ファイル (*.xls),*.xls"
Prompt = "out課題1.xlsを選択してください"
FileNamePath = SelectFileNamePath(File種類, Prompt)
If FileNamePath = False Then
End
End If
Workbooks.Open Filename:=FileNamePath
End Sub
Function SelectFileNamePath(File種類, Prompt) As Variant
SelectFileNamePath = Application.GetOpenFilename(File種類, ,Prompt)
End Function
FileNamePathには通常ファイル名とパスが入りますが、キャンセルボタンを
押した場合には、「False」が入ります。
前者は文字列型であり後者はブール型です。
したがって、変数の宣言は、データ型を指定しないバリアント型に
してあります。
ファイルを開くには、Workbooks.Open を使用します。
FileNamePathはパスを含んだファイル名を文字列で指定します。
Workbooks.Open Filename:=FileNamePath
拡張子が .csv のカンマ区切りのCSV ファイルは、Bookを開くのと同様に、
Workbooks.Open を使って開きます。
Sub OpenDialog()
Dim File種類, Prompt, Item As String
Dim FileNamePath As Variant
File種類 = "CSV ファイル (*.csv),*.csv"
Prompt = ".CSV ファイルを選択してください"
FileNamePath = SelectFileNamePath(File種類, Prompt)
If FileNamePath = False Then
End
End If
Workbooks.Open Filename:=FileNamePath
End Sub
example1 をダウンロードして、サンプルマクロを参照してください。
コメントを詳しく入れてあります。
CSV ファイルは、拡張子が .csv のカンマ区切りのファイルですが、
拡張子が .txt のカンマ区切りのテキストファイルの場合には、
OpenText を使用することで、細かい設定をして読み込むことが出来ます。
カンマ区切りのテキストファイルを開く を参照してください。