データはエクセルの複数シートにあります。
A2列に氏名、D4列に出欠、他の列には日付、課題などが入力されています。
欠席者のみに、氏名入りで、欠席した回の課題をお知せする文書を作りたいです。
シートがひとつなら、ワードの差込印刷を使ったことがあります。でも、複数シートからデータをとりたい時は、ワードの差込印刷はできますか?
ワードの差込印刷が無理なら、エクセルの他のシートにお知らせを作って、差込印刷みたいなことができる方法はありますか? エクセルだけでできたら、それはそれで嬉しいのですが。

このQ&Aに関連する最新のQ&A

印刷 VBA」に関するQ&A: VBA印刷ページ設定

A 回答 (2件)

こんにちは。


そのやる気が大事です。
先ず、新しいブックでテストしてみましょう。

---------------------------------------------------
【VBAコードの作成方法】

●新しいブックを開く
●メニューバーの「ツール」 > 「マクロ」 > 「セキュリティー」
  表示されるセキュリティーの画面の「セキュリティーレベル」タブをクリック
  高・中・低の「中」を選択(既に選択してあれば無視)し、OKボタン
  これは一度設定しておけば未来永劫さわることはありません
●メニューバーの「ツール」 > 「マクロ」 > 「Visual Basic Editer」
  ここでVBEの画面が表示されます
●VBEのメニューバーの「挿入」 > 「標準モジュール」
  ここで画面右側に白い作業領域が表示されます
  そこに下記プログラムコードをコピーして貼り付けます
●最上段タイトルバーの右の「×」ボタンでVBEを閉じます
  これでVBAコードの作成は終了です。

------------------------------------------------------
【データについて】

Sheet1,2 を氏名等のデータとし、Sheet3を印刷用とする
Sheet1,2 は次のレイアウトとする
  1行目見出し(A列・氏名)(D列:出欠)
  2行目からデータ
  D列出欠データの欠席は、「欠」と1文字入れる

--------------------------------------------------------
【実行内容】

Sheet1,2の出欠欄(D列)が「欠」の人の氏名(A列)を
印刷用シート(Sheet3)のセル「C5」に差込み、印刷する

--------------------------------------------------------
【VBAの実行方法】

●メニューバーの「ツール」 > 「マクロ」 > 「マクロ」
  ここでマクロ画面が表示されますので
  実行したいマクロ(TestPrint)を選択し、
  右上の「実行ボタン」をクリック

---------------------------------------------------------
【VBAのコード】Sub TestPrint ~ EndSub までを貼り付ける
---------------------------------------------------------

Sub TestPrint()
 Dim Sht As Worksheet
 Dim R As Long
 Application.ScreenUpdating = False
 Worksheets("Sheet3").Activate

 For Each Sht In Worksheets
  If Sht.Name <> "Sheet3" Then
   For R = 2 To Sht.Range("A65536").End(xlUp).Row
    If Sht.Range("D" & R).Value = "欠" Then
     Range("C5").Value = Sht.Range("A" & R).Value
     ActiveSheet.PrintPreview
    End If
   Next R
  End If
 Next Sht

Application.ScreenUpdating = True
End Sub

-------------------------------------------------------------

これは実際の印刷ではなく印刷プレビューが表示されます。
どうですか? 簡単でせう?(^^;;;

実際のお知らせもVBAでやりたくなったら、そのレイアウトを提示してください。
A列(氏名)B列(日付)C列(項目1)・・・
見出しは、何行目にあるか、データは何行目からか。
印刷用シートを作成するわけですが、そのシート名。
印刷用シートのどのセルにデータを差込むか等。

以上です。

この回答への補足

 お試しコードありがとうございました。VBA すごいです! もし自由に使いこなせたら なんでもできちゃいそうで夢が(?!)ふくらみますね。
 どんなVBAを組んで、どんな作業をしようか、わくわくしながら考えちゃいました。っで、あんまり複雑なものを教えていただくと、そのコードを読み取って後々自分で加工していくのが難しそうなので、まずは手はじめにVBAでリストを作って、リストからワードに差込印刷というパターンでやってみようかと思うのですが、そういう方法はどうなのでしょうか?
 【データ】
●シート1からシート20まで、同じ配列でデータがあります。
●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。)
●A列に到達度、B列に出欠をいれました。
●C列からM列が氏名、課題、その他のデータです。
●リストはシート21にあります。
 【VBAでやってみたい作業】
●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける
●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける

っというのが、私が乏しい知識で考えたリストの作り方なのですが。。。これじゃ、不具合がでるかもしれなくて、こんなかんじの作業かなという程度です。
こんなVBAってできるものでしょうか?
それとも、こういう作業はVBAではなく、他のやり方がいいのでしょうか?

補足日時:2005/04/20 16:04
    • good
    • 0

こんにちは。


残念ながら複数シートから差込みはできません。
で、代案としては。

(1)差込む度に差込みシートを代える
(2)シート毎に差込み文書を作成
(3)シートを増やしそこに全てのシートをコピーし差込む

上記はシートが多いとちょと面倒ですよね。
で、あと考えられるのはエクセルのみでやる場合です。
それにはVBAを使うことになります。
VBAにトライしてみますか?
なら簡単なコードをアップしますが・・・。

以上です。

この回答への補足

VBAってマクロを組むとか、そういうやつですか?
エクセル初心者なので、マクロはまったくやったことがありません。・・・でも、やってみたいなあ。(頭が良くなくてもできるでしょうか?)
できるかどうか、ぜんぜん自信無いのですが、手ほどきお願いいたします。

補足日時:2005/04/17 19:42
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q複数シートからのWordの差込印刷

Excelに2枚シートがあり、そのデータをWordに差込印刷をしたいと考えています。
例)名簿1シートと名簿2シートがExcelにあって、1枚のWord文書に両方のシートの名前を1件ずつ差し込みたい

差込印刷ヘルパーにおいて複数のシートまたは範囲を指定することができませんでした。2回に分けて操作をすると最初の差込フィールドがエラーになります。
ということはExcelのデータファイルは1箇所しか指定できない、ということなのでしょうか? Excel上で1つのシートにデータをまとめればよいのでしょうが、できればそうしたくないのです。
方法があれば教えてください。

Word、Excelとも2000バージョンです

Aベストアンサー

確か、差込印刷の時は、Excelのワークシートは1つのブックの中で最初の1枚しか指定できないと思いますよ。

Qワード差込でデータエクセルのシートを選択・指定したい

ワード2007で差し込みをしようとしています。会社の古いパソコンでやりたいことの練習なので、データのエクセルもワードも97-2003対応ファイルに名づけて保存して、使っています。エクセルのシート3を差し込みデータとして使いたいのですが、会社のパソではシートを選ぶウィンドウが出たのに、うちのパソコンでは出てきません。使いたいシートを表示させても、一番最初に差し込み元に使ったデータの項目しか出てきません。どうしたら、シートを選ぶウィンドウを表示できますか?

Aベストアンサー

画面左上の[Officeボタン]→[Wordのオプション]→[詳細設定]→[全般]
タブにある[文書を開くときにファイル形式を確認する]にチェック。

こちら↓は過去ログですが、関連情報として載せておきます。
http://oshiete1.goo.ne.jp/qa3417005.html

質問では接続形式が[ DDE ]接続になっていますから[ OLE DB ]形式に
すれば、シートの選択はできると思います。

Qexcelからexcelへの差し込み印刷

お世話になります。

excelでwordへの差し込み印刷をよく利用するのですが、
同様に、
excelのデータをexcelに流し込んで印刷する方法はありますでしょうか。

excelの名簿のデータを
excelの表のフォーマットに流し込んで
1人づつ印刷したいのですが。

お分かりの方いらっしゃいました教えてください。
どうぞ宜しくお願い致します。

Aベストアンサー

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

上記の品をお送り申し上げます。
ご査収ください

以上
Xの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,2,FALSE)
Yの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,3,FALSE)
Zの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,4,FALSE)

---
結果

送り状

住所山田 三郎
氏名東京都江東区

品物かばん

上記の品をお送り申し上げます。
ご査収ください

以上
ここで
VBE画面で標準モジュールに
Sub test01()
For i = 1 To 2 '人数分
Range("H1") = i
Range("A1:G20").PrintOut '印刷範囲は各人同じとする
Next i
End Sub
を張り付け、実行する。
山田、植田分の紙が2枚印刷されました。
これは質問者はVBAの経験も無いでしょうと、最低限にしてあります。
VBAを勉強してください。
別ブックにある名簿を対象などは複雑になるので避けています。

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

...続きを読む

Qエクセルで多数のシートをまとめる方法

エクセルで10以上あるシートを一発でひとつにまとめる方法はあるでしょうか?

コピー&ペーストを繰り返すしかないのでしょうか…

仕事で明日やらなければならないので、
お分かりになる方、是非教えてください!

Aベストアンサー

まぁ既出回答にもあるように,10数回程度コピー貼り付けすることで,どうという作業ではないとは思います。

さておき。
ご利用のエクセルのバージョンが不明ですが,ご利用のOfficeのバージョンによっては

1.ワードを起動する
2.挿入のファイルからエクセルブックを指定する
3.添付図のようなダイアログが表示されたらラッキー成功です,ブック全体を指定して挿入する
4.Ctrl+Aで全体を選び,コピーして,エクセルの新しいシートに貼り付ける

と一発でできます。
添付図のようにならなかったときは,出来ません。

Qexcelデータを使用して、excelの別なシートに、差し込み印刷をし

excelデータを使用して、excelの別なシートに、差し込み印刷をしたいのですが、その方法が解りません。ご存知の方いらっしゃればお教えください。

Aベストアンサー

Excel 2007では、ウィザードを使ってラベル印刷ができるようですが、Excelの一般機能では差し込み印刷はできません。

「Excel ラベル印刷ウィザード」
http://office.microsoft.com/ja-jp/excel/HP100775161041.aspx

VBAを使えば、Excelで差し込み印刷ができるようですが、VBAに慣れておられなければ、Wordの差し込み印刷を使用した方がよいと思います。

下記URLのページは、VBAを使った差し込み印刷の過去ログの例と検索結果です。

「エクセルの名簿一覧表からすでにエクセルで作られている一人づつのシートに差込印刷」
http://oshiete1.goo.ne.jp/qa667710.html

「Excel 差し込み印刷 VBA」の検索結果
http://www.google.co.jp/search?hl=ja&num=20&q=Excel%E3%80%80%E5%B7%AE%E3%81%97%E8%BE%BC%E3%81%BF%E5%8D%B0%E5%88%B7%E3%80%80VBA&lr=lang_ja&aq=f&oq=

Excel 2007では、ウィザードを使ってラベル印刷ができるようですが、Excelの一般機能では差し込み印刷はできません。

「Excel ラベル印刷ウィザード」
http://office.microsoft.com/ja-jp/excel/HP100775161041.aspx

VBAを使えば、Excelで差し込み印刷ができるようですが、VBAに慣れておられなければ、Wordの差し込み印刷を使用した方がよいと思います。

下記URLのページは、VBAを使った差し込み印刷の過去ログの例と検索結果です。

「エクセルの名簿一覧表からすでにエクセルで作られている一人づつ...続きを読む

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルの表をワードで作成した文章に挿入するには

エクセルで作った表をワードで作成した文章に挿入、また、逆にワードで作成した文章や図をエクセルに挿入するにはどうすればよいでしょうか?

Aベストアンサー

エクセルで作った表をワードに挿入するには

1、エクセルを開き、表をコピー
2、ワードを開き、編集メニュー→形式を選択して貼り付け
3、貼りつける形式を「Microsoft Excelワークシート」にしてOK


ワードで作成した文書をエクセルに挿入するには
1、挿入→オブジェクト→ファイルから→ファイルを選択

でうまく行きませんか?

また、ワードの文書全部を選択してコピーして、エクセルに貼り付けではどうですか?

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

皆さん初めまして!

エクセルで1万件に近いデータがあります。

これらを帳票形式に差込印刷したいと思えば、ワードの「差込印刷」機能以外に、エクセル自体で行なうことは不可能でしょうか?

(例:請求データを請求書フォームに印刷)

ワードの差込印刷は便利ですが、エクセルデータ形式(特に金額のカンマ区切り表示が必要なため)を参照する際は、フィールド設定の数の制限が22列まで?で・・・行き詰っています(私は約40列あります)。

エクセル・ワードの操作は上級手前の操作まではいけますが、
エクセルでVBA、差込印刷マクロを作るとまではいけないもので・・・何か妙案がありましたらご教示願います・・・

Aベストアンサー

#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

#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 = Works...続きを読む

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報