• ベストアンサー

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のカレントフォルダが表示されます。 ダイアログ表示したときに、任意のフォルダを表示させるには、どのようにしたらよいですか? ご回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.5

不思議ですね。 こちらの環境はXP Homeですが、問題なく指定フォルダで表示されますよ。 ThisWorkbookはローカルドライブにあるのでしょうか? データフォルダへのアクセス権を制限しているとかはないですか? sPath = ThisWorkbook.Path & "\データフォルダ" ChDir sPath Application.Dialogs(xlDialogOpen).Show でも変わらないでしょうね、、、

yun1999
質問者

お礼

Workbookはデスクトップにあったので、別の場所へ移動し、実行したら動きました。(winXP)デスクトップというものは特別な場所何でしょうか? win2000ではすぐにテストできないのですが、前回のテストでは d:\データ作成 というフォルダ内で実行しましたがうまくいきませんでした。 日本語名(全角文字)のフォルダが原因でしょうか? XPの環境では希望するものができましたのでこの質問は解決ということにさせていただきますが、XPと2000との違いがわかる方がいらっしゃいましたら回答をお願いします。 皆さんありがとうございました。

その他の回答 (5)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.6

#5です。 > (winXP)デスクトップというものは特別な場所何でしょうか? Win9xと違い、ログインユーザー毎に存在します。 Win2000も同様です。 Win9x系(95、98、Me) C:\Windows\デスクトップ WinNT系(2000、XP) C:\Documents and Settings\ログイン名\デスクトップ

回答No.4

私も驚きです。私もXPですが、ぜんぜん問題ないですよ。

yun1999
質問者

補足

確かに「ThisWorkbook.Path」はBookのあるパスになっているんですが、「GetOpenFilename」の実行時に表示されるフォルダは、「マイドキュメント」になるんです。 win98だとちゃんと「データフォルダ」が最初に表示されるんですけど。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>この条件だと、ChDirやChDriveが使えないようです。 まさか!信じられません。 イミディエイトウィンドウで ? ThisWorkbook.Path としてみて 起動したエクセルファイルのパスが本当に表示されますか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

私は、XPですが、指定したフォルダに移動できます。 chdirは、ドライブをまたいで移動できないので、 ドライブが異なっているのではないかと、推測します。 ドライブを変更するには ChDrive ("D") のようにします。 Chdirの前に ChDriveしてみて下さい。

yun1999
質問者

補足

目的のフォルダは、Bookのあるフォルダの1つ下の階層なので、ドライブは同じなのです。 OSは、XP/2000で、EXCELは2000です。 この条件だと、ChDirやChDriveが使えないようです。

回答No.1

Path名をフルパスにしたらどうでしょうか? sPath = ThisWorkbook.Path & "c:\データフォルダ"

関連するQ&A