2014-03-18 58 views
1

所以,我遇到一些問題,ChDrive & ChDir可以正確使用Excel.Application.GetOpenFilename。通過Word VBA項目使用ChDrive&Chdir for Excel

drive = Split(ActiveDocument.Path, ":")(0) 
loc = Split(ActiveDocument.Path, ":")(1) 
ChDrive drive 
ChDir loc 
exfile = exApp.GetOpenFilename("Microsoft Excel (*.xl*),*.xl*") 
Set exBk = exApp.Workbooks.Open(exfile) 

然而,當我這樣做從Word項目時,它仍然訪問默認文件夾(我的文檔):當我使用的命令在Excel VBA項目,它工作正常。

我已經嘗試打開excel實例&在運行ChDrive/ChDir命令之前使其可見(如下所示),但無濟於事 - GetOpenFilename仍然默認爲MyDocuments。

Dim exApp As Excel.Application 
Dim exBk As Excel.Workbook 
Set exApp = CreateObject("Excel.Application") 

select_workbook: 

    'user defines Excel workbook to paste into 
Word.Application.Activate 
    'Set exBk = exApp.Workbooks.Add 
    drive = Split(ActiveDocument.Path, ":")(0) 
    loc = Split(ActiveDocument.Path, ":")(1) 
    exApp.Visible = True 
    ChDrive drive 
    ChDir loc 
    MsgBox CurDir 
    ' CurDir() = ActiveDocument.Path 
    exfile = exApp.GetOpenFilename("Microsoft Excel (*.xl*),*.xl*") 

關於如何從Word VBA項目設置CurDir for Excel的任何想法?

非常感謝您的任何建議。

+0

也只是試圖扔 '設置exBk = exApp.Workbooks.Add Excel.Application.ActiveWorkbook.Activate' 在ChDrive&ChDir命令之前有相同的結果,或者沒有任何結果,而是 – smcpheet

回答

0

這兩個ChDriveChDir被稱爲Word應用程序,而不是Excel應用程序。

我建議使用不同類型的對話框FileDialog而不是GetOpenFileName

嘗試這樣的事情(不完全測試,可能需要一些變化):

Dim FD As FileDialog 
    Set FD = exApp.FileDialog(msoFileDialogFilePicker) 
    With FD 
     .InitialFileName = ActiveDocument.Path 
     .Show 
    End With 
    Dim exFile As String 
    exFile = FD.SelectedItems(1) 
+0

非常好!絕對是這樣做的,謝謝你的幫助 - 我之前沒有看到FileDialog命令樹。沒有看到通過VBA爲.show過濾結果的方法,但與處理文件夾相比,處理該問題肯定更容易。當我擁有代表權時,會投票贊成... – smcpheet