VBA在不更改格式的情况下复制图纸

VBA在不更改格式的情况下复制图纸,vba,excel,Vba,Excel,当我将一些工作表复制到另一个工作簿时,我的代码以某种方式改变了格式(行高和列宽),对此我有一个问题-这是打印到pdf之前的中间步骤。在工作表“1”、“2”和“3”中,工作表设置了一个仅覆盖一页A4的打印区域,但当代码将所选工作表复制到新的临时工作簿时,所有行和列都增加了(增加了像素),因此打印区域现在覆盖了几页。有人能帮忙吗 Sub Print_to_pdf() Application.ScreenUpdating = False Set Output_Sheets = Sheets(Arr

当我将一些工作表复制到另一个工作簿时,我的代码以某种方式改变了格式(行高和列宽),对此我有一个问题-这是打印到pdf之前的中间步骤。在工作表“1”、“2”和“3”中,工作表设置了一个仅覆盖一页A4的打印区域,但当代码将所选工作表复制到新的临时工作簿时,所有行和列都增加了(增加了像素),因此打印区域现在覆盖了几页。有人能帮忙吗

Sub Print_to_pdf()

Application.ScreenUpdating = False

Set Output_Sheets = Sheets(Array("1", "2", "3"))

Output_Sheets.Select
Output_Sheets.Copy

ChDir "XXX"
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
    "XXX\Print_to_pdf".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=False

ActiveWorkbook.Close savechanges:=False

Application.ScreenUpdating = True

End Sub

我还是不明白你为什么要抄那些纸。要导出图纸,只需使用以下命令:

Sub Print_to_pdf()
    Dim Output_Sheets As Sheets

    Application.ScreenUpdating = False

    Set Output_Sheets = Sheets(Array("1", "2", "3"))
    Output_Sheets.Select

    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "c:\temp\Print_to_pdf.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False

    Application.ScreenUpdating = True

End Sub

如果导出的PDF文件与任何打印机之间存在差异,则这可能是由于打印机驱动程序和PDF导出引擎的差异所致。我认为解决这个问题的唯一方法是反复尝试,直到它同时适合(打印机和导出)。

您是否尝试过保存一份准确的副本,删除不必要的纸张,然后打印到PDF。当然,这有点麻烦,但同时这应该(几乎可以肯定)保持格式。是的,这是可行的,但代码是一系列代码的一部分,这些代码组合使用不同的表单保存10-20个不同的pdf,因此以“旧方式”打印到pdf会导致过程过长。但是谢谢你的回复!不太清楚,但您是导出复制的图纸还是原始图纸?如果导出复制的图纸:是否尝试导出带有该代码的原始图纸?我可以想象,问题不在于复制操作,而在于输出不准确。我习惯于导出工作表的结果与打印工作表的结果不同(因为pdf导出引擎不准确)。我有一份原始工作簿,其中有工作表“1”、“2”和“3”。VBA使用代码“Output_Sheets.copy”创建一个新的临时工作簿,然后将其另存为pdf。但如果这一步不是必需的,那么我愿意采用另一种保存为pdf的方法。