以前の質問で解決できなかったので再度質問いたします。
差込印刷で、差込のフィールド数がページによって異なる場合の差込印刷はできないのでしょうか。
例えば、次のようなデータファイル(エクセル)をもとに、顧客ごとにワードで請求書を作成する場合、差込印刷を使うことはできないのでしょうか。
顧客名 商品名 数量 小計
-------------------------
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ランキング
-
時間によってファイル名が変わ...
-
Excelで、決まった行を繰り返し...
-
Excel 2019 のピボットテーブル...
-
WPS OFFICEでの縦書きについて
-
【マクロ】ファイル名の変更に...
-
Aというブックの1というシート...
-
VBA Private Sub Worksheet_Cha...
-
エクセルで 例えば 伊藤と名前...
-
excelの不要な行の削除ができな...
-
Excelでの時間帯の入力
-
行数が不規則な一週間ごとの合...
-
ある列、或いは、ある行のセル...
-
【マクロ】フォルダからエクセ...
-
文字列になっている時間をVBAで...
-
シートAで横に並んだ項目→シー...
-
Excel2013のF6キー操作について
-
マクロの有効化するダイヤログ...
-
エクセルの順位別一覧表の自動...
-
Excel:一部のフォントでセルの...
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報