vbscriptでWordのヘッダーを変更

このQ&Aのポイント
  • vbscriptを使用してWordのヘッダーを変更する方法について質問です。
  • 下記のコーディングを試しましたが、ヘッダーの変更ができず、本文に1111が記載されてしまいます。
  • Wordのヘッダー変更について詳しい方、助けてください。
回答を見る
  • ベストアンサー

vbscriptでWordのヘッダーを変更

vbscriptでWordのヘッダーを変更したく、下記のコーディングをしましたが、ヘッダーの変更ができません。 (本文に"1111"が記載されてしまいます。) どこが違うか教えて頂けませんでしょうか? vbscriptでWordをコーディングするのは初めてです。 よろしくお願いします。 Set objWord = CreateObject("Word.Application") Set objDoc = objWord.Documents.Open ("C:\test\test.doc") objDoc.ActiveWindow.ActivePane.View.SeekView=wdSeekCurrentPageHeader objWord.Selection.ParagraphFormat.Alignment=wdAlignParagraphRight objWord.Selection.Text="1111" objDoc.ActiveWindow.ActivePane.View.SeekView=wdSeekMainDocument objWord.ActiveDocument.PrintOut objWord.ActiveDocument.Close (True) objWord.Quit

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

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

> vbscriptでWordをコーディングするのは初めてです。 念の為確認ですが・・・ 各定数(wdSeekCurrentPageHeaderやwdAlignParagraphRight)は、宣言してますか? VBScriptは、参照設定できませんから、定数の宣言は取り込めません。 自分で「Constステートメント」で宣言する必要がありますけど・・・ #値は、WordVBAのオブジェクトブラウザで確認できます。

olive_surf
質問者

お礼

dsuekichiさん Const wdSeekCurrentPageHeader=9 Const wdAlignParagraphRight=2 で宣言したら、うまくいきました。 ありがとうございました。

関連するQ&A

  • VBScriptでのWord印刷

    お世話になります。 VBScriptよりWordを開いて印刷を行うプログラムを作成しているのですが、 「印刷中です。Wordを終了すると印刷待ちのすべてのジョブがキャンセルされます。Wordを終了しますか?」 が表示されてしまいます。 印刷命令を発行してファイルを閉じる際に表示されていると思いますが、このアラートを表示しない方法はあるのでしょうか? どなたかご存知でしたらお教え下さい。 宜しくお願い致します。 実行環境 OS   Win2000 Office 2000 プログラム(一部抜粋) Set objWord = CreateObject("Word.Application") objWord.Documents.Open(ファイルパス) Set objWordDoc = objWord.ActiveDocument objWordDoc.PrintOut objWordDoc.Close

  • ワード2007、ヘッダーのマクロでフォントサイズを変更したい。

    ワード2007、ヘッダーのマクロでフォントサイズを変更したい。 windows7、word2007 ヘッダーにファイル名、ページ数、作成日を表示させるマクロを”マクロの記録”で作りました。 夫々にはフィールドを指定してあります。 Sub header() ' ' header Macro ' ' If ActiveWindow.View.SplitSpecial <> wdPaneNone Then ActiveWindow.Panes(2).Close End If If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _ ActivePane.View.Type = wdOutlineView Then ActiveWindow.ActivePane.View.Type = wdPrintView End If ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _ "FILENAME \* DBCHAR ", PreserveFormatting:=True Selection.TypeText Text:=vbTab Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _ "PAGE \* ArabicDash ", PreserveFormatting:=True Selection.TypeText Text:=vbTab & " " Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _ "CREATEDATE \@ ""作成日 :ggge年M月d日"" ", PreserveFormatting:=True Selection.TypeParagraph Selection.TypeText Text:=vbTab & vbTab & " " Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _ "SAVEDATE \@ ""更新日 :ggge年M月d日"" ", PreserveFormatting:=True WordBasic.GoToFooter Selection.TypeText Text:=vbTab Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _ "PAGE ", PreserveFormatting:=True Selection.TypeText Text:="/" Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _ "NUMPAGES ", PreserveFormatting:=True End Sub 文書本文の文字サイズは13ptですがフッター部は9ptにしたいと思います。 修正する方法を教えて貰えるとありがたいです。 よろしくお願いいたします。

  • Perl でワードファイルのヘッダーを取得する

    Perl でワードファイルのヘッダーを取得するには? perl, v5.10.0 windowsXP ワードファイル:word2003 <行いたいこと> C:\temp\word.doc のワードファイルのヘッダー(複数行)を取得したい。 <状況> インターネットでワードファイルの本文は取得できる例がありましたが、 ヘッダーを取得する方法がわかりませんでした。 下記のプログラムでは ・ワードのヘッダーは 0 が表示される。 ・ワードの本文は取得できて表示される。 (ヘッダーを表示しようといろいろしてみましたが、できていません) よろしくお願いいたします。 <プログラム> use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Word'; my $word = Win32::OLE->GetActiveObject('Word.Application') || Win32::OLE->new('Word.Application', 'Quit') || die; # 読み込み my $doc = $word->Documents->Open('C:\temp\word.doc') || die; my $headers = $doc ->ActiveWindow->ActivePane->View->{SeekView} = wdSeekCurrentPageHeader; ########## ヘッダー取得(→うまくいかない)########## print "$headers->{SelectionTypeText}\n"; #null foreach (in $headers) { print $_->{SelectionTypeText}->{'Text'} . "\n"; #null print $_ . "\n"; #0 print $_->{'Text'} . "\n"; #null print $headers . "\n"; #0 } ########## 本文取得(→OK)########## my $paras = $doc->Paragraphs; foreach (in $paras) { print $_->Range->{'Text'} . "\n"; } $doc->Close();

  • エクセルVBAでワード文書をPDF保存

    質問の仕方が悪かったようですので先日の質問 https://okwave.jp/qa/q9876787.html を取り消し、再度質問させていただきます。 エクセル2016のワークシート上にオブジェクトの挿入でワードの文書ファイルをアイコンで貼り付けています。VBAでこの文書ファイルを開き、PDFとして保存しようと思います。 見よう見まねで以下のようなコードを書いてみまた。 '参照設定 Microsoft Word 16.0 Object Library Sub test01() Dim objWord As Word.Application Set objWord = CreateObject("Word.Application") objWord.Visible = True Dim objDoc As Word.Document Dim FileName As String FileName = Application.GetSaveAsFilename(, "PDFファイル,*.pdf", , "PDF保存") Set objDoc = Worksheets("Sheet1").OLEObjects(1).Verb(Verb:=xlVerbOpen) objDoc.ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF objDoc.Close End Sub これで、文書ファイルは開くのですが、「オブジェクトが必要です」のエラーがでて、Set objDocがEmptyのままPDF保存ができません。どのように直せばいいのでしょうか? ご教示ください。

  • VBSでワードに画像を貼り付ける

    VBSを使用して、 2ページあるワードテンプレートの2ページ目に、 画像を貼り付けたいのですが、方法がわかりません。 方法がありましたら、教えていただけますと助かります。 ちなみに、下記のようなhoge.vbsを書いて試行錯誤していますが、 この場合、1ページ目に画像が張り付いてしまいます… --- Dim word Dim doc Set word = CreateObject("Word.Application") word.visible=true word.Activate word.WindowState=wdWindowStateNormal word.Documents.Open "C:\***\***.dot" word.Selection.MoveDown 5, 17     //⇒17行後に2ページ目へ移行するデータです。 word.ActiveDocument.Shapes.AddPicture "C:\***\***.bmp" word.Selection.EndKey word.ActiveWindow.SetFocus ---

  • Word2007 文字変換マクロについて

    以下のvbsファイルがエラーなってしまいます。 どう直したらよいかご教授お願いします。(マクロ初心者) Const wdReplaceAll = 2 Set objWord = CreateObject("Word.Application") objWord.Visible = False Set fs = CreateObject("Scripting.FileSystemObject") Set objFolder = fs.GetFolder("D:\test") For Each objFile in objFolder.Files If Right(LCase(objFile.Name), 5) = ".docx" Then Set objDoc = objWord.Documents.Open(objFolder.Path & "\" & objFile.Name) Set objSelection = objWord.Selection ' objSelection.Find.Text = "A" ' objSelection.Find.Forward = True ' objSelection.Find.MatchWholeWord = True ' objSelection.Find.Replacement.Text = "B" '---------------------------------------------------------- Open "D:\test\2.csv" For Input As #1 While Not EOF(1) Line Input #1, a s = Split(a, ",") MsgBox s(0) & " " & s(1) Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find '---------------------------------------------------------- objSelection.Find.Text = s(0) objSelection.Find.Forward = True objSelection.Find.MatchWholeWord = True objSelection.Find.Replacement.Text = s(1) '---------------------------------------------------------- objSelection.Find.Wrap = wdFindContinue objSelection.Find.Format = False objSelection.Find.MatchCase = False objSelection.Find.MatchWholeWord = False objSelection.Find.MatchByte = False objSelection.Find.MatchAllWordForms = False objSelection.Find.MatchSoundsLike = False objSelection.Find.MatchWildcards = False objSelection.Find.MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll Wend Close #1 End Sub '---------------------------------------------------------- If objSelection.Find.Execute( ,,,,,,,,,,wdReplaceAll) Then objDoc.Save End If objDoc.Close End If Next objWord.Quit

  • フォルダ内の複数のファイルで置換したい

    お世話になります。 現在、フォルダ内にWord及びExcelファイルがたくさんありまして、 その中の”2009-11-30”という語を”2009-12-22”に 一括で置換したいと思っています。 置換したい語は、Wordではヘッダに、Excelではフッタにあります。 ネットで検索したらスクリプトという物があることを知り、また、 以下のようなword用のスクリプトを見つけたので、 置換する用語の部分だけ変更したのですが、 ヘッダに書いてある文字は置換してくれませんでした。 (ヘッダ以外の文字で試したらOKでした) これは、アイコンをダブルクリックして 対象のファイルが入っているフォルダを指定するものらしいです。 ------------------------------- '#1 フォルダ全部のファイルでやる場合 '#2 指定したファイルだけやる場合 Const wdReplaceAll = 2 strDir = InputBox("ディレクトリ名を入力してください。") '#1 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") '#1 Set objFolder = objFSO.GetFolder(strDir) '#1 Set objWord = CreateObject("Word.Application") objWord.Visible = True For Each objFile In objFolder.Files '#1 If Lcase(Right(objFile.Name, 4)) = ".doc" Then '#1 strArg = objFile.Path '#1 '#2 For Each strArg In WScript.Arguments Set objDoc = objWord.Documents.Open(strArg) Set objSelection = objWord.Selection objSelection.Find.ClearFormatting objSelection.Find.Replacement.ClearFormatting With objSelection.Find .Text = "2009-11-30" .Replacement.Text = "2009-12-22" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll 'Replace:=wdReplaceAll objDoc.Save objWord.Documents.Close Set objDoc = Nothing Set objSelection = Nothing End if '#1 Next objWord.Quit -------------------------------------- これは、内容をどう変えたらヘッダやフッタ部分も 置換してくれるようになりますか? また、Excel用にするには、このスクリプト内の "Word"を"Excel"に変えるだけで良いのでしょうか? 参考までに、OSはXPです。 足りない情報等ございましたらご指摘願います。 どうぞよろしくお願いいたします。

  • Access2010でWORD差込VBA実行後終了

    Access2010でWORDのブックマークへの差込を実行するVBAを組み、うまく作動しました ところが、「WORDで特定文書の名前で保存する構文をいれ、別名保存がうまく終わっている」にも拘わらず、必ず”未保存の文書1を保存しますか?”とWORDが必ず聞いてきます。これを回避するにはどのようにしたらよろしいでしょうか? ACCESS2010のVBAは下記のとおり組んでいます 'Word文書を保存する箇所 WordApp.Application.ActiveDocument.SaveAs FileName:=VARIABLE.doc, FileFormat:=1 'Wordを終了する箇所(上記保存のすぐ後に書いています) WordApp.Application.ActiveDocument.Close WordApp.Quit Set WordApp = Nothing Set doc = Nothing

  • VBSでWordの文字色変え

    VBSなのですが Wordファイルをドラッグしたら <と>で囲まれた文字の色を変更して保存する というものを考えております が <============= 部分でコンパイルエラー(ステーメントがありません) が発生します 初心者でさっぱりわからないのですが どなたかお助けを! よろしくお願いいたします 以下ソース Dim objWord Dim f Dim m If WScript.Arguments.Count<1 Then m="Hello!" MsgBox m WScript.Quit End If Set objWord=CreateObject("Word.Application") objWord.Visible=True For Each f In WScript.Arguments objWord.Documents.Open f objWord.Selection.Find.ClearFormatting objWord.Selection.Find.Replacement.ClearFormatting objWord.Selection.Find.Replacement.Font.Color = wdColorRed With objWord.Selection.Find .Text = "\<[!\>]@\>" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With objWord.Selection.Find.Execute Replace:=wdReplaceAll '<======================= objWord.ActiveDocument.SaveAs f&".doc" objWord.ActiveDocument.Close Next objWord.Quit WScript.Quit

  • VBSでExcelファイル印刷時のプリンタ指定

    VBSでExcelファイルを印刷する際、場合によってはプリンタを変えて印刷したいのですが、プリンタの指定をどのようにコーディングすれば良いのか分かりません。 印刷時のソースは下記のとおりです。 Set Excel = CreateObject("Excel.Application") Set objWkBk = Excel.Workbooks.Open("C:\Test.xls", , False) Excel.ActiveWindow.SelectedSheets.PrintOut() Excel.DisplayAlerts = False Excel.quit() objWkBk.close Set objWkBk = Nothing Set Excel = Nothing 上記コーディングに下記(1)~(4)を追加または、修正して試してみましたが、エラーとなってしまいます。 (1)Application.ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2" (2)Excel.ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2" (3)Excel.ActiveWindow.SelectedSheets.PrintOut("\\NAS0013W\Kyocera LS-6700SKX2") (4)Excel.ActiveWindow.SelectedSheets.PrintOut(ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2") そもそも、vbsからはプリンタの指定はできないのでしょうか? ご教授いただきたく、よろしくお願いいたします。