OpenSaveDialogクラス for VBA

2002/08/14

<解説>
 OpenSaveDialogクラスは、DelphiユーザーがAccessやExcelでVBAを使用する際、DelphiのTOpen/SaveDialogとほぼ同一のプロパティ・メソッドで、開く/保存ダイアログを表示可能にします。
 このクラスは、Delphi6のDialogs.pasにあるTOpen/SaveDialogの中核部分をVBAに移植したものです。そのため、Delphiと同一のプロパティ・メソッド名を使用しており、ソースもなるべくDialogs.pasと同じようなコーディングになるように仕上げました。ぜひともソースを比較してみてください。

<使用環境>
 Access2000/Excel2000での動作を確認しています。これより下のバージョンでは動きません。ただ、動かない原因は、下位バージョンでサポートしていない文法を使っているためなので、その辺りを代替してやれば動くと思います。
 OSは、Windows95と2000で動作の確認をしました。2000以降のOSならば、Placeバーのある新ダイアログが表示されます。

<制限事項>
 言語の違いや作者の手抜きにより制限事項があります。

<インストール方法>
 一応書いておきます。

  1. ダウンロードしたファイルを解凍すると「OpenSaveDialog.cls」が作成されます。
  2. VBAエディタを起動します。
  3. メニューから「ファイル→ファイルのインポート」を選択します。
  4. 「OpenSaveDialog.cls」ファイルを選択してインポートします。
  5. プロジェクトのクラスモジュールにインポートされます。
 これで、クラスとしてどのモジュールからでも利用可能になります。

<コーディング例>
Private Sub ShowDialog()
 Dim OpenDlg As OpenSaveDialog
 Dim Msg As String
 Dim i As Integer

 Set OpenDlg = New OpenSaveDialog  'クラス作成

 With OpenDlg
  .DialogType = dtOpenDialog  'ここでダイアログの種類を指定
  .DefaultExt = "mdb"
  .Filter = "Microsoft Access データベース (*.mdb)|*.mdb|すべてのファイル (*.*)|*.*"
  .Options = .Options Or ofFileMustExist Or ofPathMustExist
  '↑ファイルを複数選択する場合は、ofAllowMultiSelect を加える

  If .Execute Then
   MsgBox .FileName

   '↓ファイルを複数選択した場合は、Filesから取り出す(動的配列)
   'For i = LBound(.Files) To UBound(.Files)
   ' Msg = Msg & .Files(i) & vbCrLf
   'Next i
  'MsgBox Msg
  End If

 End With
End Sub

  1. SetとNewでOpenSaveDialogクラスを作成します。
  2. DialogTypeプロパティで、開く・保存ダイアログの種類を決めます。指定しないとdtOpenDialogが設定されます。
  3. Optionsプロパティを指定します。ここは列挙型なので、指定したい要素をOrでつなぎます。また、要素から削除するにはXOrを使用します。なお、ある要素が含まれるか調べるために「InSetOf」関数を用意してあります。
  4. ダイアログの表示には、おなじみのExecuteメソッドを使用します。
  5. 実行された場合は、FileNameプロパティまたはFilesプロパティに値が返ってきます。

<プロパティとメソッド>
◇プロパティ
DefaultExt  As String               '拡張子を付けなかった場合のデフォルト拡張子
DialogType  As OpenSaveDialogType   'ダイアログの種類(Open/Save)
FileName    As String               '表示/選択されたファイル名
Files()     As String    '動的配列  '表示/選択された複数ファイル名
Filter      As String               '拡張子のフィルタ
FilterIndex As Integer              'デフォルトで表示するフィルタのインデックス
InitialDir  As String              'デフォルトで表示するフォルダ
Options     As OpenOptions          'ダイアログオプション
OptionsEx   As OpenOptionsEx        '拡張ダイアログオプション(Win2k/ME以降)
Title       As String               'ダイアログのタイトル
Tag         As Variant              'タグ

◇メソッド
Execute     As Boolean              'ダイアログの実行(成功: True キャンセル: False)

<ダウンロード>
OpenSaveDialogクラス for VBA






Copyright 2002 H'Imagine.
All rights reserved.