2016-04-28 3 views
-1

Я новичок в VBA. У меня есть требование открыть существующий файл из другого места и сохранить каждый лист в разных файлах csv в имени имени рабочей таблицы (имя вкладки). Я пробовал что-то вроде этого.VBA Macro для открытия файла Excel и сохранения рабочих листов в отдельных файлах CSV

Sub SplitFile() 
Dim vPath As String 
vPath = Application.ActiveWorkbook.Path 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
For Each xWs In ThisWorkbook.Sheets 
    xWs.Copy 
    Application.ActiveWorkbook.SaveAs Filename:=vPath & "\" & xWs.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 
    Application.ActiveWorkbook.Close False 
Next 
Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
End Sub 

Это работает для активного рабочего листа, но я хотел бы обработать другой рабочий лист по другому пути.

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

Пожалуйста, помогите мне. Заранее спасибо.

+0

Что вы подразумеваете под «другим листом в каком-то другом пути»? Вы имеете в виду, что у вас больше книг, на которых вы хотите запустить код? Это очень неясно. –

+0

@MacroMan, Извините, если это неясно. Вышеприведенный код работает для открытой книги. Я хочу открыть книгу по определенному пути, когда этот макрос запущен. – arunpandiyarajhen

ответ

1

Вам нужно создать переменную рабочую книгу и назначить объект рабочей книги к нему:

Sub SplitFile() 

Dim vPath As String 
Dim wb As Workbook 
Dim wbPath As Variant 

wbPath = Application.GetOpenFileName("Excel Files (*.xls*), *.xls*") 

If wbPath = False Then Exit Sub 

Set wb = Workbooks.Open(wbPath) 

vPath = wb.Path 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
For Each xWs In wb.Sheets 
    xWs.Copy 
    Application.ActiveWorkbook.SaveAs Filename:=vPath & "\" & xWs.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 
    Application.ActiveWorkbook.Close False 
Next 
Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
End Sub 

Как вы можете видеть, как только вы назначили вашу книгу вы просто смотрите, что в вашем коде, где это необходимо.

+0

Спасибо за информацию. Когда я запускал код, он выдавал ошибку, говоря, что это ошибка времени выполнения 438. Объект не поддерживает это свойство. Любые причины для этого? – arunpandiyarajhen

+0

Появилась опечатка - см. Обновленный код –

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