使用excel vba复制表格

时间:2015-12-12 23:12:13

标签: excel vba excel-vba

我正在尝试将一张工作簿从工作簿A复制到新添加的工作簿B. 我遇到的问题是它没有保留PageSetup。具有复制的工作表的新工作簿不适合原始源所在的一个页面。 我试图研究这个,但不能确定我是否需要复制PageSetup中的所有属性,或者它是否应该在复制整个工作表时起作用。 到目前为止,这是我的代码:

     Public Sub makeCopies(ByVal seller As String)
        Dim thisWB As Workbook
        Dim newWB As Workbook
        Set thisWB = ActiveWorkbook

        Set newWB = Workbooks.Add
        On Error GoTo ErrorHandler:
        thisWB.Sheets(1).Copy Before:=newWB.Sheets(1)
        newWB.Activate

        newWB.SaveAs fileName:=seller & ".xlsx"
        newWB.Close
        thisWB.Activate
        Exit Sub

    ErrorHandler:
        MsgBox "Error" & Err.Number & Err.Description
        newWB.Close
    End Sub

1 个答案:

答案 0 :(得分:1)

对于 Worksheet.PageSetup属性或属性未被传输,有点不清楚。在下面的过程中,略微修改,以便孤立的空白工作表不包含在新工作簿中,'×wide by×tall'属性以及'在顶部重复的行'被忠实地传递到新工作表/工作簿

Sub main()
    makeCopies "makeCopies"
End Sub

Public Sub makeCopies(ByVal seller As String)
   Dim thisWB As Workbook
   Dim newWB As Workbook
   Set thisWB = ActiveWorkbook

   On Error GoTo ErrorHandler:
   thisWB.Sheets(1).Copy
   Set newWB = ActiveWorkbook

   newWB.SaveAs Filename:=Environ("TEMP") & Chr(92) & seller & ".xlsx"
   newWB.Close
   thisWB.Activate
   Exit Sub

ErrorHandler:
   MsgBox "Error" & Err.Number & Err.Description
   newWB.Close
End Sub

将工作表复制到“无目的地”会创建一个新工作簿,该工作簿包含ActiveWorkbook property。唯一的工作表将是原始的直接副本,除非您出于某种原因在新工作簿中需要1-3个空白工作表,否则它似乎更合乎需要。