[[20150827112941]] 『ファイルを開くダイヤログについて』(VBA初心者) ページの最後に飛ぶ

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

 

『ファイルを開くダイヤログについて』(VBA初心者)

ファイルを開くダイヤログについて
前提として
 ・初回は、"c:\" を開く
 ・2回目以降(BOOKが開いている間)は、前回選択したフォルダを開く
 ・ネットワークドライブ("192.168.〜\test"など)も指定できる。
があります。

以下のように実装したのですが、よくよく考えてみると
Aでネットワークドライブのフォルダを指定した場合、(Bでそのパスを設定)2回目以降にCのところでエラーになるような感じがするのですが、うまくいっております。

それは、A後にカレントディレクトリが、そのネットワークドライブになっているから問題がないのでしょうか?(それともたまたま動いているだけで危ないソース?)

【グローバル変数】

  Public G_変数 As String    ← ディレクトリ格納グローバル変数

【BOOKオープン時】

  G_変数 = "c:\"

【ワークシートのボタンクリック時】

  ChDir G_変数 ←C
  selFile = Application.GetOpenFilename(〜) ←A
  If selFile <> False Then
    G_変数 = selFile ←B
  End If

< 使用 Excel:Excel2013、使用 OS:Windows8 >


http://www.excel.studio-kazu.jp/cgi-bin/estindex/estseek2.cgi?phrase=CurrentDirectory&perpage=10&attr=&order=&clip=-1&navi=0

() 2015/08/27(木) 12:49


 質問自体への回答は、いずれ別の回答者さんからあると思いますので別の観点で。

 ネットワークドライブが、設定されていない状態でファイルを選ぶと
 フルパス先頭は z:\ 等ではなく \\サーバー名 になりますね。
 この場合、次回の ChDir G_変数 で実行時エラーになると思うんですが?

 たとえば GetOpenFilename のかわりに FileDialog を使えば、ChDir なしで初期フォルダ指定ができます。
 ご参考まで。

 Dim myPath As String

 Sub Test()
    Dim fName As String
    Dim w As Variant

    If myPath = "" Then myPath = "c:\"

    With Application.FileDialog(msoFileDialogFilePicker)
        .Filters.Add "エクセルブック", "*.xls*"
        .InitialFileName = myPath
        If .Show = -1 Then
            fName = .SelectedItems(1)
            w = Split(fName, "\")
            ReDim Preserve w(LBound(w) To UBound(w) - 1)
            myPath = Join(w, "\") & "\"

            MsgBox fName

        Else
            MsgBox "キャンセルボタン"
        End If
    End With

 End Sub

(β) 2015/08/27(木) 15:15


コメント返信:

[ 一覧(最新更新順) ]


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