現在Excel97で二つのテキストデータベース(固定長形式)を読み込み、解析を行おうとしています。
現在、べたに二つのファイルのパスをコードに書き込めばファイルの読み込みも上手くいくのですが、やはりここは出来るならばファイル指定を汎用のダイアログで行えるようにしたいと思いあれこれ方法を探しています。
そこで読み込みたい二つのファイルのパスを、VBで利用できるCommonDialogで取得出来るなら、一からファイル選択用フォームを作成しなくても済むので楽になると思いついたのですが、Excel97のVBAでの転用がうまくいかなくて企画倒れの状態になっています。
参照設定でComCtrl32.OCXを読み込めればと思い試験してみたもののうまくいかず、次の方法が見つからずに途方に暮れています。
もしかしてVBAではコモンダイアログは利用できないのでしょうか?
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
早速の回答ありがとうございます!
ComCtrl32.OCXでは間違いだらけなところを丁寧に回答頂きましたので、早速やってみました。
これです、これなんです。
comdlg32.dllならばExcel97でも利用できそうですありがとうございました。
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
で取得できる。
無事利用できることを確認しました。
確かに環境次第では使えない事もあるかも知れませんが、こういうものの利用で大分開発作業は楽になりますよね。
大変参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAで開いている...
-
EXCEL VBAを使ったファイル解析...
-
遅延バインディングの回避方法
-
動かなくなってしまった古いVBA...
-
更新日が指定日以降のファイル取得
-
VBAの初心者でやりたいことがあ...
-
Filesearchオブジェクトを使用...
-
vbaサブフォルダーをワイルドカ...
-
VBAでのファイル名と更新日(作...
-
FileDialog オブジェクトでファ...
-
VBAでCSVファイルを読み込もう...
-
iniファイルへの追記について
-
vbsでのアスタリスクとファイル...
-
VB6でUTF-8ファイルの読取りを
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
エクセルvbaでdocuworksprinter...
-
Windows10でコマンドプロンプト...
-
カンマ区切りのCSVファイルから...
-
VBA フォルダの複数選択ができない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaサブフォルダーをワイルドカ...
-
動かなくなってしまった古いVBA...
-
vbs ブック共有を解除
-
サブフォルダ含むフォルダ内の...
-
ExcelVBA 文字コード変換
-
Accessのウインドウサイズの固定
-
FileDialog オブジェクトでファ...
-
「エクセルファイルが開いてい...
-
vbsでのアスタリスクとファイル...
-
VB6でUTF-8ファイルの読取りを
-
ffftpでファイル取得が0バイト...
-
excel マクロ PDF化の際のエラ...
-
VBAでフォルダ内のhtmlファイル...
-
エクセルのVBAで開いている...
-
ファイルを開く時間測定のスク...
-
Long型で表現できないファイル...
-
複数のワークブックのVBAを変更...
-
VBからExcelファイルを開くとき...
-
【ACCESS VBA】アクセスからデ...
-
VBA、ファイル名検索から開く、...
おすすめ情報