2014-01-21 34 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有关?再次感谢! –