- ベストアンサー
Excel97のVBAでコモンダイアログを使いたい
現在Excel97で二つのテキストデータベース(固定長形式)を読み込み、解析を行おうとしています。 現在、べたに二つのファイルのパスをコードに書き込めばファイルの読み込みも上手くいくのですが、やはりここは出来るならばファイル指定を汎用のダイアログで行えるようにしたいと思いあれこれ方法を探しています。 そこで読み込みたい二つのファイルのパスを、VBで利用できるCommonDialogで取得出来るなら、一からファイル選択用フォームを作成しなくても済むので楽になると思いついたのですが、Excel97のVBAでの転用がうまくいかなくて企画倒れの状態になっています。 参照設定でComCtrl32.OCXを読み込めればと思い試験してみたもののうまくいかず、次の方法が見つからずに途方に暮れています。 もしかしてVBAではコモンダイアログは利用できないのでしょうか?
- tokuse
- お礼率100% (3/3)
- オフィス系ソフト
- 回答数3
- ありがとう数4
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
少なくとも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
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17068)
エクセル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 で取得できる。
お礼
無事利用できることを確認しました。 確かに環境次第では使えない事もあるかも知れませんが、こういうものの利用で大分開発作業は楽になりますよね。 大変参考になりました。
少なくともExcelであればわざわざActiveXコントロールやらAPIを使わなくても「Application.GetOpenFilename」で「ファイルを開く」ダイアログを使えますよ。 ファイルの種類も自由自在です。
お礼
こんなに簡単にファイルパスが取得出来るんですね。 ありがとうございました!
関連するQ&A
- コモンダイアログからExcelへ
コモンダイアログから既存のExcelファイルを表示させたいのですが、わかりません。 コモンダイアログの「開く」を押すとフルパスが取得されるというのは理解できたのですが、実際にプログラムをどう書いていいのかわかりません。 ファイルのパスを使うとはどういうことでしょうか? またshell関数をどう使えばいいのでしょうか? 基本的な質問で申し訳ありませんが、よろしくお願いします。
- ベストアンサー
- Visual Basic
- Delphi5.0Pro の コモンダイアログについて
Delphiでは、 OpenDialogなど、コモンダイアログがコンポーネントとして、利用できますが、 あのダイアログは、comdlg32.ocxに依存しているのでしょうか? VBにてcomdlg32.ocxを利用していたのですが、 comdlg32.ocxのバージョンの違いによる誤動作などに悩まされています。 Delphiでも、comdlg32.ocxに依存しているのであれば、 comdlg32.ocxのバージョンの違いによる誤動作は回避できないので、 その辺りのことが知りたいです。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- コモンダイアログのファイルを開くについて
Windowsのファイルを開くダイアログで、ファイルを開くダイアログから エクセルファイルを選択し、開くボタンを押したら、選択された エクセルファイルを開きたいのですが、ヘルプで参照したところコモンダイアログ があるのを知りました。 ダイアログを開くところまでは、できたのですが、次にエクセルファイルを選択 し、開くボタンを押したときのイベントってどうやってとればよいのかわかりません。 開くボタンを押時に、選択されているパスを取りたいのですが、それもどうやって 取ればよいのやら、、、(+_+) ご教示ねがえませんでしょうか? よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- コモンダイアログの設定
コモンダイアログを表示させると「読み取り専用ファイルとして開く」というチェックボックスがダイアログの下のほうに出ていますが、このチェックボックスを表示させないようにするにはどうすればいいのでしょうか? コモンダイアログはGetOpenFileName関数で表示させています。 また、APIを利用する上で参考になるサイトをご存知でしたら教えてください。
- ベストアンサー
- Visual Basic
- コモンダイアログの設定
アプリのファイル保存の時にでてくるコモンダイアログですが、デフォルトだとマイドキュメントが押下された状態になっていますが、これをデスクトップに設定する方法はありますか?
- ベストアンサー
- Windows XP
- コモンダイアログを表示したい
Windows98/VisualBasic5.0を使用しています。 ファイル名を指定させるために、コモンダイアログを表示したいのですが方法がわかりません。 コントロールを貼り付ければよいのでしょうか? 初歩的な質問で申し訳ありませんが、よろしくお願いします。
- ベストアンサー
- Visual Basic
- VBAで「ファイルを開く」ダイアログボックスにパスは指定できますか?
エクセルVBAでプログラミングをしています。 「ファイルを開く」ダイアログボックスを開くときに、パスを指定して開くことは可能でしょうか? ご存じの方、教えてください。 エクセルは、Excel2000、Excel98などを使用しています。
- 締切済み
- オフィス系ソフト
- EXCELでのVBAでダイアログボックスの表示方法
EXCELで簡単なVBAを作成しています。単純に特定のファイルを読み込み 書式設定を変更して印刷をかけるだけのものなのですが、 この変更したEXCELデータをフォルダやファイル名を使用者側で指定できるよう、ダイアログボックスを使用したいと思っていますが、 VBAの記述方法がわかりません。どうかよろしくご指導お願いします!
- ベストアンサー
- その他(プログラミング・開発)
- コモンダイアログコントローラー(VB6)
お世話になります。 コモンダイアログコントローラーをつかって ファイルを保存・読み込みをしようと思ってます。 commonddialog1.showopen でファイルを開く commonddialog1.showsave でファイル名を付けて保存 というのは分かったのですが、どこを調べても 肝心の保存方法のサンプルすらありません。 ab = "今日は天気が良いです。" このabを保存する場合 commonddialog1.showsave の後にどのようなコードを記載すれば良いのでしょうか?
- ベストアンサー
- Visual Basic
- 組込ダイアログについて(エクセル)
エクセルの組込ダイアログにパスのみを選定(ファイルを開くでファイルを開くのではなく目的にフォルダーを選定してそのフォルダーのパスを取得)するものってありますか? 皆さんは、どのように実現していますか? VBAに詳しい方教えてください。 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
お礼
早速の回答ありがとうございます! ComCtrl32.OCXでは間違いだらけなところを丁寧に回答頂きましたので、早速やってみました。 これです、これなんです。 comdlg32.dllならばExcel97でも利用できそうですありがとうございました。