戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
宛名一覧をひとつひとつPDF化したい

    [195085] 宛名一覧をひとつひとつPDF化したい-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ みき -(2022/08/10(15:36))
    □U R L/

      マクロ初心者です。
      いろいろと2,3日試行錯誤してみましたが、まったく手掛かりも掴めず藁をも縋る思いでこちらに質問をさせて頂きました。
      みなさまのお知恵をお借りできれば、大変助かります。

      @ ひとつのExcelに宛名印刷するように郵便番号、住所、名前などがいくつもあります。下記参照下さい。
      ※ 宛名の数はその都度変わり、30件あることもあれば、100件あることもあります。

      A この複数の宛名をひとつひとつ、左上(宛名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セルなのかなぁ)
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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/

      半平太様

      重ね重ね、どうもありがとうございました!
      大変助かりました。

      あと、細かいところは自分で頑張ってカスタマイズしてみたいと思います。
      本当にありがとうございました。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G