在vba中select正确的文件夹

我写了一个macros,询问您使用消息框保存工作表的所有图表的文件夹,但在和图表保存不在所需的文件夹中,但在父文件夹中。

例如,不是保存在C:\ parent \ desiredFolder中,而是保存在C:\ parent \

感谢您的帮助。

Sub EXPORTCHARTS() MsgBox ("Seleziona la cartella dove vuoi esoportare i grafici") ActiveSheet.Select ActiveWindow.Zoom = 400 Dim sItem As String Dim dlgOpenFolder As FileDialog Set dlgOpenFolder = Application.FileDialog(msoFileDialogFolderPicker) dlgOpenFolder.Filters.Clear With dlgOpenFolder .Title = "Select a Folder" .AllowMultiSelect = False .InitialFileName = strPath If .Show <> -1 Then GoTo NextCode sItem = .SelectedItems(1) End With NextCode: GetFolder = sItem Set fldr = dlgOpenFolder ' --------------------------------------------------------- Dim objCht As ChartObject i = 1 For Each objCht In ActiveSheet.ChartObjects objCht.Chart.Export Filename:=i & ".jpg", FilterName:="JPG" i = i + 1 Next objCht ' --------------------------------------------------------- ActiveWindow.Zoom = 50 End Sub 

Jbjstam在他们的回答中指出,在保存文件时,您没有使用文件夹名称。

如果用户从FileDialog中取消了,即使正确地在循环中使用了sItemsItem也不会被设置,因此这些文件将被保存到当前目录。

以下应该工作:

 Sub EXPORTCHARTS() MsgBox ("Seleziona la cartella dove vuoi esoportare i grafici") ActiveSheet.Select ActiveWindow.Zoom = 400 Dim sItem As String Dim dlgOpenFolder As FileDialog Dim i As Long Set dlgOpenFolder = Application.FileDialog(msoFileDialogFolderPicker) dlgOpenFolder.Filters.Clear With dlgOpenFolder .Title = "Select a Folder" .AllowMultiSelect = False .InitialFileName = strPath If .Show <> -1 Then MsgBox "No path selected" Exit Sub End If sItem = .SelectedItems(1) End With ' --------------------------------------------------------- Dim objCht As ChartObject i = 1 For Each objCht In ActiveSheet.ChartObjects objCht.Chart.Export Filename:=sItem & "\" & i & ".jpg", FilterName:="JPG" i = i + 1 Next objCht ' --------------------------------------------------------- ActiveWindow.Zoom = 50 End Sub 

您不要在导出图表的循环中使用variablesfldr …