エクセルマクロで封筒宛名印刷しています。
もともと良く分かってない上に
10年ぶりくらいにマクロを触って悪戦苦闘しているところです。
現状は3シートを作成し
「印刷」「名簿」「封筒雛型」と
名称を付けております。
印刷シートに 印刷開始番号 印刷終了番号を入力して
封筒宛名印刷しています。
ネットで調べて現状は以下の内容になっています。
Sub 印刷実行()
Dim PrintNB, EndNB, FormStyle
Application.ScreenUpdating = False
Worksheets("名簿").Select
PrintNB = Range("印刷!C10").Value
EndNB = Range("印刷!C11").Value
Worksheets("封筒雛型").Select
Do Until PrintNB > EndNB
Range("A2").Value = PrintNB
ActiveWindow.SelectedSheets.PrintOut
PrintNB = PrintNB + 1
Loop
Worksheets("名簿").Select
Application.ScreenUpdating = True
End Sub
ここからが教えてほしい内容なのですが、
封筒雛型シートと
名簿シートを増やし、
印刷シート上でドロップダウンリストから 封筒印刷雛型シートや名簿シートを選択し
封筒宛名印刷したいのです。
更に 印刷シートに 印刷開始番号 印刷終了番号入力し、印刷する方法ではなく
名簿シート上で 例えばF列に印刷実行チェックマーク(たとえば数字の1)を入力することで
印刷したいのです。(この部分は最初に挫折しました。)
理解が足りないようなので具体的に教えていただけると助かります。
確認は明日になりますが
宜しくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは。
>前記ソースで300~500件ほどの名簿を連続印刷しています。
>名簿A列で印刷用番号を設定しているのですが
ということは、お仕事でされているわけですよね。ただ、これだけの量になると、生半可なものでは済まされないような気がしました。
話だけでは、ほとんどイメージは伝わってきませんので、こちらから、一方的にポイントだけを拾い上げて、マクロを作ってみました。お役に立てるのかは、私としてはなんとも言えません。
添付画像である程度分かるとは思いますが、
封筒宛名の郵便番号の部分の数式がややこしいです。
C4: =MID($U$4,1,1), E4:=MID($U$4,2,1), G4:=MID($U$4,3,1),I4:=MID($U$4,4,1)
K4: =MID($U$4,5,1), M4:=MID($U$4,6,1),O4: =MID($U$4,7,1)
----------------------------------------
U4: ==VLOOKUP(R4,名簿リスト1,5,0)
以下のマクロは、Escapeキーで、途中で止められるはずです。その時に、ブックの下側の左隅(ステータスバー)に、現在の印刷していた所が残ります。ピタリと納まるようには、作られておりませんので、試し刷りと調整が必要です。参考にした所は、
http://excel-magic.com/post-61/
です。
'//
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Sub 印刷トライ()
'No. 9026999
Dim ws1 As Worksheet
Dim cmb As Object 'ComboBox
Dim chk As Object 'CheckBox
Dim prtWs As Worksheet
Dim ListName As String
Dim ListNos() As Variant
Dim i As Long, v As Variant
Dim Rng As Range
Dim c As Range, j As Long, k As Long
Dim fml As String
On Error GoTo ErrHandler
Set cmb = Worksheets("印刷トライ").ComboBox1
Set chk = Worksheets("印刷トライ").CheckBox1
Set prtWs = Worksheets("封筒宛名")
ListName = cmb.Value
Application.StatusBar = ""
If ListName = "" Then
MsgBox "名簿が選択されていません。", vbExclamation
Exit Sub
Else
If MsgBox(ListName & "を元に宛名を印刷します。", vbOKCancel) = vbCancel Then
Exit Sub
End If
End If
With Worksheets(ListName)
For Each c In .Range("H7", .Cells(Rows.Count, "H").End(xlUp))
ReDim Preserve ListNos(i)
If IsNumeric(c.Value) And c.Value <> "" Then
ListNos(i) = .Cells(c.Row, 1).Value
i = i + 1
End If
Next c
End With
On Error Resume Next
Set Rng = prtWs.UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rng.Cells
fml = c.FormulaLocal
j = InStr(1, fml, "名簿リスト")
If j > 0 Then
k = InStr(j, fml, ",")
c.FormulaLocal = Mid(fml, 1, j - 1) & ListName & Mid(fml, k)
End If
Next c
On Error GoTo 0
For Each v In ListNos
If v <> "" Then
prtWs.Range("R4").Value = v
prtWs.Calculate
DoEvents
prtWs.PrintOut , Preview:=chk.Value
Application.StatusBar = ListName & ": " & v & "番目"
'この待ち時間は、適当に調整してください。1000=1秒
Sleep 1000
End If
Next v
ErrHandler:
If Err() <> 0 Then
MsgBox "Error " & Err.Number & ": " & Err.Description
End If
Application.StatusBar = ""
End Sub
'///
このサンプル・ブックは、何の問題もなければ、しばらく公開します。パスワードは、このスレの7桁のLog番号です。Excel 2010 で作成されたマクロ搭載ブックです。
http://fast-uploader.com/file/6993164730740/
No.2
- 回答日時:
マニュアル本に、初級・中級・応用編が売られています。
エクセルでややこしいマクロを使うより、「筆まめ」の様な宛名書きソフトの方が多用が有ります。
乗り換え版も有りますので安く手に入ります。
メーカー製PCでは、富士ソフトの「筆ぐるめ」が良くインストールされています。
私の自慢は、エクセルは苦手です。
殆どは、ワードで処理します。
OASYSの名残です。
エクセルは、リストと表計算を作る程度です。
たまには、納品書・請求書等です。
回答にはなっていませんが、許してください。
アドバイスありがとうございます。
型にはまったものになかなか合わないので
エクセルマクロでがんばることにしました。
最初はきついですが
後々の作業効率を優先 心がおれそうですが頑張ります♪
No.1
- 回答日時:
今のところ、どうも分からない所があります。
>印刷シート上でドロップダウンリストから 封筒印刷雛型シートや名簿シートを選択し封筒宛名印刷したいのです。
これを、ドロップダウンリストを使う?
ComboBox ではありませんか?
>印刷シートに 印刷開始番号 印刷終了番号入力し、印刷する方法ではなく
>F列に印刷実行チェックマーク(たとえば数字の1)を入力することで
>印刷したいのです。(この部分は最初に挫折しました。)
よく意味が分からないです。数字の1 で、印刷を実行させるのですか?
印刷開始番号とか、印刷終了番号とか、特に必要性が見られません。宛名そのものは、それぞれが変わるはずですが、そのようなコードも見当たりません。
一体どのようにしたら良いのか、今のところ、こちらでは手が付けられません。
>ActiveWindow.SelectedSheets.PrintOut
それに、同じものを何度も印刷するのですか?もし、そうなら、これ自体は、マクロは必要ないと思いますが。どのようにしていくか、言葉で説明をしていただいたほうが分かりやすい気がします。
私も数年のブランクはありますが、最近、やっと、勘が戻りつつあるところです。
お返事ありがとうございます。
空いた時間をみていろいろ調べてチャレンジしてますが
やはりうまくいきません^^;
現在は
エクセル数式で名簿を封筒宛名に挿入し
前記ソースで300~500件ほどの名簿を連続印刷しています。
名簿A列で印刷用番号を設定しているのですが
印刷番号が連番でない場合 その都度 印刷設定をしなくてはならないので
印刷チェックマークで印刷は できたらいいな。。程度です。
>ComboBox ではありませんか?
申し訳ないです 調べてみたのですが
ComboBoxとドロップダウンリストの違いがよくわかりません^^;
ようは あらかじめ用意した封筒ひな形名や名簿名を簡単に選択できるものです。
現状は(といてってもやり始めて間もないですが)
名簿ごと、 印刷用のひな形ごとに ファイルがあるため
1つのファイルに名簿シートを増設、封筒のひな形(はがき、封筒)を増設し、一括で管理したいとやり始めた次第です。
(一括にまとめるのがメイン)
現状では特定の名簿シート 特定の封筒ひな形 に対応するのでやっとこです。
表現がうまくいかず伝わりにくかもしれませんが
何卒よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Word(ワード) office365のWordの印刷範囲が勝手に狭くなっています。 4 2022/07/18 16:31
- 会計ソフト・業務用ソフト 一太郎で封筒の宛名印刷したいです。 1 2023/07/20 10:14
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- Excel(エクセル) セルによって印刷するシートを変える方法 EXCEL-VBA 2 2022/08/01 20:48
- プリンタ・スキャナー こないだは上手くできた封筒印刷がどうしてもできなくて、逆さまに印刷されたり、封筒がクシャクシャになっ 3 2022/07/18 14:10
- プリンタ・スキャナー 封筒印刷 差出人印刷ずれる 4 2022/05/01 10:12
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Excel(エクセル) Excelであるシートだけ印刷できない 1 2022/04/01 09:04
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Excel(エクセル) 請求書と領収書の作成 4 2022/11/10 16:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
印刷方向を逆向きにしたい
-
月謝袋にpcで氏名を記入する方法
-
長形40号封筒宛名印刷
-
封筒に宛先がうまく印刷できない
-
角型2号封筒に印刷する方法
-
差し込み印刷で右に90度文字の回転
-
市販の集金袋に名前を差し込み...
-
キャノンプリンターPIXUS TS313...
-
Excelを使い、封筒の下に社名を...
-
ワードの差し込み印刷がずれて...
-
ワードの差込印刷で、郵便番号...
-
封筒に連続で印刷は、可能でし...
-
エクセルの住所録から指定した...
-
封筒に宛名等を印刷するには
-
封筒の宛名面に宛名作成
-
Wordで長型3号の郵便番号欄にぴ...
-
各種封筒や熨斗袋の中央に宛名...
-
ワード 封筒印刷について。
-
エクセルを縦長1枚のPDFへ変換...
-
筆まめ、〒マークを表示させたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードの差込印刷で、郵便番号...
-
印刷方向を逆向きにしたい
-
月謝袋にpcで氏名を記入する方法
-
市販の集金袋に名前を差し込み...
-
角型2号封筒に印刷する方法
-
差し込み印刷で右に90度文字の回転
-
長形40号封筒宛名印刷
-
Excelを使い、封筒の下に社名を...
-
住所の宛名をWord、Excelでつく...
-
キャノンプリンターPIXUS TS313...
-
封筒に宛先がうまく印刷できない
-
ワードの差し込み印刷がずれて...
-
封筒に連続で印刷は、可能でし...
-
香典袋に宛名書き
-
封筒の差出人郵便番号印刷
-
Windows11を使い封筒への宛名印...
-
封筒に宛名等を印刷するには
-
Wordで長型3号の郵便番号欄にぴ...
-
ワード 封筒印刷について。
-
封筒印刷で下端が切れます
おすすめ情報