エクセルから帳票形式に差込印刷する方法は?

このQ&Aのポイント
  • エクセルで大量のデータを帳票形式に差込印刷する方法について教えてください。
  • エクセル自体での差込印刷はできないため、ワードの「差込印刷」機能が必要です。
  • エクセルデータ形式のカンマ区切り表示はワードの制限により難しいため、VBAや差込印刷マクロを利用する方法も検討してください。
回答を見る
  • ベストアンサー

エクセルから帳票形式に差込印刷したいのですが

皆さん初めまして! エクセルで1万件に近いデータがあります。 これらを帳票形式に差込印刷したいと思えば、ワードの「差込印刷」機能以外に、エクセル自体で行なうことは不可能でしょうか? (例:請求データを請求書フォームに印刷) ワードの差込印刷は便利ですが、エクセルデータ形式(特に金額のカンマ区切り表示が必要なため)を参照する際は、フィールド設定の数の制限が22列まで?で・・・行き詰っています(私は約40列あります)。 エクセル・ワードの操作は上級手前の操作まではいけますが、 エクセルでVBA、差込印刷マクロを作るとまではいけないもので・・・何か妙案がありましたらご教示願います・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#01です。出血大サービスです(^^; ただし不具合以外の修正はご自身でお願いします。 2行目~4行目と項目の定義の箇所は再度設定し直してください。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub InsPrint() Const org As String = "Sheet1" '元データのシート名 Const prs As String = "Sheet2" '印刷するシート名 Const strt As Integer = 2 '元データの実データ開始行 Dim idx, fromL, toL As Long Dim oSht, pSht As Worksheet Dim res, res2  Set oSht = Worksheets(org)  Set pSht = Worksheets(prs)  res = MsgBox("印刷行範囲を指定しますか?" & Chr(13) & _   "はい:指定する、いいえ:指定しないで全件印刷、CANCEL:印刷しない", vbYesNoCancel)  Select Case res   Case Is = vbCancel    Exit Sub   Case Is = vbYes    res2 = Application.InputBox("印刷開始行を半角数字で入力して下さい", Type:=1)    If TypeName(res2) = "Boolean" Then     MsgBox "印刷を中止しました", vbOKOnly     Exit Sub    Else     If res2 >= strt And res2 <= oSht.Range("A65536").End(xlUp).Row Then      fromL = res2     Else      MsgBox "開始行が不適切です。印刷を中止しました", vbOKOnly      Exit Sub     End If    End If    res2 = Application.InputBox("印刷する最終行を入力して下さい" & Chr(13) & _      "99999を入力すると最終行まで印刷します", Type:=1)    If TypeName(res2) = "Boolean" Then     MsgBox "印刷を中止しました", vbOKOnly     Exit Sub    Else     If res2 = 99999 Then      toL = oSht.Range("A65536").End(xlUp).Row     Else      If res2 >= fromL And res2 <= oSht.Range("A65536").End(xlUp).Row Then       toL = res2      Else       MsgBox "最終行が不適切です。印刷を中止しました", vbOKOnly       Exit Sub      End If     End If    End If   Case Else    fromL = strt    toL = oSht.Range("A65536").End(xlUp).Row  End Select  For idx = fromL To toL '以下の行を項目数だけコピーして定義する   pSht.Range("A1").Value = oSht.Cells(idx, "A").Value '   pSht.PrintOut '印刷 '5頁につき8秒休止する   If (idx Mod 5) = 0 Then    DoEvents    Sleep 8000   End If  Next idx End Sub

sartan777
質問者

お礼

質問者です。 うーん・・・!!!本当に「出血サービス」を頂きました・・・! 感謝・・・感謝です!!! 不具合もなく、理想通りの差込印刷ができました。本当にありがとうございます。 自分自身、もっとマクロVB応用ができるよう勉強します@_@; ちょいと・・・質問ですが、 最初の行 Declare Sub  の Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) は、どういう行為(意味)をさすのでしょうか? 索引とか引いても見つからないもので・・・^^;

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

エクセルで差し込み印刷のようなことをするにはマクロが必要です。 以下のマクロはそのひな形です。  pSht.Range("A1").Value = oSht.Cells(idx, "A").Value の行を差し込みする項目の数だけコピーして定義して下さい。この例は  pSht.Range("A1").Value → 印刷シートのA1セルに  oSht.Cells(idx, "A").Value → 元データのA列のデータを 差し込むという意味になります。修正を加えるのは左辺"A1"と右辺"A"の2カ所のみで、他は変えてはいけません。 また2行目~4行目も実際のシートに合わせて修正が必要です マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択して実行します。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub InsPrint() Const org As String = "Sheet1" '元データのシート名に修正 Const prs As String = "Sheet2" '印刷するシート名に修正 Const strt As Integer = 2 '元データの実データ開始行に修正 Dim idx As Long Dim oSht, pSht As Worksheet  Set oSht = Worksheets(org)  Set pSht = Worksheets(prs)  For idx = strt To oSht.Range("A65536").End(xlUp).Row ' 以下の行を項目数だけコピーして定義する   pSht.Range("A1").Value = oSht.Cells(idx, "A").Value '   pSht.PrintOut '印刷 ' プリンタの印刷が追いつかないので5頁につき8秒休止する   If (idx Mod 5) = 0 Then    DoEvents    Sleep 8000 'ミリ秒単位で指定   End If  Next idx End Sub マクロを実行中途中で印刷を止めたい場合は、ESCキーを押してください。

sartan777
質問者

お礼

sartan777
質問者

補足

すみません、質問者です。 「お礼」のところに「あ」と書いた後、誤って確認画面・・・へ進んでしまいました>< 早速、回答をありがとうございました! す、すばらしい、感動するくらいシンプルで要望どおりのマクロひな形です! 試してみたところ、うまくいきました。 そこで、さらに厚かましい質問ですが・・・ 指定行から指定行まで、を印刷せよ、という指示BOXを組み込むマクロを挿入するにはどういった風にすればいいでしょうか・・・? マクロVBAを勉強中のみであり、なかなか応用まで行きません・・・未熟モノですが、よろしくお願い致します。

  • Us-Timoo
  • ベストアンサー率25% (914/3620)
回答No.2

すみません、解決策ではありません。先に考え方のお話です。 そういう込み入った処理をする場合、通常はアクセスでやると思いますよ。 アクセスの場合、データベースとフォームを作るのと両方しなくては いけないと思いますので。 EXCELで、もしやるとするなら、マクロやVBAを組んでやらなくては いけないと思います。関数や数式だけでやろうとすれば、かなりの 手間がかかると考えられますし、処理も煩雑になると予想されますので、 ・お金を出して詳しい人に作ってもらうか ・かなりの手間を覚悟で関数や数式を組み合わせて作るか のどちらかになると思います。 解決にならないレスで申し訳ありません。m(__)m

sartan777
質問者

お礼

回答ありがとうございます^^ そうですね、アクセスだと問題ないですが、 ここの職場では、アクセスがなく、またアクセスを使いこなせる人がいないので、今後の引継ぎを考えて・・・エクセル&ワードでいく方法がないかを模索中です。 参考意見をどうもありがとうございました。

  • vaio09
  • ベストアンサー率37% (756/2018)
回答No.1

逃げの手段ですが、アクセスで処理したら制限ないですよね。

sartan777
質問者

お礼

そうなんですわ(笑 アクセスがない職場だからこそ・・・^^;

関連するQ&A

  • 差込印刷

    差込印刷を使ってで金額を3桁区切りの表示にしたいのですが出来るのでしょうか?エクセルのデータはセルの表示形式が数値になっているので3桁ごとのカンマが表示されます。差込印刷をすると数値がカンマ区切りのない表示になります。エクセルのデータ入力自体をカンマ入力しておかないとダメでしょうか?どなたか教えて下さい

  • 差し込み印刷について

    OSはXP、officeは2003を使用しています。ワードの差し込み印刷について教えていただきたいです。 ワードで作成した文章の中に、差し込み印刷機能で、エクセルのデータを参照したのですが、プレビュー表示をしたら、金額(777,777)のカンマが無くなった(777777)状態で表示されてしまいました。どうして、カンマが消えて表示されたのか、原因が分からないので教えてください。エクセルの金額の表示形式は、通貨表示です。 参考に差し込みの手順を書いておきます。 1文書の種類→レターを選択。2ひな形→現在の文書を選択。3宛先→既存のリストを選択し、エクセルを参照。4レターの作成→差し込みフィールドを選択し、データベースフィールドを挿入。5レターフィールド表示という流れで作成しています。

  • エクセルで差込印刷をしたいのですが?

    ワードの文章に、エクセルのデータを差込印刷するように、エクセルの文章(実際は個票のような表形式)にエクセルのデータを差込印刷したいのですが、どうすればいいのですか? 実際は、印刷したい表のタイトル欄に、データ表の中からnameの列のデータを差込印刷したいのです。 過去のを全て検索できていませんが、よろしくお願いします。

  • wordの差し込み印刷について

    wordで、エクセルのデータベースより差し込み印刷をしようとしているのですが、エクセルのデータベース上で計算式で入力された数値(金額)をWORDに差し込みすると、カンマ区切りを付けれないのですが、 どなたか、解る人がいたら教えていただけないでしょうか?

  • ワード差し込み印刷時の数字にカンマを入れたい

    ワードで差し込み印刷をする際、データはエクセルファイルで、エクセルファイルのなかでは数字の表示を桁区切りスタイルにしていますが、差込にすると普通に数字のになってしまいます。差込んでも桁区切りスタイルのままにさせることは出来ますでしょうか? 私がない知恵を絞って考えたのは、「元のエクセルファイルの数字を最初から文字列のカンマが入ったものにする」なのですが、文字列にするまではできても、その後カンマをいれる方法がわからないのです。 よい方法はあるのでしょうか??

  • ワードの差込印刷で・・・

    ワード2003を使っています。 エクセルから差し込み印刷をしたいのですが、 エクセル上では数値がカンマ編集をなされているんですが、 ワードに差し込むとカンマ編集が解除されてしまいます。 カンマ編集はエクセルの機能なのでワード上では 機能しないのでしょうか? なんとか編集された数値を引っ張る方法はありませんか? 300件近いデータなんで、文字列で入力しなおす 手間はかけたくないんで・・ こんなの無理でしょうか? よろしくお願い致します。

  • 差込印刷ができない

    ワード2000の文書に、エクセル2000のデータを差し込み印刷しようとしています。ツールバーの「差込フィールドの挿入」をクリックしても、「自動差し込み」としか出てきません。以前差込印刷をした時には、ここにエクセルデータの見出しに使っている言葉が出てきていたと思うのですが、どうしたらそうなるのでしょうか?

  • word2007 差込み印刷  フィールドの挿入について

    excel2007のデータからword2007への差込み印刷をしたいです。 excelが2007になって列数が増えたので、2003のデータを2007へ変換し、 列を増やして使用しています。 今回、word2007に差込み印刷をしようとしたのですが、 フィールドの選択 の欄には 250数列のデーターしか表示されません。 excel2007で列数は増えましたが、word2007に差込みを行うことはできないのでしょうか? 宜しくお願いします。

  • 差込印刷を教えて下さい

    差込印刷を教えて下さい Microsoft Word 2003を使用 A5サイズの同じ帳票2枚がA4用紙に印刷されています。 このA4用紙にエクセルのデータを差込印刷を行いたい A4用紙に1番目のデーターを差し込は分かるのですが、2番目のデーターをむ場合の方法を教えてください。 A4用紙の1枚目に差込データの1と2      2枚目に差込データの3と4      3枚目に差込データの5と6 と印刷を行いたいのですが よろしくお願いいたします。

  • 差込印刷の逆?をしたい

    差込印刷は実際に使ったことはありませんが、このサイトや他の差込印刷に関するサイトを見ておおよその要領、イメージは解ったつもりです。 通常の差込印刷は、 Wordに雛形を作成→Excelでデータベースを作成しておく→Wordに差込フィールドを挿入 、という流れですが、今回はそうではなく、 Wordに雛形を作成→Excelに空のデータベース(と呼んでいいのかどうか??)を作成→Wordの雛形に差込フィールド(と呼んでいいのかどうか??)を作成→Wordの差込フィールドにデータを入力する→Excelの空データベースの最新行にそのデータが自動入力される→Wordの雛形の差込フィールドに新たにデータを入力する→Excelの空データベースの最新行にそのデータが自動入力される 、というイメージです。 ひょっとしたらWordではなくExcelのみで行うのか、あるいはAccessを使用するのか?? 具体的な手順を御教示いただけると尚嬉しいです。 よろしくお願い致します。

専門家に質問してみよう