街中で見かけて「グッときた人」の思い出

現在Excel97で二つのテキストデータベース(固定長形式)を読み込み、解析を行おうとしています。
現在、べたに二つのファイルのパスをコードに書き込めばファイルの読み込みも上手くいくのですが、やはりここは出来るならばファイル指定を汎用のダイアログで行えるようにしたいと思いあれこれ方法を探しています。

そこで読み込みたい二つのファイルのパスを、VBで利用できるCommonDialogで取得出来るなら、一からファイル選択用フォームを作成しなくても済むので楽になると思いついたのですが、Excel97のVBAでの転用がうまくいかなくて企画倒れの状態になっています。

参照設定でComCtrl32.OCXを読み込めればと思い試験してみたもののうまくいかず、次の方法が見つからずに途方に暮れています。
もしかしてVBAではコモンダイアログは利用できないのでしょうか?

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/12/18 02:13

エクセル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
で取得できる。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/12/18 22:27

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


ファイルの種類も自由自在です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/12/18 22:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報