[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ファイルを開くダイヤログについて』(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 >
() 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.