2014-01-21 33 views
1

我一直在使用下面的代碼在Excel中指定的文件夾路徑:VBA Excel中獲取文件路徑 - 不工作

Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker) 
diaFolder.AllowMultiSelect = False 
diaFolder.Show 

我會導出PDF文件(通過VBA代碼),這條道路。當我在Windows XP上運行Excel 2007時,此代碼完美無瑕。我最近升級了我的操作系統和辦公版本,現在我的Excel 2010在Windows 7上運行。代碼不再像以前那樣工作,問題是每次運行代碼時路徑都會一直向上移動一個級別。

例如,假設我選擇以下路徑:

\users\AK\Desktop\Projects\ProjectM

實際的PDF文件被保存在\users\AK\Desktop\Projects\

如果我選擇:\users\AK\Desktop\Projects\ PDF文件被保存在\users\AK\Desktop\

如果我繼續運行代碼,它會一直跳到一個級別,所以讓我說我連續運行3次(沒有選擇我的路徑)我的PDF文件將存儲在:\ users \ AK \

我不知道它是一個Excel 2010問題或Windows 7問題。有沒有人遇到過這個?

編輯:包括全碼:

Private Sub CODERUN() 
    ' Define values 
    FN_A = Cells(2, 2).Value 

    ' Print PDF version 
    Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker) 
    diaFolder.AllowMultiSelect = False 
    diaFolder.Show 

    ' Print PDF version 
    Sheets("Part A").Select 
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=FN_A & "_A", _ 
            Quality:=xlQualityStandard, _ 
            IncludeDocProperties:=True, _ 
            IgnorePrintAreas:=False, _ 
            OpenAfterPublish:=False 
End Sub 
+3

您應該顯示代碼的其他相關部分。您列出的內容不足以診斷問題。 –

+2

如果您每次都運行上述操作,則必須每次選擇路徑;我同意@TimWilliams你需要展示一段完整的代碼 - 你如何使用返回的路徑,以及如何循環?有了這兩條信息,我們就可以重現問題和幫助。 – Floris

+0

同意上面的兩條評論。無論如何,你也可以嘗試使用'GetSaveAsFilename'來保存任何格式的文件,儘管我還沒有用PDF來嘗試它,因爲上面有點複雜。 – L42

回答

1

我明白你問什麼,因爲我已經打了同樣的問題。我相信你的問題是,如果你運行你有的代碼,然後在對話框中點擊取消或確定,那麼下次運行代碼時,初始路徑與前一個初始路徑相距一個水平。發生這種情況的原因是因爲對話框沒有放在尾部\,然後截斷到下一個\的路徑。因此,每次使用對話框時,都會在路徑中失去一個級別。

以下代碼應該適用於您,並且您可以接受或取消,直到您的心在沒有初始目錄更改的情況下爲止。

Private Sub CODERUN() 
    Dim sFilePath as String 

    ' Define values 
    FN_A = Cells(2, 2).Value 

    ' Print PDF version 
    With Application.FileDialog(msoFileDialogFolderPicker) 
     .AllowMultiSelect = False 
     If .Show = -1 Then 
      sFilePath = .SelectedItems(1) & "\" 
      .InitialFileName = sFilePath '<--Remove this line to see the problem 
     End If 
    End With 

    ' Print PDF version 
    Sheets("Part A").ExportAsFixedFormat Type:=xlTypePDF, filename:=sFilePath & FN_A & "_A", _ 
            Quality:=xlQualityStandard, _ 
            IncludeDocProperties:=True, _ 
            IgnorePrintAreas:=False, _ 
            OpenAfterPublish:=False 
End Sub 
+0

感謝CuberChase,您的解決方案在現在的工作中,目錄(即路徑)不會更改,但是,當我嘗試將文件導出到該選定文件夾時,它會一直保存在選定文件的上一級目錄中。 FN_A =細胞(2,2)。價值 '該文件 表( 「A部分」)選擇選擇名稱' 進入到片材A ActiveSheet.ExportAsFixedFormat類型:= xlTypePDF,文件名:= FN_A &「 _A「,質量:= xlQualityStandard,IncludeDocProperties:= True, IgnorePrintAreas:= False,OpenAfterPublish:= False –

+0

@ AK-74您沒有在導出中指定文件路徑。我已經更新了我沒有測試過的答案,但我相當有信心它應該起作用。讓我知道。 – CuberChase

+0

它工作!謝謝#CuberChase。但究竟是什麼問題?它與Excel 2010還是Win7有關?再次感謝! –