• ベストアンサー

Excelのマクロについて質問です。

ブックAのシートaの印刷に関する設定を、別のブックBのシートbにコピーするマクロを教えていただけませんか? 印刷に関する設定には、ページ設定で設定されるすべての情報です。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.2

このようなやり方でもできる事が解りました。 a そのものをコピーして、その上にb のセル全体をコピペ。a を削除してb ☞a に名前変更。 a の印刷情報が残ります。 ' Sub Macro2()   Dim O As Object '   Set O = ThisWorkbook.Sheets("b")   Workbooks("A.xlsx").Sheets("a").Copy After:=O   O.Cells.Copy [A1]   Application.DisplayAlerts = False   Sheets("b").Delete   ActiveSheet.Name = "b" End Sub

ryou4649
質問者

お礼

先ほどは失礼いたしました。m(_ _)m 出先でスマホで見ただけでしたので勘違いしました。 それにしてもこの方法は素晴らしいです。 目から鱗というか、コロンブスの卵というか、ゴルディアスの結び目というか… こんな方法でできるとは驚きました。 ありがとうございました。

その他の回答 (3)

  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.4

>1つ1つの項目の値を調べて記述が大変 私のプログラムをそのままコピペすればいいです。それとも信用できないのですか? 自分で調べないと気が済まない性格ですか? 私が信用できないなら、imogasi さんが上げたサイトを参考にして下さい。 長いプログラムが嫌なら、2番目に開けた方法があります。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

>印刷に関する設定 は、 With Worksheets("Sheet1") .PageSetup。 のように、シート単位の設定です。この認識は、質問者の>ブックAのシートaの印刷に関する設定、と合っていると思います。WorkBook単位ではないということ。 ーーー Pagesetupで設定できる項目は、 https://learn.microsoft.com/ja-jp/office/vba/api/excel.pagesetup のプロパティで示されている項目が全てのはずです。 ーー この項目を、VBEにコピーし、各項目について、「ブックAのシートaの印刷に関する設定」Pagesetupに出てくる対応項目に(VBAコードベースで設定し、=>各行右辺に、それらに定義済み定数をコピペ)再作成するのが早いと思います。 または、現状の「ブックAのシートa」のVBAコードだけをコピペするのも、どうでしょう。 その際は、記述のない、既定値はブックAのシートaとブックBのシートbは同じになると思います。 ーー 現状注目している項目だけ、一発的にソース的に、コピーする方法は提供されていないと思います。 一般論として、モジュールのエクスポートというのがあるようですが、使えるかどうかやったことがありません。 == 工夫すればVBEのVBAコードベースで同じものを、別に作る方法はありそうですが、普通は使われないのではないですか。 http://officetanaka.net/excel/vba/vbe/ VBAでVBEを操作する のような延長線の方法

ryou4649
質問者

お礼

大変ていねいな回答ありがとうございました。

  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.1

マクロを入れるのはB [A.xlsx]a ☞[B.xlsx]b とします。 両方開いている前提です。 一度に入れるのは無理で、1つづつ入れていくしかないようです。 Option Explicit ' Sub Macro1()   Dim I As Object '   Set I = Workbooks("A.xlsx").Sheets("a").PageSetup '   With Workbooks("B.xlsm").Sheets("b").PageSetup     .PrintTitleRows = I.PrintTitleRows     .PrintTitleColumns = I.PrintTitleColumns     .PrintArea = I.PrintArea     .LeftHeader = I.LeftHeader     .CenterHeader = I.CenterHeader     .RightHeader = I.RightHeader     .LeftFooter = I.LeftFooter     .CenterFooter = I.CenterFooter     .RightFooter = I.RightFooter     .LeftMargin = I.LeftMargin     .RightMargin = I.RightMargin     .TopMargin = I.TopMargin     .BottomMargin = I.BottomMargin     .HeaderMargin = I.HeaderMargin     .FooterMargin = I.FooterMargin     .PrintHeadings = I.PrintHeadings     .PrintGridlines = I.PrintGridlines     .PrintComments = I.PrintComments     .CenterHorizontally = I.CenterHorizontally     .CenterVertically = I.CenterVertically     .Orientation = I.Orientation     .Draft = I.Draft     .PaperSize = I.PaperSize     .FirstPageNumber = I.FirstPageNumber     .Order = I.Order     .BlackAndWhite = I.BlackAndWhite     .Zoom = I.Zoom     .PrintErrors = I.PrintErrors     .OddAndEvenPagesHeaderFooter = I.OddAndEvenPagesHeaderFooter     .DifferentFirstPageHeaderFooter = I.DifferentFirstPageHeaderFooter     .ScaleWithDocHeaderFooter = I.ScaleWithDocHeaderFooter     .AlignMarginsHeaderFooter = I.AlignMarginsHeaderFooter     .EvenPage.LeftHeader.Text = I.EvenPage.LeftHeader.Text     .EvenPage.CenterHeader.Text = I.EvenPage.CenterHeader.Text     .EvenPage.RightHeader.Text = I.EvenPage.RightHeader.Text     .EvenPage.LeftFooter.Text = I.EvenPage.LeftFooter.Text     .EvenPage.CenterFooter.Text = I.EvenPage.CenterFooter.Text     .EvenPage.RightFooter.Text = I.EvenPage.RightFooter.Text     .FirstPage.LeftHeader.Text = I.FirstPage.LeftHeader.Text     .FirstPage.CenterHeader.Text = I.FirstPage.CenterHeader.Text     .FirstPage.RightHeader.Text = I.FirstPage.RightHeader.Text     .FirstPage.LeftFooter.Text = I.FirstPage.LeftFooter.Text     .FirstPage.CenterFooter.Text = I.FirstPage.CenterFooter.Text     .FirstPage.RightFooter.Text = I.FirstPage.RightFooter.Text   End With End Sub

ryou4649
質問者

補足

>一度に入れるのは無理で、1つづつ入れていくしかないようです。 やっばり、そうなんですか… 1つ1つの項目の値を調べて記述が大変なので、一気にコピーする方法はないかと思ったのですが…

関連するQ&A

専門家に質問してみよう