[[20230829115229]] 『「Vlookup関数を使った連続印刷」[hamu] についax(はるぼー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『「Vlookup関数を使った連続印刷」[hamu] について』(はるぼー)

投稿
[[20140711161121]] 『Vlookup関数を使った連続印刷』(hamu) 
について...

この内容で、
1.印刷ではなく、PDF出力
2.PDF名は、「シートBのB列4行目から+1ずつセルから取得し、出力上限まで
3.保存場所は本ファイルと同じ

このような条件のマクロを組みたいのですが、調べてもエラーのオンパレードでした・・・
どなたかご指導ください!

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 そのエラーの出るコードを提示したら、修正箇所を指摘してもらえるとおもいます
(´・ω・`) 2023/08/29(火) 12:43:24

失礼いたしました。
作成しているコードを提示致します。

Option Explicit

Sub 連続差し込み印刷()

    Dim pn As Long, i As Long, TargetName As String
    pn = InputBox("何番まで印刷しますか?")
    For i = 1 To pn
    TargetName = Cells(2, i + 4)
        Worksheets("入力原票").Range("B1").Value = i
         Worksheets("従業員記載用").ExportAsFixedFormat Type:=xlTypePDF, _
         Filename:=ActiveWorkbook.Path & "\" TargetName & ".pdf"        
         OpenAfterPublish:=True
    Next
 End Sub

よろしくお願いします!
(はるぼー) 2023/08/29(火) 13:16:15


 >TargetName = Cells(2, i + 4)
 >2.PDF名は、「シートBのB列4行目から+1ずつセルから取得し、出力上限まで
 矛盾しているように思うのですが、4行目から取りたいのか5行目から取りたいのかどちらですか?
 あと、cellsはレンジオブジェクト自体を取得するのでエラーが起きると思います。

 >Worksheets("入力原票").Range("B1").Value = i
 ここが必要かはやや疑問ですが、ほしいならいいと思います。
 要らないのであればそもそもiを4からスタートさせるのがいいのではないでしょうか。

 >ActiveWorkbook.Path
 実行環境によっては危ないので、ThisWorkbookにしたほうがいいと思います。

(.:*.ゆ ゅ) 2023/08/29(火) 13:32:57


 >TargetName = Cells(2, i + 4)
 Cellsは Cells(行,列) です。 i=1 のとき Cells(2, i + 4) はE2セルです。
 変数TargetNameに正しい文字列が代入されているか確認してください。
(´・ω・`) 2023/08/29(火) 13:40:56

勉強になります!
ありがとうございます。

直してみたんですが、
下記部分が赤文字になり、「コンパイルエラー、構文エラー」となります。

Worksheets("従業員記載用").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ActiveWorkbook.Path & "\" TargetName & ".pdf"

ここに問題があるんでしょうか?
(はるぼー) 2023/08/29(火) 13:44:59


 誤) Worksheets("従業員記載用").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ActiveWorkbook.Path & "\" TargetName & ".pdf"
 正) Worksheets("従業員記載用").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ActiveWorkbook.Path & "\" & TargetName & ".pdf"
(´・ω・`) 2023/08/29(火) 13:50:01

 >Cellsは Cells(行,列) です
 すみません、iあるから勝手に行だと思ってましたけどその通りですね。
 あとRangeは代入時にはデフォルトでvalue返すことも失念しておりました。重ねて訂正いたします。
(.:*.ゆ ゅ) 2023/08/29(火) 14:29:00

お二人のご指導頂いた通りに進めると無事できました!
本当にありがとうございます!

ただし、i = 4でのスタートはうまくできなかったのと、
今でも動いていてこのままでも問題ないとのことなので、このまま行こうと思います!

1点だけ追加で教えてください。

Option Explicit

Sub 連続差し込み印刷()

    Dim pn As Long, i As Long, TargetName As String
    pn = InputBox("何番まで印刷しますか?")
    For i = 1 To pn
        TargetName = Cells(i + 3, 2)
        Worksheets("入力原票").Range("B1").Value = i
         Worksheets("従業員記載用").ExportAsFixedFormat Type:=xlTypePDF, _
         Filename:=ThisWorkbook.Path & "\" & TargetName & ".pdf"
    Next
    OpenAfterPublish:=True
 End Sub

この最後にある

OpenAfterPublish:=True

ここでエラーが出ます。
ビュアーが開かなくても大して問題はありませんが、無いよりはある方がいいと考えております。

これはどこが問題なんでしょうか?(Webからコピペです)
for文の中に入れると、iの数値が入れ替わるごとにビュアーで表示されるんでしょうか?
(はるぼー) 2023/08/29(火) 15:03:09


話はおわっているかもしれませんが何点か。

■1
標準モジュールに記述している場合、シートの指定を省略するとActiveSheetを指定したものとみなされるルールです。
したがって、現状問題が発生していないかもしれませんが↓も、どのシートのことなのかきちんと指定したほうが良いと思います。

 TargetName = ActiveSheet.Cells(i + 3, 2)
              ~~~~~~~~~~~

■2
>ここでエラーが出ます。
「ExportAsFixedFormatメソッド」の引数ですから、書く場所が違います。

■3
踏まえると↓のようにすれば良いようにおもいます。(ActiveSheetのところは必要があれば修正のこと)

    Sub 連続差し込み印刷()
        Dim pn As Long, i As Long
        pn = InputBox("何番まで印刷しますか?")

        For i = 1 To pn
            Worksheets("入力原票").Range("B1").Value = i
             Worksheets("従業員記載用").ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Cells(i + 3, 2).Value & ".pdf", _
                OpenAfterPublish:=True
        Next i
    End Sub

(もこな2 ) 2023/08/29(火) 15:41:26


>>iの数値が入れ替わるごとにビュアーで表示されるんでしょうか?
されると思いますよ。
かなり、うっとおしいですよ←私はですけど^^;
大きなものだと時間もかかりますしね。確認作業は発行する前に
やっとく方がいいかも。。。( ̄▽ ̄)
m(__)m
(隠居Z) 2023/08/29(火) 15:52:03

皆さんありがとうございました!

とりあえず作りたいものが完璧にできました!
まだ理解できていない部分もあるので、時間をかけて勉強致します。
(はるぼー) 2023/08/29(火) 16:07:11


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.