
フォルダの参照ダイアログボックスを使用して
ファイルを選択できるようにしています。
プログラムでcsv形式で保存し、そのcsv形式ファイルを指定して開くという動作を目的としています。
そのファイル選択を固定でなく可変で選択したいと思っています。
Dim ShellApp As Object
Dim oFolder As Object
Set ShellApp = CreateObject("Shell.Application")
Set oFolder = ShellApp.BrowseForFolder(0, "ファイル選択", &H4000,"C:\test")
msgbox(oFolder)
このような感じで、フォルダのみではなくファイルを指定することに成功しました。
しかし、このフォルダ参照ダイアログが表示されたときに、何も選択せずに
キャンセルボタンをクリックするとエラーが出て止まってしまいます。
目的とする動作はできてはいるのですが、キャンセルするとエラーになるので、この原因がわからず困っています。
キャンセルボタンに関することを記述する必要があるのでしょうか?
また、この他にファイルを指定するのに適した方法がありましたら教えてください。
参照するフォルダを指定しているのでパスの取得は必要ありません。
ファイルが選択できたらOKです。
フォルダのパス取得のプログラムはよくサンプルを見かけるのですが、
ファイル選択のサンプルはあまり見かけないです(-_-;)
また、この方法ではC:\と絶対パスで指定していますが、exeファイルが存在する場所からの相対パスでの指定はできないのでしょうか?
csvで保存する時は"./test/test.csv"などと記述して書き込みできていたのですが、
このようなパスを書くとエラーとなりファイルを見つけられないといわれてしまいます。
No.1ベストアンサー
- 回答日時:
通常のWindowsアプリケーションはファイルを指定する時、「ファイルを開く」ダイアログなるダイアログをみんな出しています。
これで指定するのが自然です。フォルダを参照ダイアログはあくまでも「フォルダ」を指定するものなので。
さて。
ファイルを開くダイアログはどう出すかですが、
GetOpenFileName
というAPI関数を呼べば出せます。
簡単にここに書ければよいのですが、宣言が長くて見る気になれなそうなので参考URLを紹介するだけにしておきます。
下の方にサンプルがあるみたいなので(見てませんが)、ご参考になるかも。
VB6.0のつもりで書いてますが、VBAでもOKです。
.NETの場合は・・・はて?同じ?
そうそう。
あとは、コモンダイアログコントロールを使うって方法もありますが。これはVB6.0はOK。VBAはムリ。
参考URL:http://www.h5.dion.ne.jp/~p-s-s/vb/api/fileopen. …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Adobe Reader について
-
VBAでファイルパスが長すぎてコ...
-
SDカード(16GB)に保存した動画...
-
破損したファイルの復元方法
-
ASP.NETで、別サーバーへファイ...
-
Refreshで落ちる
-
BASP21のアップロードについて
-
複数のテキストファイルをexcel...
-
Excelでdatファイルを作成??
-
Excelでのデータ挿入が上手くで...
-
Eclipseについて教えてください。
-
イラストレーターの保存先変更...
-
CDをSDカードに保存する方法を...
-
カノンロックのTAB譜
-
カスタムコントロールのOCAファ...
-
テキストファイルを開かずに中...
-
FTPで、フォルダコピー
-
Sculptris Alpha 6
-
Matlabでの図の最大化の方法
-
複数のファイルを同時検索し、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Access エラー 3051
-
【Excel VBA】PDFを作成して,...
-
VBAでファイルパスが長すぎてコ...
-
FFFTPでサーバに新規フォルダが...
-
Refreshで落ちる
-
ExcelVBAで、隠しフォルダにあ...
-
VBSで指定したフォルダにファイ...
-
エクセルVBA フォームを開く時...
-
ASP.NETで、別サーバーへファイ...
-
Excel VBA シートを指定して...
-
OCXのライセンス
-
VBAでFTPファイル転送がうまく...
-
ASP上でFileSystemObjectのDele...
-
ADODB.Recordsetを使用してExce...
-
EXCEL VBA ファイルが開かれて...
-
vba エクセルダウンロードファ...
-
BASP21のアップロードについて
-
BitBlt関数について
-
VB2005 で encoding="Shift_JIS...
-
XMLDOMのsaveメソッドのエラー
おすすめ情報