Excel VBA宏脚本,用于将模板工作簿中工作表中的格式和值复制到新的附件工作簿中

时间:2017-11-17 12:42:51

标签: excel vba excel-vba

我有一个基于公式的模板文件,用于从模板中的数据表计算的Outlook View和Outlook Summary。这些表格中的所有内容都在相应范围代码中指定的范围内找到。我想将这些工作表复制到新工作簿中,并保存为单元格G12中模板表CONTROLS上的文件名。我的问题是我只能让它与其中一张纸一起使用,而不是两者兼而有之。

例如,这有效:

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 个答案:

答案 0 :(得分:0)

这些可以简化

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

OnCreated

编辑 - 可以将整个块修改为..

OnRenamed