[[20111129160310]] 『ファイル名を指定して開く時のフォルダの指定』(ぬこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ファイル名を指定して開く時のフォルダの指定』(ぬこ)

 いつもお世話になっています。

 Excel2007です。

 VBAでファイル名を指定して開く場合、

     Dim OpenFileName As String
     OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

 このようなコードになると思いますが、あるマクロブックからファイルを指定して開く時、
 対象のファイルがネットワーク上の共有ファイルの奥深くにあり、毎回掘り起こすのが大変です。
 しかしそのファイルが直接入っているフォルダも毎日変わるので、フォルダ名を固定することもできません。

 やりたいことは、たとえば以下のような構成のフォルダがあります

 [共有]
  |
 [管理部]
   |
  :
   |
 [日報]
  |
  [11.28]   [11.29]
   |       |
  ファイルA   ファイルB

 [日報]フォルダの中のフォルダ名は変わりますが、[日報]というフォルダ名は変わりません。
 開きたいファイルは[11.28]や[11.29]の中のファイルです。

 なので、「日報」というフォルダ名をVBAの中で指定して、その中から「11.28」「11.29」フォルダを選んで
 その中のファイルを開く、ということはできますでしょうか。

 説明が下手ですみません。

 よろしくお願いいたします

 フォルダを指定して、そのフォルダを表示するいくつかの例が
[[20111125151454]] 『フォルダを開く』(ひろ2)

 (ぶらっと)

 ありがとうございます。

 教えていただいた過去ログを見ながらコードを書きましたがパスの書き方が悪いのか
 「currentdirectoryメソッドは失敗しました。IwshShell3オブジェクト」
 というエラーが出ます。
 currentdirectoryを外すと「オブジェクトはこのプロパティまたはメソッドをサポートしていません」となります。

 ファイルのパスは下記のような構成です

 \\11.222.33.444\共有\管理部\業務\Aチーム\日報

 Sub test()
 Dim myBook as String

    CreateObject("Wscript.shell").currentdirectory = " \\11.222.33.444\共有\管理部\業務\Aチーム\日報"
    myBook = Application.GetOpenFilename("Excelファイル,*.xlsm", , "ファイルを選択")

 End Sub

 過去ログにあった別の方法でも失敗しました。
 パスの記述がおかしいでしょうか?

 ちなみにOSはWindows7です。

(ぬこ)


 ご紹介した(毛虫通行中)さんのコード、コメントにもあったように2007では未検証ということだけど
今、こちらの2003でネットワークドライブにあるフォルダを \\ からはじまるパスで動かしたらちゃんと表示された。
(たぶん2007でも2010でも大丈夫だと思うけど)
ただし、書き方として \\フォルダ名\フォルダ名\フォルダ名 としている。

日報フォルダにある任意のxlsmブックに、以下を書いて動かして、そこで表示される文字列を与えると
どうなるかな?

 Sub TestMsg()
    MsgBox ThisWorkbook.Path
 End Sub

 (ぶらっと)


 Sub TestMsg()
    MsgBox ThisWorkbook.Path
 End Sub

これを実行したら「\\11.222.33.444\共有\管理部\業務\Aチーム\日報\11.29」というメッセージボックスが出ます。

 もう一度先に書いたコードを実行したら何故か今度はフォルダを開くまではできました。
 ですが今度はファイルをダブルクリックしてもファイルが開けません。
 ファイルを開くのに別のコードがいるのでしょうか

(ぬこ)


 >何故か今度はフォルダを開くまではできました。

 そう?そのままで? 
" \\11.222.33.444\共有\管理部\業務\Aチーム\日報" これを
"\\11.222.33.444\共有\管理部\業務\Aチーム\日報" こうなおしたんじゃなく?

 いずれにしても、GetOpenFileName は選択したファイルの名前を返してくれるだけで、実際には開かれない。
戻り値としてのファイルのフルパスを使って、Workbooks.Open を実行する。

 Sub test()
    Dim myBook As String

    CreateObject("Wscript.shell").currentdirectory = "\\11.222.33.444\共有\管理部\業務\Aチーム\日報"
    myBook = Application.GetOpenFilename("Excelファイル,*.xlsm", , "ファイルを選択")
    If myBook = "False" Then Exit Sub
    Workbooks.Open myBook

 End Sub

 (ぶらっと)


できました!

 " \\11.222.33.444\共有\管理部\業務\Aチーム\日報" これを
 "\\11.222.33.444\共有\管理部\業務\Aチーム\日報" こうなおしたんじゃなく?

 コードをコピーしたりして試してたうちにパスの変な空白を消したんだと思います(今みたら確かに空白入ってましたね…)

ファイルもちゃんと開けました!

ありがとうございます

(ぬこ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.