2016-11-07 13 views
0

メッセージボックスを使用してワークシートのすべてのグラフを保存するフォルダを尋ねるマクロを作成しましたが、グラフは目的のフォルダではなく親に保存されます1。たとえば、代わりにCで保存するvbaで正しいフォルダを選択する

:それはCで保存します\親の\ desiredFolder:\親\

はあなたの助けをいただき、ありがとうございます。

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 

答えて

2

Jbjstamがその答えで指摘を使用していません。

sItemをループに正しく使用しても、sItemが設定されないため、ファイルが現在のディレクトリに保存されるため、ユーザーがFileDialogからキャンセルした場合にもロジックに問題が発生しました。

次は動作するはずです:

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 
1

あなたがファイルを保存しているときに、フォルダ名を使用していないグラフをエクスポートループ内の変数FLDR ...

+0

実は 'sItem'または' GetFolder'が使用するパスが含まれている可能性がある変数になります。 'fldr'は単に' FileDialog'オブジェクトへのポインタです。しかし、基本的な問題は正しい - 保存の一環としてユーザーが選択したパスを使用していない。 – YowE3K

+0

ああええ!適切な答えを洗い出してくれてありがとう:-) – Jbjstam

+0

ありがとうございました。できます – ilFonta

関連する問題