• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA ファイルを開くダイアログでの初期表示にファイルサーバーを指定)

VBAファイルを開くダイアログでの初期表示にファイルサーバーを指定

このQ&Aのポイント
  • ExcelのVBAを使ってファイルを開くダイアログで初期表示されるディレクトリをファイルサーバーに指定したいです。
  • ChDir関数を使用して指定しようとしても、ローカルのマイドキュメントが表示されてしまいます。
  • Nasへの接続やログオンの問題かもしれませんが、正しいパスを指定してもエラーメッセージが表示されず、正常に接続できません。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

> もともとWindowsで設定されていたカレントディレクトリが変更されて > しまいませんか? 良く意味がわかりませんが、それがカレントディレクトリを変更すると いうことなのでは? GetOpenFilename の時だけ変更したいなら... Sub Sample()      Dim sDirPathBackup As String   Dim sFileName   As String      ' 現在のカレントディレクトリパスを退避   sDirPathBackup = CurDir   MsgBox CurDir, , "現在のカレントディレクトリ"   With CreateObject("WScript.Shell")     ' カレントディレクトリ変更     .CurrentDirectory = "D:\AITEMP"     ' ダイアログ開く     sFileName = Application.GetOpenFilename("EXCELファイル (*.xls), *.xls")     ' カレントディレクトリを元に戻す     .CurrentDirectory = sDirPathBackup   End With   ' 以後の処理継続~   MsgBox CurDir, , "元に戻ってます^^" End Sub

nao_lin
質問者

お礼

エクセルに設定されていた保存先が変更されてしまうかと思ってしまいました。大丈夫みたいですね。現在のカレントディレクトリも一旦退避させて、ダイアログを開いた後にすぐ元にもどしてしまえばいいんですね。よくわかりました<^!^>、どうもありがとうございました。

nao_lin
質問者

補足

でもなんだかカレントディレクトリを変更した後、元に戻す必要はないのかな?と思ってきました。だって、ファイルを開くダイアログでファイルを開いたら、カレントディレクトリは開いたファイルのあるディレクトリになるわけですよね?そのあと、マイドキュメントにあるファイルを開いたら、カレントディレクトリはマイドキュになりますか?ごちゃごちゃですみません・・・

その他の回答 (5)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.6

> エクセルに設定されていた保存先が変更されてしまうかと > 思ってしまいました。 ああ。そういうことですか。大丈夫ですよ。別名で保存で開くダイアログ上の フォルダが変わるぐらいで、別にファイル自体が移動するわけではありません。 上書き保存なら全く問題ありませんし、別にカレントフォルダはどちらでも 良いのでは?

nao_lin
質問者

お礼

どうもありがとうございました。大変助かりました。また機会がありましたらよろしくお願いします。m(_ _)m

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

#2 です。誤解を招きそうなので補足しときます。 確かに API もモノによって環境依存します。しかし、 SetCurrentDirectory API は Win95~WinXPで大丈夫です。恐らくは次期 Windows Vista でも。 Windows の仕様変更を MS のアナウンス前から気にしていたらプログラムは 不可能ですから、現段階では心配無用だと思います。 WSH(Windows Scripting Host)は、Internet Explorer 4 以上がインストール されていれば OS に標準的にインストールされてます。Win98 以降なら大丈夫 だったと思いますが、この点は確認してません。 Windows95等でブラウザのアップデートを全くしてない、WSH をインストール していない PC だと動きません。 以前の LoveLetter ウイルス騒動で WSH を問題視したシステム管理者が WSH 禁止目的で、意図的に WSH をアンインストールしている場合も動きません。 この2点において API による方法に比べれば環境を選ぶ方法と言えますね。 が、ほとんどの PC で動くでしょう。 また、WSH は 次期 Windows Vista までは少なくとも搭載されると MS が 公式発表してます。今から心配する必要はありません。

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.3

No.1ですが、補足しておきます。 APIも環境に依存しますので、もし使用するのであればそれだけ注意してください。 (Windows系でもいきなりなくなったり仕様が変わったりすることもありますので) WSHの方は将来無くなる予定です。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 2 つの方法があります。お好みで。 ともに参照先が存在しない場合の例外処理が必要です。特に WSH の方は エラーが発生して処理が中断されます。 ▼ API を使う方法 Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" ( _   ByVal lpPathName As String _ ) As Long Sub Sample1()   Call SetCurrentDirectory("\\Nas\最初に開きたいフォルダ")   MsgBox CurDir End Sub ▼ WSH を使う方法(環境依存しますが Win98 以降なら OK かな?) Sub Sample2()   CreateObject("WScript.Shell").CurrentDirectory = "\\Nas\最初に開きたいフォルダ"   MsgBox CurDir End Sub

nao_lin
質問者

補足

WSHを調べました。WSHが何であるかわかったのですが、WSHを利用した場合、もともとWindowsで設定されていたカレントディレクトリが変更されてしまいませんか?

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.1

カレントドライブを変更しないとchdirは有効になりませんので、ご質問の ケースはそのようになります。 逆に言えば、UNC名でカレントフォルダを指定することはできません。 方法としては、UNC名をネットワークドライブに割り当てた後、chdriveで カレントドライブをそのネットワークドライブに変更し、それからchdir以降を 行えば可能だと思います。

nao_lin
質問者

お礼

ChDriveでドライブを変更してから行ってもできなかったんですよね・・・結局WSHで対応することにしました。APIやWSHについても今後について検討することができ、大変参考になりました。ご意見どうもありがとうございました。

関連するQ&A

専門家に質問してみよう