У меня есть файл шаблона с таблицами на основе формул Outlook View и Outlook Summary, которые вычисляются из таблиц данных в шаблоне. Все содержимое этих листов находится в диапазонах, указанных в соответствующих кодах диапазонов. Я хотел бы, чтобы эти листы были скопированы в новую книгу и сохранены как имя файла, указанное в шаблоне CONTROLS в ячейке G12. Моя проблема в том, что я могу заставить его работать только с одним из листов, а не с обоими.

Например, это работает:

Sub idpattach()

Dim myWB As New Workbook
Set myWB = ActiveWorkbook

Sheets("Outlook View").Copy
Sheets("Outlook View").Range("a1:bm74").Copy
Sheets("Outlook View").Range("a1:bm74").PasteSpecial xlPasteValues

Sheets("CRM Outlook View").Select

ActiveWorkbook.SaveAs myWB.Sheets("CONTROLS").Range("g12").Value, FileFormat:=51

Application.DisplayAlerts = False

ActiveWorkbook.Save
ActiveWorkbook.Close

Sheets("CONTROLS").Select

End Sub

Но это не так:

Sub idpattach()

Dim myWB As New Workbook
Set myWB = ActiveWorkbook

Sheets("Outlook View").Copy
Sheets("Outlook View").Range("a1:bm74").Copy
Sheets("Outlook View").Range("a1:bm74").PasteSpecial xlPasteValues

Sheets("Outlook Summary").Copy
Sheets("Outlook Summary").Range("a1:q12").Copy
Sheets("Outlook Summary").Range("a1:q12").PasteSpecial xlPasteValues

Sheets("CRM Outlook View").Select

ActiveWorkbook.SaveAs myWB.Sheets("CONTROLS").Range("g12").Value, FileFormat:=51

Application.DisplayAlerts = False

ActiveWorkbook.Save
ActiveWorkbook.Close

Sheets("CONTROLS").Select

End Sub

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

Спасибо

**РЕДАКТИРОВАТЬ

Получилось так, но есть ли у кого-нибудь советы, как это сделать лучше?

Sub idpattach()

Dim myWB As New Workbook
Set myWB = ActiveWorkbook

Sheets(Array("Outlook View", "CRM Outlook Summary")).Copy

Sheets("Outlook View").Range("a1:bm74").Copy
Sheets("Outlook View").Range("a1:bm74").PasteSpecial xlPasteValues

Sheets("Outlook Summary").Range("a1:q12").Copy
Sheets("Outlook Summary").Range("a1:q12").PasteSpecial xlPasteValues

Sheets("CRM Outlook View").Range("A1").Select

ActiveWorkbook.SaveAs myWB.Sheets("CONTROLS").Range("g12").Value, FileFormat:=51

Application.DisplayAlerts = False

ActiveWorkbook.Save
ActiveWorkbook.Close

Sheets("CONTROLS").Select

End Sub
-1
Julian73 17 Ноя 2017 в 15:42

1 ответ

Лучший ответ

Их можно упростить

Sheets("Outlook View").Range("a1:bm74").Copy
Sheets("Outlook View").Range("a1:bm74").PasteSpecial xlPasteValues

Sheets("Outlook Summary").Range("a1:q12").Copy
Sheets("Outlook Summary").Range("a1:q12").PasteSpecial xlPasteValues

В

Sheets("Outlook View").Range("a1:bm74").Copy Destination:= Sheets("Outlook View").Range("a1:bm74").PasteSpecial xlPasteValues
Sheets("Outlook Summary").Range("a1:q12").Copy Destination:= Sheets("Outlook Summary").Range("a1:q12").PasteSpecial xlPasteValues

РЕДАКТИРОВАТЬ - Полный блок можно изменить на ..

Sub idpattach()

Dim myWB As New Workbook
Dim outlookView As Worksheet
Dim outlookSummary As Worksheet

Set myWB = ActiveWorkbook
Set outlookView = Sheets("Outlook View")
Set outlookSummary = Sheets("Outlook Summary")

Sheets(Array("Outlook View", "CRM Outlook Summary")).Copy

outlookView.Range("a1:bm74").Copy Destination:= outlookView.Range("a1:bm74").PasteSpecial xlPasteValues
outlookSummary.Range("a1:q12").Copy Destination:= outlookSummary.Range("a1:q12").PasteSpecial xlPasteValues

Sheets("CRM Outlook View").Range("A1").Select

ActiveWorkbook.SaveAs myWB.Sheets("CONTROLS").Range("g12").Value, FileFormat:=51

Application.DisplayAlerts = False

ActiveWorkbook.Save
ActiveWorkbook.Close

Sheets("CONTROLS").Select

End Sub
0
Skaterhaz 17 Ноя 2017 в 14:45