• 締切済み

エクセルで。

先ほど、カテゴリー違いで質問してしまったので、再投稿です。。 初めまして。エクセルVBA等の初心者なのですが教えてください。 エクセルで、表のような様式を作成し、 その中のデータは他のシートに入れ、それを次々と変更していきたいのです。 たとえば、Aというデータを様式にはめ込み印刷。 次に、Bというデータを様式にはめ込み印刷。 これが、50個あります。 様式を50個作るという方法でやろうとしましたが それではあまりにも大変なので、皆様のお知恵を貸して頂きたいです。 うまく説明できてるかはわかりませんが・・・。 よろしくお願いします。

みんなの回答

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.3

物凄くざっくりですが 前提としてデータシートが50ある 51番目以降に"様式"シートがある   Dim iCnt As Integer      For iCnt = 1 To 50     Sheets(iCnt).Select     Range(Cells(1, 1), Range("A1").SpecialCells(xlCellTypeLastCell).Address).Copy     Sheets("様式").Select     Range(Cells(1, 1), Range("A1").SpecialCells(xlCellTypeLastCell).Address).PasteSpecial (xlPasteValues)     Sheets("様式").PrintOut   Next iCnt (XP/Excel2003) 連続して様式シートに『値のみ』コピー 様式シートを印刷 を50回します 後始末やなんかは考慮していません No.2さんもおっしゃる通り、ループを1 to 1にして、一度仕上がりを確認すべきです Sheets(iCnt) なんてのは正直邪道ですが、まぁ質問内容から使える材料で行うとなると、コレが一番手っ取り早いんで^^; ちゃんとやるには、どこかのセルなり、変数なりに連続してシート名を入れて、そのシート名と一致するシートに対して…と行います マクロの記憶で手動操作をVBAとしてどう書くのか見ると、やりたい事の足掛かりが見える時が多いです 1回のやり方が判れば、連続させるのは、何回か試せばすぐわかります ぜひお試しを!

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

差込データが50個(50行)あり 一つの印刷フォームに1行づつデータを差し込み 印刷を50行分繰り返すと解釈しました 印刷データ(表)を作成します(シート名は"印刷データ"にしてください) 1行目を見出しとし、仮に項目を項目1~項目6とします 2行目からを印刷データとし、50行作成します 最終行は、1行目を見出しとしているため51行になります 次に 印刷フォームを作成します(シート名は"印刷フォーム"にしてください) 一度印刷をして、フォームの出来栄えを確認しておくことをお薦めします 印刷データの差込位置を決めます 例えば 印刷フォームのセルA1に印刷データの項目1を差し込む      〃       B2に   〃    項目2を  〃      〃       C3に   〃    項目3を  〃      〃       D4に   〃    項目4を  〃      〃       E5に   〃    項目5を  〃       〃       F6に   〃    項目6を  〃 とします ----------------------------------------------------- Sub test() Dim i As Integer Worksheets("印刷フォーム").Select For i = 2 To 51 Step 1   Range("a1").Value = Worksheets("印刷データ").Cells(i, 1).Value Range("b2").Value = Worksheets("印刷データ").Cells(i, 2).Value Range("c3").Value = Worksheets("印刷データ").Cells(i, 3).Value Range("d4").Value = Worksheets("印刷データ").Cells(i, 4).Value Range("e5").Value = Worksheets("印刷データ").Cells(i, 5).Value Range("f6").Value = Worksheets("印刷データ").Cells(i, 6).Value ActiveSheet.PrintOut Next End Sub ------------------------------------------------------------- 簡単なコマンドで組んでいるので解説はしません ヘルプを活用してください

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

最初から全てVBAでやろうと思うと大変なので、標準機能でできるところは、極力使うべきです。 例えば、A1セルに入れた数字を用いて、INDEX関数で、様式中のデータを他のテーブルから参照して来る様にしておけば、 Sub test() Dim i As Long For i = 1 To 50 ActiveSheet.Range("A1").Value = i ActiveWindow.SelectedSheets.PrintOut Copies:=1 Next End Sub VBAはこれだけで済んでしまいます。

関連するQ&A