- 締切済み
エクセルで。
先ほど、カテゴリー違いで質問してしまったので、再投稿です。。 初めまして。エクセルVBA等の初心者なのですが教えてください。 エクセルで、表のような様式を作成し、 その中のデータは他のシートに入れ、それを次々と変更していきたいのです。 たとえば、Aというデータを様式にはめ込み印刷。 次に、Bというデータを様式にはめ込み印刷。 これが、50個あります。 様式を50個作るという方法でやろうとしましたが それではあまりにも大変なので、皆様のお知恵を貸して頂きたいです。 うまく説明できてるかはわかりませんが・・・。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- pulsa
- ベストアンサー率57% (34/59)
物凄くざっくりですが 前提としてデータシートが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)
差込データが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)
最初から全て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はこれだけで済んでしまいます。