宛名一覧をひとつひとつPDF化したい | |
---|---|
[195085] 宛名一覧をひとつひとつPDF化したい- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ みき -(2022/08/10(15:36)) □U R L/ マクロ初心者です。 いろいろと2,3日試行錯誤してみましたが、まったく手掛かりも掴めず藁をも縋る思いでこちらに質問をさせて頂きました。 みなさまのお知恵をお借りできれば、大変助かります。 ① ひとつのExcelに宛名印刷するように郵便番号、住所、名前などがいくつもあります。下記参照下さい。 ※ 宛名の数はその都度変わり、30件あることもあれば、100件あることもあります。 ② この複数の宛名をひとつひとつ、左上(宛名1)に移動してPDF化したい(できれば印刷も) 宛名1 B3 郵便番号 B4 住所1 B5 住所2 C9 名前 D10 通し番号 宛名2 F3 郵便番号 F4 住所1 F5 住所2 G9 名前 H10 通し番号 宛名3 B15 郵便番号 B16 住所1 B17 住所2 B21 名前 D22 通し番号 宛名4 F15 郵便番号 F16 住所1 F17 住所2 G21 名前 H22 通し番号 ……と、続いていきます。 今までずっと手作業で切り取り&貼り付けをしてPDF化して、印刷作業をしてきました。マクロを使って一括化することはできないでしょうか? 雛形のシートを作って、そこに宛名1のセルに転記させようと思ったのですが、うまくいかず……。 どなたか、よろしくお願いします。 |
[195086] Re[1]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/08/10(16:12)) □U R L/ >今までずっと手作業で切り取り&貼り付けをしてPDF化して、印刷作業をしてきました。 1.取り敢えず、その作業(1つ目の宛名だけでいいです)の操作をマクロの記録で録って、 出来上がったコードをここにアップしてください。 2.エクセルのバージョンは何ですか? 複数種ある場合は、一番古いバージョンを申告してください。 |
[195087] Re[2]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ みき -(2022/08/10(16:47)) □U R L/ 半平太様 早速のご返信ありがとうございます。大変心強いです。 1 操作をマクロの記録です。一応宛名2までやってみました…… いままで別のExcelに切り取って、張り付けてPDF化をしていました。 Sub Macro1() '宛名1 Windows("宛名一覧.xls").Activate Range("B1: E12 ").Select "" Selection.Cut Windows("宛名PDF.xlsx").Activate Range("B1").Select ActiveSheet.Paste 'ここでPDF化して、印刷しています。 '宛名2 Windows("宛名一覧.xls").Activate Range("F1:I12").Select Selection.Cut Windows("宛名PDF.xlsx").Activate Range("B1").Select 'B1 ActiveSheet.Paste 'ここでPDF化して、印刷しています。 End Sub 2 エクエルのバージョンは以下の通りです。 宛名一覧.xls……Excel97-2003ワークシート 宛名PDF.xlsx……Excelワークシート これで大丈夫でしょうか?? この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[195088] Re[3]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/08/10(20:00)) □U R L/ >2 エクエルのバージョンは以下の通りです。 >宛名一覧.xls……Excel97-2003ワークシート >宛名PDF.xlsx……Excelワークシート >これで大丈夫でしょうか?? 1.それはバージョンではなく、エクセルブックの「ファイル形式」です。 XL2010 とか XL2019 とかMicroSoft365 とかの意味だったのですが、 まぁ、大勢に影響がないのでスルーしていただいて結構です。 > 'ここでPDF化して、印刷しています。 2.ここの部分はマクロの記録が録れないですか? 印刷を先にして、PDFファイルの保存でいいと思うのですが・・(この順序だとマズいのですか?) ※なお、Path名とかFileName名は、架空の文字に変更頂いて構いません。 3.各ブックのシート名が不明ですが、各ブックはシートが1枚しかないのですか? |
[195093] Re[4]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ みき -(2022/08/12(09:04)) □U R L/ 半平太様 ご丁寧にどうもありがとうございます。 2. について追記致します。 Sub Macro1() Range("B1:E12").Select Selection.Cut Windows("宛名PDF.xlsx").Activate Range("B2").Select ActiveSheet.Paste ChDir "C:\Users\Desktop" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\Users\Desktop\宛名PDF.pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ True End Sub 3.各ブックのシート名はひとつしかありません。 また、増えても特に問題はありません。 すいません。 よろしくおねがいします。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[195094] Re[5]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/08/12(11:05)) □U R L/ > Windows("宛名PDF.xlsx").Activate > Range("B2").Select 貼付け先は、前回B1セルだったんですが、今回はB2セルですね。 どっちが正しいですか? PDFのファイル名は、それぞれ別名になると思うのですが、どう命名しますか? 名前PDF.pdf でいいですか? C9に入っている「名前」って、宛名とは違う気もするんですが、 ただ宛名(1,2,3)がB2セルに入っているのかどうかも よく分からないのでお聞きします。(B1セルなのかなぁ) |
[195095] Re[6]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ みき -(2022/08/12(12:16)) □U R L/ 半平太様 毎回コメントどうもありがとう御座います。 すいません。 貼り付け先は、Range("B1")です。 間違ったセルに張り付けてしましました……。 PDFのファイル名は、D10に通し番号が記載されているので、欲を言えばその通し番号をPDFのファイル名にしたいです。 (ひとつひとつ作っている時は、いつもはそうしています) いつもの癖で、B1からE12を切り取って張り付けていますが、 実際にはB3からD10を選択しても大丈夫です。 窓付き封筒で発送しているので、貼り付け先がズレてしまうと、窓付きに宛名がぴったり合わないんです。 |
[195096] Re[7]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/08/12(13:42)) □U R L/ >いつもの癖で、B1からE12を切り取って張り付けていますが、 >実際にはB3からD10を選択しても大丈夫です。 1.ちょっと実態が分かりませんが、B1からD12を切り取って、PDFのB1に貼り付けます 2.印刷はPDFにする前に実行しています。 マズければ、印刷なしで処理して、後で手作業で一気に印刷してください。 3.OpenAfterPublish:=False 'Trueだと鬱陶しいのでFalseにします、マズければTrueに戻してください。 4.テストは宛先数を2,3件で行ってください。(大量の無駄が出ないように) Sub setTestDataMacro() Const Path As String = "C:\Users\Desktop\" '←実際の保存フォルダーのパスに変更する(最後に\を付ける) Dim WsList As Worksheet Dim lastRW As Long Dim serialNum As Variant Dim i As Long, k As Long Set WsList = Workbooks("宛名一覧.xls").Worksheets(1) lastRW = WsList.Cells(WsList.Rows.Count, "B").End(xlUp).Row For i = 1 To lastRW Step 12 For k = 2 To 6 Step 4 serialNum = WsList.Cells(i + 9, k + 2).Value If serialNum <> "" Then '通し番号があれば処理 WsList.Cells(i, k).Resize(12, 3).Cut '目標宛先範囲を切り取り Workbooks("宛名PDF.xlsx").Activate With ActiveSheet .Range("B1").Select .Paste .PrintOut Copies:=1 '印刷 .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ Path & serialNum & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False 'True End With Else Exit For End If Next k Next i End Sub |
[195097] Re[8]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ みき -(2022/08/12(16:15)) □U R L/ 半平太様 大変ありがとうございました! テストで2,3枚はうまく印刷が出来ました。 まさに求めていたマクロです!! ただ……。 宛名の1ページはうまくいったのですが、2ページ目からは反応がなくなってしましました。 おそらく、2、3ページ目になるとセルの範囲が変わってしまうのが原因だと思います。 2ページ目~ B74 郵便番号 B75 住所1 B76 住所2 C80 名前 D81 通し番号 3ページ目~…… B145 郵便番号 B146 住所1 B147 住所2 C151 名前 D152 通し番号 serialNum = WsList.Cells(i + 9, k + 2).Value ここをifなどをいれれば、うまくいきそうですが、何度やっても上手くいかず……。 また助言を頂ければ大変助かります。 |
[195098] Re[9]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/08/12(17:22)) □U R L/ ページ毎なんて話ありましたっけ? 2ページ目の最初の郵便番号の行番号が74は分かりましたが、その前の 1ページ目の最終郵便番号がある行は何行目なんですか? |
[195099] Re[10]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ みき -(2022/08/12(17:36)) □U R L/ 半平太様 すいません。私の伝達不足でした……。 出力される宛名のExcelのページが微妙にセルの範囲が変わってしまっているのに、私も先ほど気が付きました……。 1ページ目の郵便番号の最終はB63です。 念のため、 2ページ目の郵便番号の最終はB134になります。 申し訳ありませんでした。 |
[195100] Re[11]: 宛名一覧をひとつひとつPDF化したい- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/08/12(19:59)) □U R L/ こんな感じかな? Sub setTestDataMacro() Const Path As String = "C:\Users\Desktop\" '←実際の保存フォルダーのパスに変更する(最後に\を付ける) Dim WsList As Worksheet Dim lastRW As Long Dim serialNum As Variant Dim i As Long, k As Long Dim page As Long Set WsList = Workbooks("宛名一覧.xls").Worksheets(1) lastRW = WsList.Cells(WsList.Rows.Count, "B").End(xlUp).Row For page = 1 To Int((lastRW + 68) / 71) For i = 1 To 71 Step 12 '1ページ12行ずつ、71行目まで処理 For k = 2 To 6 Step 4 serialNum = WsList.Cells(i + 9 + (page - 1) * 71, k + 2).Value If serialNum <> "" Then '通し番号があれば処理 WsList.Cells(i + (page - 1) * 71, k).Resize(12, 3).Cut '目標宛先範囲を切り取り Workbooks("宛名PDF.xlsx").Activate With ActiveSheet .Range("B1").Select .Paste .PrintOut Copies:=1 '印刷 .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ Path & serialNum & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False 'True End With Else Exit For End If Next k Next i Next page End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[195101] Re[12]: 宛名一覧をひとつひとつPDF化したい- ■ / 記事引用/メール受信=OFF■ □投稿者/ みき -(2022/08/13(09:28)) □U R L/ 半平太様 重ね重ね、どうもありがとうございました! 大変助かりました。 あと、細かいところは自分で頑張ってカスタマイズしてみたいと思います。 本当にありがとうございました。 |
このトピックに書きこむ |
---|