2015-08-10 5 views
2

До сих пор у меня есть это:Excel макрос для сохранения листов, как включен новый макрос книги

Sub new_book() 

    Sheets(Array("Document Data", "Invoice data", "Summary", "Invoice")).Copy 
    ActiveWorkbook.SaveAs Filename:=Range("D1") & Format(Date, "ddmmyyyy") & ".xlsx", FileFormat:=52 

End Sub 

Однако я получаю сообщение об ошибке выполнения 1004, который выдвигает на первый план линию ActiveWorkbook. Что именно не так? Спасибо за ваше время.

ответ

8

Вашего Workbook.SaveAs method используют правильный FileFormat параметра (xlOpenXMLWorkbookMacroEnabled = 52), но вы необъяснимо пытаетесь добавить имя файла с жесткой кодировкой .xlsx расширения файла, а не расширение .xlsm. В любом случае правильное расширение будет добавлено, если вы его не предоставите.

Sub new_book() 

    Sheets(Array("Document Data", "Invoice data", "Summary", "Invoice")).Copy 
    ActiveWorkbook.SaveAs Filename:=Range("D1") & Format(Date, "ddmmyyyy") , FileFormat:=52 

End Sub 

Я немного неудобно с использованием Range("D1") без указания родительского листа. Будьте очень осторожны, чтобы не пытаться использовать ограниченные символы в имени файла.

+0

Спасибо Range! (" 'Лист1' D1" !) Дает мне ошибку, так как мне следует форматировать его? – jwoff

+2

Попробуйте «Листы» («Лист1»). Диапазон («D1») ' –

+2

Как отметил Николас, вы всегда должны явно указывать родительский лист. Вы уже используете' ActiveWorkbook 'из созданной рабочей книги с скопированными листами. Если имя, которое вы хотите, находится в D4 на листе« Данные документа », вы должны использовать« Таблицы »(« Данные документа »). Диапазон (« D4 »)'. – Jeeped

3

Try следующим образом:

ActiveWorkbook.SaveAs Filename:=Range("D1") & Format(Date, "ddmmyyyy"), FileFormat:=52 
+0

Большое спасибо – jwoff

0

"СОХРАНЕНИЕ ФАЙЛА С сегодняшними ДАТА КАК ИМЯ В "D: \ BACKUP"! Папки

sub new_sheet() 
Dim objFSO As Object 
Dim objFolder As Object 
Dim objFile As Object 
Dim i As Integer 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFSO.GetFolder("D:\BACKUP") 

todays_date = Date$ 

For Each objFile In objFolder.Files 

If objFile.Name = todays_date & ".xls" Then 
    objFile.Delete 

End If 

Next objFile 



Workbooks.Add 

ActiveWorkbook.SaveAs "D:\BACKUP" & todays_date & ".xls"  
end sub 
Смежные вопросы