- 締切済み
VBAで印刷ページの指定をする場合について
VBA初心者です。よろしくお願いいたします。 次のVBAをエクセルで作成し、D:testというフォルダーにあるtest1.docxのB4判からA4判への縮小印刷と最初の1ページ目の印刷を試みています。結果として 縮小印刷にはなるのですが、1ページ目のみの印刷ではなくtest1.docxの全てのページが印刷されてしまいます。「PrintZoomPaperHeight:=16838」の記述に続けて「 , Pages:="1"」としてtest1.docxの最初の1ページだけ印刷する記述をしたのですが、どのような記述にすればよいのかご教示頂ければ幸いです。 Sub 印刷() Dim wdApp As Object, document As Object Const DIR_PATH As String = "D:test" Set wdApp = CreateObject("Word.Application") wdApp.Visible = True Set document = wdApp.Documents.Open(DIR_PATH & "\" & "test1.docx") document.PrintOut PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=11906, PrintZoomPaperHeight:=16838 , Pages:="1" document.Close wdApp.Quit End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
この質問に上げているVBAコードはどこからコピーしたのか(学んだのか)判らないが、複雑化しているように思う。 ーー だから単純に 「Word VBA ページ指定 印刷」でGoogleなどで照会し下記のような記事が出てくる。 それを実行したら、それらしく印刷できたが。 第2ページのみの例 (2-3ページなら解説の通りのページ番号を2つ指定し、真中にーを入れる書き方。 (すべて半角文字数字)) Sub ページを指定して印刷する() ActiveDocument.PrintOut _ Range:=wdPrintRangeOfPages, _ Pages:="2" End Sub 実際の例文をワードの文書に、コピペしてやってみると、うまく行く(限定的にページ単位で、指定ページ部分を印刷する)ようだが。ただしテキストだけの文書でしかテストしてない。 文書に図表などあると、むつかしい場面に出くわすかも。 == ページというオブジェクトはParagraphなどと違い、微妙な位置づけのようだ。ユーザーが直接決める ものではない場合が多い。 フォントサイズを1文字いじくるだけで、所属ページ数がかわる不安定なものだ。 日本人は文書に対し、まずページでイメージしているのかもしれないが、ワード設計者は、そこを第1重視の仕組ではないようだ。だからWindow関連を探したり、大変。 質問の標題には「WordVBAの質問」を明記せよ。エクセルVBAと違い、ここで回答をあきらめる。 WordVBAは解説本が少なく、WEB記事などを頼らざるを得ないが、仕組み(Objectsなど)の複雑さで 習得は難しい。よほど業界関連でもない限り、本腰を入れて時間を覚悟できないなら、避けてとおるべきだ。(印刷、文章家、特許、法曹関連、官庁届け出文書の多い人などがVBAに関心を示しているよう?) 講習も東京中心で機会も少ないようだ。
お礼
ご回答ありがとうございます。 PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=11906, PrintZoomPaperHeight:=16838 , Pages:="1"の記述は、Wordのマクロの記録結果から、その一部をExcelのマクロへコピペしたものです。縮小については動作しています。 また、質問内容の印刷の実行は、エクセルのマクロに記述して、エクセル上でそのマクロを実行し、パソコンのフォルダーに保存されているWordファイルを印刷するという内容です。ご教示いただいたグーグル検索などで、調べてもう一度トライしてみます。ありがとうございました。