[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『「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
とりあえず作りたいものが完璧にできました!
まだ理解できていない部分もあるので、時間をかけて勉強致します。
(はるぼー) 2023/08/29(火) 16:07:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.