2016-01-25 8 views
0

У меня есть следующий код для сохранения моих рабочих листов в виде файлов csv в папку, в которой сохранена книга. Как мне изменить это, чтобы открыть диалоговое окно «Сохранить как» позволить мне выбрать, где я хотел бы сохранить?Запрос на сохранение как файл doalog при сохранении рабочих листов в виде файлов csv

Чтобы уточнить, я хочу изменить код, чтобы указать только путь, по которому все файлы могут быть сохранены. Я не ищу, чтобы сохранить как для каждого листа.

Sub SaveOnlyCSVsThatAreNeeded() 
Dim ws As Worksheet, newWb As Workbook 

Application.ScreenUpdating = False 
For Each ws In Sheets(Array("01 - Currencies", ..."14 - User Defined Fields")) 
    ws.Copy 
    Set newWb = ActiveWorkbook 
    With newWb 
     .SaveAs ws.Name, xlCSV 
     .Close (False) 
    End With 
Next ws 
Application.ScreenUpdating = True 

End Sub 

Я заменил все это на сборщик папок, чтобы упростить его. Добавлено обновленный код. Теперь я получаю код ошибки 9 - индекс вне диапазона.

Sub SaveOnlyCSVsThatAreNeeded() 
Dim ws As Worksheet, newWb As Workbook 
Dim pathh As Variant 

Dim FolderName As String 

With Application.FileDialog(msoFileDialogFolderPicker) 
    .AllowMultiSelect = False 
    If .Show = -1 Then 
     FolderName = .SelectedItems(1) 
    End If 
End With 

pathh = FolderName 

Application.ScreenUpdating = False 
For Each ws In Sheets(Array("01 - Currencies", "02 - .....14 - User Defined Fields")) 
    ws.Copy 
    Set newWb = ActiveWorkbook 
    With newWb 
     .SaveAs pathh.path & "\" & ws.Name, xlCSV 
     .Close (False) 
    End With 
Next ws 
Application.ScreenUpdating = True 

End Sub 

ответ

0

Используйте следующий код, чтобы показать какдиалоговый экран:

pathh = Application.GetSaveAsFilename(_ 
      FileFilter:="CSV Files (*.csv), *.csv", _ 
      Title:="Save all spreadsheets", _ 
      InitialFileName:=filenamestring) 

Приветствие

+0

I думаю, я должен перефразировать. Я хочу изменить код, чтобы иметь возможность указать только путь, к которому все файлы могут быть сохранены. Я не хочу получать спасение, как каждый раз для каждого листа. – user1266515

+0

Вам понадобится код для выбора типа папок. Я уверен, что для этого есть коды, которые вы можете найти. В качестве альтернативы с помощью «Application.GetSaveAsFilename» вы можете предоставить ему такие параметры, как «InitialFilename». Затем пользователь может просто выбрать папку, как обычный диалог «Сохранить как», и выполнить ваши требования. Не может ли это быть решением? https://msdn.microsoft.com/en-us/library/office/ff195734.aspx командная документация. – nbayly

+0

AlrightI опубликовал модифицированный код .... но теперь мне требуется указать имя файла, а не просто выбрать путь. Что мне нужно, чтобы исправить это? – user1266515

0

Команды propt какдиалоговым в VB является:

Application.GetSaveAsFilename 
Смежные вопросы