• ベストアンサー

エクセル2003 GetOpenFilenameで呼び出される階層について

エクセル2003VBAでGetOpenFilenameを使って ファイルを選択してその後の処理に用いてます。 質問なのですが GetOpenFilenameで呼び出されてくるフォルダの階層 がカレントフォルダだったと何処かで読んだ記憶があったので カレントフォルダをchdirを持ちいて必要なフォルダを呼び出せるよう しているのですが、呼び出したい階層のフォルダがネットワークに つながっているPC(サーバー機)の場合、どうしても欲しい階層が 呼び出せないのですが、どのようにしたらよいのでしょうか? また、GetOpenFilenameで呼び出されるダイアログの動きなどを 追跡(調べる方法)などあるのでしょうか? ご教授のほど宜しくお願いいたします。

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

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

> GetOpenFilenameで呼び出されてくるフォルダの階層 > がカレントフォルダだったと何処かで読んだ記憶があったので その通りです。しかし、ChDir ではネットワーク上のフォルダをカレント に切り替えることはできません。 GetOpenFilename の前に次の一行を挿入してみてください。マクロが 書かれたブック(ThisWorkbook)のフォルダをカレントにします。 CreateObject("WScript.Shell").CurrentDirectory = ThisWorkbook.Path

tmgolf
質問者

お礼

お返事遅くなりました。 ご回答ありがとうございます。 このような形で呼び出せるのですね。 勉強になりました。 ありがとうございます。

その他の回答 (1)

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.2

chdirは そのドライブの中の変更なので ChDrive でドライブを変更してから chdir で変更します ネットワークドライブが割り当てられていたら Z: とかで、 変更できますよ

tmgolf
質問者

お礼

なるほど、ネットワークドライブの設定でする事も できるのですね。 勉強になりました。 ありがとうございます

関連するQ&A

  • VBAのGetOpenFilenameについて

    VBAのGetOpenFilenameについての質問です。 (1)このメソッドを使用すると一番初めは"マイドキュメント"内のdirが表示されるのですが、このデフォルトの指定をサーバーのディレクトリーに変更することは可能でしょうか。 ネットワークドライブをZ等に設定すると出来た(例参照)のですが、ネットワークドライブを設定せずに直接ディレクトリ指定出来ないでしょうか。 (例) ChDrive "z:\" ChDir"z:\test" (2)下記の通りvbaを組むと「引数は省略できません」のエラーになります。過去の質問url(http://oshiete1.goo.ne.jp/qa3023085.html)では出来ましたとお礼が書かれていましたが、理由が分からないので、教えて下さい。 Dim WorkPath As String WorkPath = ActiveWorkbook.Path ChDir = WorkPath ChDrive = WorkPath

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

    こんにちは、Excelでマクロを組んでいます。ネットワークにファイルサーバーのNasを利用しているのですが、ファイルを開くダイアログで初期表示されるディレクトリをNasのフォルダに指定したいと思っています。 ChDir "\\Nas\最初に開きたいフォルダ" Application.GetOpenFilename で指定しても、なぜかローカルのマイドキュメントが開かれてしまいます。ローカルのマイドキュメントはカレントディレクトリに設定されていますが、例えば ChDir "C:\テストフォルダ名"としてから Application.GetOpenFilename とすると、きちんとテストフォルダ名が最初に表示されます。Nasへの接続の問題でしょうか?でも、Nasへログオンするにはユーザー名やパスワードを指定するはずなので、ログオンしていなかった場合はそれを聞いてくると思われるのですが・・・いかがでしょう?パスが間違っていたら、パスが間違っていますというエラーメッセージになると思いますし、、、よろしくお願いします。

  • GetOpenFileNameでファイル名でのフィルタ

    こんにちは, EXCEL2007 VBAを用いて ワークブックオープン時にファイル選択ダイアログを表示しています。  GetOpenFileName("日報ファイル(*.CSV),*.CSV",false) 上記は拡張子*.CSVでフィルタを掛けていますが、 ファイル名を絡めてフィルタを掛けることはできないのでしょうか? 日報ファイルなら*day.CSV,月報なら*month.CSVといった様に・・・  GetOpenFileName("日報ファイル(*day.CSV),*day.CSV",false) 上の様にすると*.*となりフィルタがかかりません。 ファイル選択ダイアログのファイル名のところに*day.CSVと手入力すれば フィルタがかかります。これをVBAから行えないでしょうか? よろしくお願いいたします。

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

  • ExcelVBAでファイルを開くフォルダ指定方法

    ExcelのVBAを用いて実験データのcsvファイルをまとめるプログラムを書いています. 肝心のプログラムはほぼできています. しかし OpenfileName = Application.GetOpenFilename("CSVファイル,*.csv?") としたときに開かれるフォルダ(ファイルを指定するフォルダ)がカレントフォルダ?となっております. 実行するExcel(VBA入り)と実験データが下記のパスにあったとして C:\Users\ABC\Documents\Data\110302\ カレントフォルダはなぜかマイドキュメントがデフォルトになってしまいます. C:\Users\ABC\Documents\ 階層移動できるので問題なくもないのですが,一々階層移動するのも面倒なので修正したいと考えております. そこで (1)プログラム実行直前にカレントフォルダを実行するExcel(VBA入り)の位置に変更する方法 (2)カレントフォルダと関係なく実行するExcel(VBA入り)があるフォルダを開く方法 どちらかで対処できると考えたのですがその方法が見つかりません. (ちなみに実行するExcel(VBA入り)の位置は動かすものとするので絶対パスでの指定はなしとします) どなたかご教授お願いします.

  • 階層付きテキストに変換できる?

    エクセルマクロでも何でも構わないのですが、 「選択したフォルダ以下の複数テキストファイル ⇒ 階層付きテキストに変換」 することは可能でしょうか? 他に方法があれば何でも構いません。 マクロを実行すると、フォルダ指定するダイアログボックスが表示され、フォルダ選択して実行すると、そのフォルダ以下のテキストファイルが、階層付きテキストに変換されるという感じです。 出力される階層付きテキストファイルの階層を示す表示記号は、WZ方式?の「.」「..」「...」です。 可能であれば、、 ・ダイアログボックスには通常「C:~~」から階層構造が表示されますが、自分がよく使うフォルダを起点に表示させる機能(お気に入りを5つ保存できる)があったら最高です。 前回選択したたフォルダ場所を記憶させるのもいいと思います。 出力された階層付テキストファイル例) .フォルダ名1 内容 ..テキストファイル名1 内容 ..テキストファイル名2 内容 .フォルダ名2 内容 ..テキストファイル名3 内容 という感じです。 可能でしょうか?

  • VBAのダイアログ表示について

    VBA ダイアログ表示について 通常マイドキュメントのダイアログじゃなく直接下記の命令文で指定のフォルダをフォルダを開くダイアログを指定したつもりですが、なぜかマイドキュメントのダイアログが表示されます。 初心者でVBAの事良くわかっていません。 だれかアドバイスをお願いできないでしょうか? Dim Openfile As String Chdir "\Main\VBAdata" Openfile = Application.getOpenFilename("テキスト ファイル,*.txt")

  • Excel 埋め込みオブジェクトのファイル名取得

    Excelファイルに挿入>オブジェクト>ファイルから ・・・ で選択し、埋め込んだオブジェクトのファイル名をVBAで 取得する事はできますか? 実際には上記のように手動ではなく、 Application.Dialogs(xlDialogInsertObject).Show , " ", , True でダイアログを表示し、ファイルを選択させています。 埋め込んだファイルがフォルダ階層が深かったりすると、 ファイル名まで表示されないので、ファイル名を取得して、 別のセルに入力するまでをVBAで処理をしたいと考えています。 既に埋め込まれているオブジェクトの名前を取得する、もしくは ダイアログで選択されたファイルの名前を取得する、ということが できるのであれば教えていただけますでしょうか?

  • ExcelのVBAでフォルダ名の取得

    お世話になります。 タイトルのままなんですが、 VBAでフォルダのフルパスを取得したいのですが出来るでしょうか? ファイルのフルパスは FN = Application.GetOpenFilename で取得出来たのですが 同じ様に ダイアログから選択する様に出来るでしょうか?

  • ExcelのVBAでの複数階層からのフォルダ名の取得

    ExcelのVBAでの複数階層からのフォルダ名の取得 下記階層に対して以下の処理をExcelのVBAで行うにはどしたら良いか、 申し訳ありませんが、どうか教えて頂きたく思います。 C:\test1   ├\aaa\ddd   │   ├\xxx1\   │   └\yyy2\   │   ├\bbb\ddd   │   └\xxx3\   │   │   └\ccc\ddd       ├\xxx4\       ├\xxx5\       └\zzz6\ 1 C:\test1を指定する 2 1で指定した中にある各\dddフォルダ内にあるフォルダ名を順に取得する 3 2で取得したフォルダ名をExcelのSheet1のA1から順に書き出す Excel   A    B    C    D    E 1 xxx1 2 yyy2 3 xxx3 4 xxx4 5 xxx5 6 zzz6 7 8 9  Sheet1 Sheet2 Sheet3 勉強不足で申し訳ありません。 どうぞ宜しくお願い致します。

専門家に質問してみよう