アプリケーションとしてのVBA Excel(エクセル) VBA の役立つ Tips の紹介

アプリケーションとしてのVBA

Fileを選択するオープンダイアログ/Bookを開く/CSVファイルを開く

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はパスを含んだファイル名を文字列で指定します。


    '.xls を開きます
    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 を使用することで、細かい設定をして読み込むことが出来ます。

  カンマ区切りのテキストファイルを開く を参照してください。

Copy (C) 2005   アプリケーションとしてのVBA   All Rights Reserved.