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

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

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

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

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

Q&A

解決済

3回答

6155閲覧

VBAでエクセルからワードのヘッダーを設定したい。

qonoha

総合スコア17

VBA

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

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

0グッド

0クリップ

投稿2019/05/12 08:00

前提・実現したいこと

ワードのヘッダーをエクセルから設定しようとしています。
最終的には、マクロのエクセルと同じフォルダに格納されているワードファイルを対象に機能させたいです。

自分なりに書いてみたのですが、次のエラーメッセージが出てしまい、思った様な結果を得られておりません。
大変お手数ですが、お知恵を拝借できないでしょうか。
よろしくお願い致します。

発生している問題・エラーメッセージ

Set hdr = dc.Sections(1).Headers '★☆型が一致しません★☆

該当のソースコード

VBA

1Sub ヘッダーに文字列を入れる3() 2 3Application.ScreenUpdating = False 4Set mybook = ThisWorkbook.Sheets(1) 5 6 Dim path As String 7 Dim wdapp As Word.Application 8 Dim wddoc As Word.Document 9 Dim wdrg As Word.Range 10 Dim c As Long 11 Dim waitTime As Variant 12 13 14 Set wdapp = CreateObject("Word.application") 15 wdapp.Visible = True 16 path = ThisWorkbook.path & "*.doc?" 17 18Dim sec As Section 19Dim hdr As HeaderFooter 20Dim fName As String, dc As Document 21fName = Dir(ThisWorkbook.path & "*.doc?", vbNormal) 22Do While fName <> "" 23 24Set dc = wdapp.Documents.Open(ThisWorkbook.path & "\" & fName) 25 waitTime = Now + TimeValue("0:00:01") 26 Application.Wait waitTime 27 28Set hdr = dc.Sections(1).Headers '★☆型が一致しません★☆ 29 30With hdr.Range 31.Delete 32.Paragraphs.Alignment = wdAlignParagraphRight 33 34.Text = mybook.Range("A1").Value 35 36End With 37 38dc.Close True 39fName = Dir() 40Loop 41Application.ScreenUpdating = True 42End Sub 43

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

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

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

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

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

guest

回答3

0

他の方からも指摘があるように、Headers は、HeadersFootersコレクションです。
HeadersFootersコレクションは、HeaderFooterオブジェクトのコレクションなので、HeadersFootersコレクションにインデックス(wdHeaderFooterPrimary, wdHeaderFooterEvenPages, wdHeaderFooterFirstPage)で指定してHeaderFooterオブジェクトを取得します。

HeaderFooter オブジェクト (Word) | Microsoft Docs

提示のコードを修正するなら、

vba

1 Dim hdr As HeaderFooter 2 3 Set hdr = dc.Sections(1).Headers(wdHeaderFooterPrimary) 4 With hdr.Range 5' .Delete '上書きされるので必要なし 6 .Paragraphs.Alignment = wdAlignParagraphRight 7 .Text = mybook.Range("A1").Value 8 End With

投稿2019/05/13 05:27

編集2019/05/14 11:34
hatena19

総合スコア33715

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

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

qonoha

2019/05/19 05:16

ご回答頂きありがとうございました。
guest

0

恐らくhdrの定義の型が違っているかと。
Headersで取得できるのはHeaderFooterオブジェクトではなく、HeadersFootersコレクションです。
https://docs.microsoft.com/ja-jp/office/vba/api/word.section.headers

VBA

1Dim hdr As HeaderFooter 23Dim hdr As HeadersFooters

投稿2019/05/13 02:59

ttyp03

総合スコア16998

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

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

qonoha

2019/05/19 05:16

ご回答頂きありがとうございました。
guest

0

ベストアンサー

SETの仕方が分からなかったので冗長になっていますが
一応出来たので置いておきます。

VBA

1' Set hdr = dc.Sections(1).Headers '★☆型が一致しません★☆ 2' With hdr.Range 3' .Delete 4' .Paragraphs.Alignment = wdAlignParagraphRight 5' .Text = mybook.Range("A1").Value 6' End With 7 dc.Sections(1).Headers(1).Range.Delete 8 dc.Sections(1).Headers(1).Range.Paragraphs.Alignment = wdAlignParagraphRight 9 dc.Sections(1).Headers(1).Range.Text = mybook.Range("A1").Value

投稿2019/05/13 02:45

torisan

総合スコア678

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

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

qonoha

2019/05/19 05:16

ご回答頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問