2016-03-23 6 views
1

У меня этот макрос работает красиво, но время от времени он сохраняет экспортированные листы в последнюю папку, в которой я работал, а не определенную папку, в которой я их хочу Как указать папку, в которую они должны войти?Экспортировать несколько рабочих листов в CSV и указывать папку сохранения

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

Application.ScreenUpdating = False 
For Each ws In Sheets(Array("sheet1", "sheet2", "sheet3")) 
    ws.Copy 
    Set newWb = ActiveWorkbook 
    With newWb 
     .SaveAs ws.Name & ".csv", xlCSVWindows 
     .Close (False) 
    End With 
Next ws 
Application.ScreenUpdating = True 

End Sub 

ответ

1

Необходимо указать местоположение, в котором вы хотите сохранить код.

Попробуйте это.

.SaveAs FileName:="C:\OutputFilepath\" & ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 
1

Замените эту строку

.SaveAs ws.Name & ".csv", xlCSVWindows 

С

.SaveAs "D:\MyFolder\" & ws.Name & ".csv", xlCSVWindows 

Измените "D: \ MyFolder \" до нужного пути.

+0

Стараясь сделать эту работу, вероятно, потому, что я нахожусь на Mac под управлением OS X. Пробовал сбросив в «/ Users/MyUserName/Desktop», как путь, но это не работает? Есть идеи? – user2653322

+0

добавьте еще один «/» после рабочего стола. "/ Пользователи/myusername/Desktop /" Местоположение каталога заканчивается косой чертой. – DDuffy

1

Добавьте строку типа var, которая содержит полный путь к папке. В следующем примере я буду использовать временную директорию.

Sub asdf() 

    Dim ws As Worksheet, newWb As Workbook, fp as string 

    fp = environ("TEMP") & Chr(92) 
    'could be something like 
    'fp = environ("USER") & "\desktop\" 

    Application.ScreenUpdating = False 
    For Each ws In Sheets(Array("sheet1", "sheet2", "sheet3")) 
     ws.Copy 
     Set newWb = ActiveWorkbook 
     With newWb 
      .SaveAs fp & ws.Name, xlCSVWindows 'add the path, let saveas add the extension 
      .Close savechanges:=False 
     End With 
    Next ws 
    Application.ScreenUpdating = True 

End Sub 
+0

Привет, не могли бы вы объяснить бит окружения («TEMP») и Chr (92)? Хр (92) меня смутил. – user2653322

+0

Девяносто второй символ в таблице ASCII - это обратная косая черта. Функция [Environ] (https://msdn.microsoft.com/en-us/library/office/gg264486.aspx?f=255&MSPPError=-2147217396) обычно не заканчивается. – Jeeped

Смежные вопросы