0

「個々の範囲を印刷する」シリーズの質問の最後の問題であるといいのですが、PageSetup オブジェクトをあるページから別のページにコピーする方法をより知識のある読者に謙虚に尋ねます。

簡単にできるのでDest.PageSetup = Source.PageSetup、同じことを行う関数を作成する必要がありました。要約形式は以下のとおりです。

Public Sub CopyPageSetup(ByVal Source As Worksheet, ByRef Dest As Worksheet)
    With Source.PageSetup
        Call SetParam(.AlignMarginsHeaderFooter, Dest.PageSetup.AlignMarginsHeaderFooter)
        ' etc
        Call SetParam(.Zoom, Dest.PageSetup.Zoom)
    End With
End Sub

そして SetParam は単純です:

Public Sub SetParam(ByVal Source As Variant, ByRef Dest As Variant)
    If Dest <> Source Then Dest = Source
End Sub

ただし、これはページ設定をコピーしません-この関数を呼び出した直後に呼び出しますtmp.PrintPreview(tmpは一時的なワークシートです)。出力は、関数を呼び出したことがない場合と同じです。

これは蜃気楼ですか (それはあなたに適していますか?)。それが蜃気楼でない場合、これを修正するにはどうすればよいですか?

4

1 に答える 1

2

私のバージョンの Excel (2003) は .AlignMarginsHeaderFooter プロパティをサポートしていませんが、ズームと BottomMargin プロパティを取得して、新しいページに問題なくコピーできました。

Public Sub CopyPageSetup(ByVal Source As Worksheet, ByRef Dest As Worksheet)
   With Dest.PageSetup
        .Zoom = Source.PageSetup.Zoom
        .BottomMargin = Source.PageSetup.BottomMargin
   End With
End Sub
于 2009-07-06T15:46:25.070 に答える