以前の質問で解決できなかったので再度質問いたします。
差込印刷で、差込のフィールド数がページによって異なる場合の差込印刷はできないのでしょうか。
例えば、次のようなデータファイル(エクセル)をもとに、顧客ごとにワードで請求書を作成する場合、差込印刷を使うことはできないのでしょうか。
顧客名 商品名 数量 小計
-------------------------
A社 商品X1 10個 Y1円
A社 商品X2 5個 Y2円
B社 商品X1 12個 Y3円
B社 商品X3 22個 Y4円
B社 商品X4 8個 Y5円
こういう使い方は結構あると思うのですが・・・
もし、差込印刷が使えなければ、他に良い方法はありますか?
エクセルのオートフィルタで表示はできますが、請求書として印刷したいのです。
他の方法としてマクロを使えばできそうですが、マクロは少し苦手です。
WindowsXPでOffice2000を使用しています。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
Word2000はわかりませんが、2002ではWordでもフィルターをかけられます
[差し込み印刷]ツールバー上にある[差し込み印刷の宛先]コマンドボタンをクリック
▼顧客 で「A社」を選択します。
ちなみに、(詳細)で並び替えも可能です。
手作業以外はわかりませんでした。m(_ _)m
No.4
- 回答日時:
>エクセルのオートフィルタで表示はできますが、請求書として印刷したいのです。
エクセルにはフィルターオプションという機能がありますので試してみてください。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filte …
こういった感じ、顧客名が一致したデータをほかのシートに引っ張ってこれます。
ちなみに、添付のようにシートを準備して
請求書のシートの名前のタブを右クリック、コードの表示 で
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$3" Then
Sheets("売上データ").Columns("A:D").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A2:A3"), CopyToRange:=Range("B6:D6"), Unique:=False
End If
End Sub
を貼り付けて顧客名を変更してみてください
もし、罫線の処理を加えると以下の感じになります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$3" Then
Range("B7:D" & Range("B65536").End(xlUp).Row).Select
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Sheets("売上データ").Columns("A:D").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A2:A3"), CopyToRange:=Range("B6:D6"), Unique:=False
Range("B7:D" & Range("B65536").End(xlUp).Row).Select
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End If
End Sub
No.3
- 回答日時:
下記はエクセルの応用として書いてます。
ワードの差込印刷は関係ない方法です。
私なら始から終わりまでエクセルVBAで考える。しかし
VBAを出来ない人に、避けられない最小限のVBAの使用でやってみる。
記述に微妙な所があるので、頭のクリアなときにじっくり
読んで、このやり方で、そうする理由などを理解してください。
下記は、私の考え方であって、WEBや解説書では類似の記述は無いと思います。
多にも色々なやり方があるが、VBAの使用を最小限にという事で下記が
出てきました。
まず基本は指定会社のデータの抜き出しです。これを自称imogasi方式という方式で
1社分を別シートに抜き出します。このシートは納品書シートになります。
それを1社分ずつVBAで印刷します。
ーー
(1)抜き出し準備過程
例データ Sheet1 A1:D9
社名商品個数価格作業列社名
A社商品X110個100円A社
A社商品X25個150円B社
A社商品X36個60円C社
B社商品X112個360円
B社商品X322個440円
B社商品X48個240円
C社商品X512個120円1
C社商品X67個35円2
F列の社名は、データーフィルターフィルタオプションの設定で
抽出先をF1:F9に指定し、「重複するレコードは無視する」に
チェックを入れて、手操作する。
社名について、F列に、ダブリが無く漏れが無い社名が作れる。
E列の作業列は、Sheet2のB3に指定した社名と同じ行の
データに上から連番を振る。
式は F2に =IF(A2=Sheet2!$B$3,MAX($E$1:E1)+1,"")
ト入れて下方向に式を複写する。
Sheet2のB3セルがC社の場合上のようになる。
ーーー
(2)抜き出し過程
Sheet2で
納品書<--不動文字
A社御中 <--A社はプログラムでセット
社名商品個数価格 <--不動文字
A社商品X110100円
A社商品X25150円 <--関数でSheet1よりセット
A社商品X3660円
計310円 <--関数計算 計は不動文字
不動文字のところは手操作で入れておきます。
罫線、フォント種類、サイズ、表示形式などは人手の操作で設定しておく。
B6の式は =IF(ROW()-5>MAX(Sheet1!$E$1:$E$100),"",INDEX(Sheet1!$A$1:$D$100,MATCH(ROW()-5,Sheet1!$E$1:$E$100,0),COLUMN()-1))
この式を右方向にE列まで式複写。
B6:E6の式を10行分下方向に式を複写する(以上がimogasi方式)
ーーー
(3)印刷過程
標準モジュールに
Sub test01()
d = Worksheets("Sheet1").Range("F1000").End(xlUp).Row 'F列の最終行を取得
For i = 2 To d 'gai2行目からF列最終行まで毎行で繰り返し
'--Sheet1のF列からSheet2のB3セルに社名を順次1づつセット
Worksheets("Sheet2").Cells(3, "B") = Worksheets("Sheet1").Cells(i, "F")
'--Sheet2のA1:F18を印刷
Worksheets("Sheet2").Range("A1:F18").PrintOut
'--変わるセル範囲をクリア
Worksheets("Sheet2").Range("B61:E15").ClearContents
Next i
End Sub
実行すると、A社、B社、C社が1枚ずつ3枚に印刷された(確認済み)。
ーー
問題点は10社(Sheet2での想定行数)以上の明細がある場合ですが、複雑になるので
考慮してません。
--
エクセルを仕事に利用しようとすると、VBAに熟達している必要があるというのが、私の持論です。
何度質問しようと、VBAが出来ないと旨く行かない(旨い回答は出ない)と思う。勉強するしかない。
ーー
imogasi方式は、関心があれば、Googleででも「imogasi方式」で照会してください。どういう背景で出てきたものか判ります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(買い物・ショッピング) 商品にラベルを貼って出荷するまでのの手順にについて 2 2022/09/29 15:26
- 会計ソフト・業務用ソフト 一太郎で封筒の宛名印刷したいです。 1 2023/07/20 10:14
- Word(ワード) エクセル→ワード差し込み印刷 1 2022/10/05 17:32
- プリンタ・スキャナー Wordで作った宛名ラベルを印刷しようと思って、プリンターの上のところにある、手差しトレイ的なところ 3 2022/11/17 18:40
- その他(買い物・ショッピング) 商品に印字してあるバーコードについて 3 2022/08/26 10:42
- 年賀状作成・はがき作成 Wordによる宛名印刷 2 2023/01/04 15:36
- 会社経営 法人口座を貸してビジネスする場合の取り分 3 2023/03/20 11:00
- Excel(エクセル) セルによって印刷するシートを変える方法 EXCEL-VBA 2 2022/08/01 20:48
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Excel(エクセル) 請求書と領収書の作成 4 2022/11/10 16:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
-1234 を (1234) と表記する由...
-
エクセルで現場ごとに機材の移...
-
他部署からもらう データで、 ...
-
Excel 1の位の数字で処理を分岐...
-
Excelのセルの色を変えた行(す...
-
エクセルの数式について教えて...
-
Excelでの記号と特殊文字につい...
-
とびとびの大量セルを選択した...
-
MACにおけるエクセルの入力トラ...
-
ある表にフィルターをかけて出...
-
Lookup関数
-
エクセルの数式バーのフォント...
-
再質問です。マクロの修正箇所...
-
エクセルで「ページレイアウト...
-
EXCELの散布図で日付が1900年に...
-
【マクロ】VLOOKUPにて参照元に...
-
exselの質問です
-
エクセルでファイルの最終更新...
-
Excel 大小比較演算子による「...
-
エクセルの問題です。絶対値の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報