Excel宏以创建报告文件

时间:2015-08-11 15:23:05

标签: excel-vba file-io vba excel

我有一个包含两个工作表的Excel工作簿,即报表和数据。我想将“报告”选项卡的一部分写入新的工作簿文件(名为“名册”的打印范围)并保留格式,打印设置等。

下面是我到目前为止的宏 - 它可以工作但是将整个“报告”选项卡写入文件,而不仅仅是名单部分,并且它会丢失对结果文件的收件人有用的打印范围。

Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+t
'
  Dim Output As Workbook
  Dim FileName As String


  'This part updates the roster - grabs the next
  'roster value and move it to A1, thus updating the report

  Range("A1").Select
  Selection.End(xlDown).Select
  Selection.Copy
  Range("A1").Select
  ActiveSheet.Paste
  Application.CutCopyMode = False
  Selection.End(xlDown).Select
  Selection.ClearContents
  Range("A1").Select

 'Now we write the Report worksheet to a new file using
 'the custom filename in cell AA1

  Set Output = Workbooks.Add
  Application.DisplayAlerts = False

  ThisWorkbook.Worksheets("Report").Cells.Copy

  Selection.PasteSpecial Paste:=xlPasteValues, _
  Operation:=xlNone, SkipBlanks:=True, Transpose:=False

  Selection.PasteSpecial Paste:=xlPasteFormats

  FileName = Range("AA1").Value

  Output.SaveAs FileName
  Output.Close

End Sub

1 个答案:

答案 0 :(得分:0)

由于行

,您的代码正在复制整个“报告”标签
ThisWorkbook.Worksheets("Report").Cells.Copy

.Cells获取工作表的所有单元格。要获得一部分,你可以尝试类似

ThisWorkbook.Worksheets("Report").Range(FirstCell, LastCell).Copy

其中FirstCell和LastCell是您要复制的范围的开头和结尾。要复制打印区域,您可以尝试类似

的内容
DestinationSheet.PageSetup.PrintArea = OriginalSheet.PageSetup.PrintArea

希望有所帮助