質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

931閲覧

エクセルから開いたワードを、閉じずに再度作成する。

ice930

総合スコア99

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/12/19 08:40

以下のマクロを実行すると、A5サイズのワードが作成されます。
このワードファイルを消さずに再度実行すると、用紙サイズ、余白の設定のみが初期設定(A4サイズ)に戻りデータのみ記入されます。

質問
データを見る限り、新しく作成されたデータをアクティブにしている(なのでデータが書き込まれる)と思うのですが、なぜ用紙サイズと余白サイズのみ新しく作成された文書は初期設定になっているのでしょうか。

使用方法として毎回消せばいいのですが、今後の為に対策と改善方法を知っておきたいです!
よろしくお願いします!!

Sub 裏紙作成(i As Long) Dim wdApp As Word.Application Dim wdDoc As Word.Document Dim cla As String Dim name As String Dim pro As String Dim ADR As String cla = Cells(i, 8) name = Cells(i, 3) ADR = Cells(i, 2) & Cells(i, 4) Set wdApp = CreateObject("Word.Application") Set wdDoc = wdApp.Documents.Add wdDoc.Activate wdApp.Visible = True Application.PrintCommunication = False With ActiveDocument.PageSetup .PageWidth = MillimetersToPoints(148) .PageHeight = MillimetersToPoints(210) .TopMargin = MillimetersToPoints(12.7) .BottomMargin = MillimetersToPoints(12.7) .LeftMargin = MillimetersToPoints(12.7) .RightMargin = MillimetersToPoints(12.7) End With Application.PrintCommunication = True With wdApp .Selection.Font.name = "HGP行書体" 'フォント Call .Selection.Goto(What:=wdGoToPage, Which:=wdGoToFirst, Count:=pageNo) 'カーソルを置く .Selection.Font.Size = 11 For g = 1 To 13 .Selection.TypeParagraph '改行 Next .ActiveDocument.Range(Start:=.ActiveDocument.Paragraphs(1).Range.Start, End:=.ActiveDocument.Paragraphs(1).Range.End).Font.Size = 28 .ActiveDocument.Range(Start:=.ActiveDocument.Paragraphs(4).Range.Start, End:=.ActiveDocument.Paragraphs(4).Range.End).Font.Size = 44 .ActiveDocument.Range(Start:=.ActiveDocument.Paragraphs(5).Range.Start, End:=.ActiveDocument.Paragraphs(5).Range.End).Font.Size = 26 .ActiveDocument.Range(Start:=.ActiveDocument.Paragraphs(6).Range.Start, End:=.ActiveDocument.Paragraphs(6).Range.End).Font.Size = 38 .ActiveDocument.Range(Start:=.ActiveDocument.Paragraphs(7).Range.Start, End:=.ActiveDocument.Paragraphs(9).Range.End).Font.Size = 20 .ActiveDocument.Goto(What:=wdGoToLine, Count:=1).Text = cla .ActiveDocument.Goto(What:=wdGoToLine, Count:=4).Text = name .ActiveDocument.Goto(What:=wdGoToLine, Count:=13).Text = ADR .ActiveDocument.Range(Start:=.ActiveDocument.Paragraphs(1).Range.Start, End:=.ActiveDocument.Paragraphs(10).Range.End).ParagraphFormat.Alignment = wdAlignParagraphCenter End With End 'リモートサーバーエラー対策 End Sub

備考:上記の内、対象コードは以下です。

Application.PrintCommunication = False With ActiveDocument.PageSetup .PageWidth = MillimetersToPoints(148) .PageHeight = MillimetersToPoints(210) .TopMargin = MillimetersToPoints(12.7) .BottomMargin = MillimetersToPoints(12.7) .LeftMargin = MillimetersToPoints(12.7) .RightMargin = MillimetersToPoints(12.7) End With Application.PrintCommunication = True

よろしくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Excel 2019 + Word 2019 環境にて事象再現しました。
2回目の「文書2」の作成の際に、1回目の「文書1」の用紙サイズの指定に対して設定が行われていました。

対策としては、以下の ActiveDocument 箇所を wdDoc に変えて試してみて下さい。

VB

1'With ActiveDocument.PageSetup 2With wdDoc.PageSetup

■ 参考(ウォッチの内容)
イメージ説明

投稿2021/12/19 09:09

編集2021/12/19 09:22
cx20

総合スコア4633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ice930

2021/12/19 11:22

飛ばされたんではなくて最初のデータ「文書1」に設定されてたんですね!! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問