標題:
[發問]
ChDrive/ ChDir問題
[打印本頁]
作者:
acdx
時間:
2016-12-16 10:19
標題:
ChDrive/ ChDir問題
ChDrive可以變更目前的磁碟機, ChDir則是用來改變目前的資料夾
我用下列方式撰寫:
filepath = ActiveWorkbook.Path
ChDrive filepath
ChDir filepath
filt = "excel files (*.xls;*.xlsx),*.xls;*.xlsx"
Filename = Application.GetOpenFilename(FileFilter:=filt, FilterIndex:=5, title:="選擇檔案", MultiSelect:=True)
...
...
我開啟的excel檔案是在某一個資料夾(ActiveWorkbook.Path),且希望執行opne file時開啟的路徑會在同一個資料夾,若是開啟的檔案是網路芳鄰上的電腦(即ActiveWorkbook.Path不是在自己的電腦),就會出現錯誤,請問該如何改才能修正這個錯誤?
作者:
GBKEE
時間:
2016-12-16 19:41
回復
1#
acdx
試試看
Option Explicit
Sub Ex()
Dim filepath As String, A As String, B As String
filepath = ActiveWorkbook.Path
MsgBox CurDir '***CurDir 函數傳回一個 Variant (String),用來代表目前的路徑。
A = Split(CurDir, "\")(0)
B = Split(filepath, "\")(0)
If A <> B Then ChDrive B
ChDir filepath
MsgBox CurDir
End Sub
複製代碼
作者:
stillfish00
時間:
2016-12-19 20:14
回復
1#
acdx
ChDrive : 改變工作磁碟機
ChDir : 改變工作目錄
依題目的意思是希望 GetOpenFilename 選擇檔案時的預設路徑為該檔路徑,
但當檔案在分享資料夾(路經通常為 "\\電腦名稱\資料夾路徑\檔案")
無法用ChDir切換工作目錄到 "\\電腦名稱\資料夾路徑\"
替代方法,這邊舉兩種 :
1. 改用 Application.FileDialog(msoFileDialogOpen),FileDialog可以直接設定InitialFileName
Sub m1()
Dim filename As String
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.InitialFileName = ActiveWorkbook.Path
.Filters.Clear
.Filters.Add "Excel files", "*.xlsx;*.xls"
.Show
If .SelectedItems.Count = 0 Then Exit Sub 'cancel
filename = .SelectedItems(1)
End With
MsgBox filename
End Sub
複製代碼
2. 用 windows API : SetCurrentDirectory切換工作目錄,再用 GetOpenFilename
Private Declare Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
Sub m2()
Dim filt As String, filename As String
SetCurrentDirectory ActiveWorkbook.Path
filt = "excel files (*.xls;*.xlsx),*.xls;*.xlsx"
filename = Application.GetOpenFilename(FileFilter:=filt, FilterIndex:=5, Title:="選擇檔案", MultiSelect:=True)
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)