【问题标题】:Copy sheet with excel vba用excel vba复制工作表
【发布时间】:2015-12-12 23:12:12
【问题描述】:

我正在尝试将工作簿 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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    具体什么 Worksheet.PageSetup 属性或属性没有被传递有点不清楚。在以下过程中,稍作修改,使孤立的空白工作表不包含在新工作簿中,“×宽××高”属性以及“在顶部重复的行”被忠实地传递到新工作表/工作簿中.

    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 个空白工作表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多