• ベストアンサー

Excel97のVBAでコモンダイアログを使いたい

現在Excel97で二つのテキストデータベース(固定長形式)を読み込み、解析を行おうとしています。 現在、べたに二つのファイルのパスをコードに書き込めばファイルの読み込みも上手くいくのですが、やはりここは出来るならばファイル指定を汎用のダイアログで行えるようにしたいと思いあれこれ方法を探しています。 そこで読み込みたい二つのファイルのパスを、VBで利用できるCommonDialogで取得出来るなら、一からファイル選択用フォームを作成しなくても済むので楽になると思いついたのですが、Excel97のVBAでの転用がうまくいかなくて企画倒れの状態になっています。 参照設定でComCtrl32.OCXを読み込めればと思い試験してみたもののうまくいかず、次の方法が見つからずに途方に暮れています。 もしかしてVBAではコモンダイアログは利用できないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

少なくともExcel2000ではできました。 Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustrFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustrData As Long lpfnHook As Long lpTemplateName As String End Type Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Sub fdas() Dim sOpenFileName As OPENFILENAME sOpenFileName.lStructSize = Len(sOpenFileName) GetOpenFileName sOpenFileName End Sub

tokuse
質問者

お礼

早速の回答ありがとうございます! ComCtrl32.OCXでは間違いだらけなところを丁寧に回答頂きましたので、早速やってみました。 これです、これなんです。 comdlg32.dllならばExcel97でも利用できそうですありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

エクセル2000です。私の場合はコモンダイアログの表示が出来ました。 ただ僅かな環境の差で出来ないかも知れないので、成功を祈ります。 (1)メニューバーの余白で右クリック、ツールバーの一覧の中のコントロールツールボックスをクリックして「V」にする。 (2)ワークシートの画面で、ツール―マクロ-VBEをクリックして VBE画面にする。 (3)「槌とスパナ」のアイコンをクリックする。(「コントロールの選択」)のリストに出てくるコントロールの一覧の中から「Microsoft Common Dialog Control,version6.0」をクリック。 (4)ワークシート画面になり、その上にマウスポインタを持ってくると「+」型になるので、コントロールを貼り付ける要領で、右下方向にドラッグする。コモンダイアログのアイコンが出る。 (5)標準モジュールModule1に Sub test01() Worksheets("sheet1").CommonDialog1.ShowOpen End Sub を入れる。 (6)実行をクリック(またはF5)。 (7)ワークシートにファイルを「開く」のダイアログが現われる。 (8)あと、下記が使える。 Worksheets("sheet1").CommonDialog1.Filter=".xls" Worksheets("sheet1").CommonDialog1.Initdir="a:\" (9)選択ファイル名の取得 fn=Worksheets("sheet1").CommonDialog1.Filename で取得できる。

tokuse
質問者

お礼

無事利用できることを確認しました。 確かに環境次第では使えない事もあるかも知れませんが、こういうものの利用で大分開発作業は楽になりますよね。 大変参考になりました。

noname#102878
noname#102878
回答No.2

少なくともExcelであればわざわざActiveXコントロールやらAPIを使わなくても「Application.GetOpenFilename」で「ファイルを開く」ダイアログを使えますよ。 ファイルの種類も自由自在です。

tokuse
質問者

お礼

こんなに簡単にファイルパスが取得出来るんですね。 ありがとうございました!

関連するQ&A

  • コモンダイアログからExcelへ

    コモンダイアログから既存のExcelファイルを表示させたいのですが、わかりません。 コモンダイアログの「開く」を押すとフルパスが取得されるというのは理解できたのですが、実際にプログラムをどう書いていいのかわかりません。 ファイルのパスを使うとはどういうことでしょうか? またshell関数をどう使えばいいのでしょうか? 基本的な質問で申し訳ありませんが、よろしくお願いします。

  • Delphi5.0Pro の コモンダイアログについて

    Delphiでは、 OpenDialogなど、コモンダイアログがコンポーネントとして、利用できますが、 あのダイアログは、comdlg32.ocxに依存しているのでしょうか? VBにてcomdlg32.ocxを利用していたのですが、 comdlg32.ocxのバージョンの違いによる誤動作などに悩まされています。 Delphiでも、comdlg32.ocxに依存しているのであれば、 comdlg32.ocxのバージョンの違いによる誤動作は回避できないので、 その辺りのことが知りたいです。 よろしくお願いします。

  • コモンダイアログのファイルを開くについて

    Windowsのファイルを開くダイアログで、ファイルを開くダイアログから エクセルファイルを選択し、開くボタンを押したら、選択された エクセルファイルを開きたいのですが、ヘルプで参照したところコモンダイアログ があるのを知りました。 ダイアログを開くところまでは、できたのですが、次にエクセルファイルを選択 し、開くボタンを押したときのイベントってどうやってとればよいのかわかりません。 開くボタンを押時に、選択されているパスを取りたいのですが、それもどうやって 取ればよいのやら、、、(+_+) ご教示ねがえませんでしょうか? よろしくお願いいたします。

  • コモンダイアログの設定

    コモンダイアログを表示させると「読み取り専用ファイルとして開く」というチェックボックスがダイアログの下のほうに出ていますが、このチェックボックスを表示させないようにするにはどうすればいいのでしょうか? コモンダイアログはGetOpenFileName関数で表示させています。 また、APIを利用する上で参考になるサイトをご存知でしたら教えてください。

  • コモンダイアログの設定

    アプリのファイル保存の時にでてくるコモンダイアログですが、デフォルトだとマイドキュメントが押下された状態になっていますが、これをデスクトップに設定する方法はありますか?

  • コモンダイアログを表示したい

    Windows98/VisualBasic5.0を使用しています。 ファイル名を指定させるために、コモンダイアログを表示したいのですが方法がわかりません。 コントロールを貼り付ければよいのでしょうか? 初歩的な質問で申し訳ありませんが、よろしくお願いします。

  • VBAで「ファイルを開く」ダイアログボックスにパスは指定できますか?

    エクセルVBAでプログラミングをしています。 「ファイルを開く」ダイアログボックスを開くときに、パスを指定して開くことは可能でしょうか? ご存じの方、教えてください。 エクセルは、Excel2000、Excel98などを使用しています。

  • EXCELでのVBAでダイアログボックスの表示方法

    EXCELで簡単なVBAを作成しています。単純に特定のファイルを読み込み 書式設定を変更して印刷をかけるだけのものなのですが、 この変更したEXCELデータをフォルダやファイル名を使用者側で指定できるよう、ダイアログボックスを使用したいと思っていますが、 VBAの記述方法がわかりません。どうかよろしくご指導お願いします!

  • コモンダイアログコントローラー(VB6)

    お世話になります。 コモンダイアログコントローラーをつかって ファイルを保存・読み込みをしようと思ってます。 commonddialog1.showopen でファイルを開く commonddialog1.showsave でファイル名を付けて保存 というのは分かったのですが、どこを調べても 肝心の保存方法のサンプルすらありません。 ab = "今日は天気が良いです。" このabを保存する場合 commonddialog1.showsave の後にどのようなコードを記載すれば良いのでしょうか?

  • 組込ダイアログについて(エクセル)

    エクセルの組込ダイアログにパスのみを選定(ファイルを開くでファイルを開くのではなく目的にフォルダーを選定してそのフォルダーのパスを取得)するものってありますか? 皆さんは、どのように実現していますか? VBAに詳しい方教えてください。 宜しくお願い致します。

専門家に質問してみよう