- ベストアンサー
Excel VBA:ダイアログを使ってファイル名を取得したい
ファイルを開く際に、GetOpenFilenameを使用し、以下のように記述しています。 Dim sFName As String Dim sPath As String sPath = ThisWorkbook.Path & "\データフォルダ" ChDir sPath sFName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", MultiSelect:=False) このとき、win98ですと、指定したフォルダが表示されますが、 win2000やXPですと、Excelのカレントフォルダが表示されます。 ダイアログ表示したときに、任意のフォルダを表示させるには、どのようにしたらよいですか? ご回答よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
不思議ですね。 こちらの環境はXP Homeですが、問題なく指定フォルダで表示されますよ。 ThisWorkbookはローカルドライブにあるのでしょうか? データフォルダへのアクセス権を制限しているとかはないですか? sPath = ThisWorkbook.Path & "\データフォルダ" ChDir sPath Application.Dialogs(xlDialogOpen).Show でも変わらないでしょうね、、、
その他の回答 (5)
- papayuka
- ベストアンサー率45% (1388/3066)
#5です。 > (winXP)デスクトップというものは特別な場所何でしょうか? Win9xと違い、ログインユーザー毎に存在します。 Win2000も同様です。 Win9x系(95、98、Me) C:\Windows\デスクトップ WinNT系(2000、XP) C:\Documents and Settings\ログイン名\デスクトップ
- Samurai-Jack
- ベストアンサー率18% (130/697)
私も驚きです。私もXPですが、ぜんぜん問題ないですよ。
補足
確かに「ThisWorkbook.Path」はBookのあるパスになっているんですが、「GetOpenFilename」の実行時に表示されるフォルダは、「マイドキュメント」になるんです。 win98だとちゃんと「データフォルダ」が最初に表示されるんですけど。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>この条件だと、ChDirやChDriveが使えないようです。 まさか!信じられません。 イミディエイトウィンドウで ? ThisWorkbook.Path としてみて 起動したエクセルファイルのパスが本当に表示されますか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
私は、XPですが、指定したフォルダに移動できます。 chdirは、ドライブをまたいで移動できないので、 ドライブが異なっているのではないかと、推測します。 ドライブを変更するには ChDrive ("D") のようにします。 Chdirの前に ChDriveしてみて下さい。
補足
目的のフォルダは、Bookのあるフォルダの1つ下の階層なので、ドライブは同じなのです。 OSは、XP/2000で、EXCELは2000です。 この条件だと、ChDirやChDriveが使えないようです。
- Samurai-Jack
- ベストアンサー率18% (130/697)
Path名をフルパスにしたらどうでしょうか? sPath = ThisWorkbook.Path & "c:\データフォルダ"
お礼
Workbookはデスクトップにあったので、別の場所へ移動し、実行したら動きました。(winXP)デスクトップというものは特別な場所何でしょうか? win2000ではすぐにテストできないのですが、前回のテストでは d:\データ作成 というフォルダ内で実行しましたがうまくいきませんでした。 日本語名(全角文字)のフォルダが原因でしょうか? XPの環境では希望するものができましたのでこの質問は解決ということにさせていただきますが、XPと2000との違いがわかる方がいらっしゃいましたら回答をお願いします。 皆さんありがとうございました。