Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2021)
ある決まった法則で印刷したいです
投稿日時: 24/10/23 02:30:10
投稿者: JIRO-KUN

エクセルのひとつのシートの
セルA1に AAA,BBB,CCC,DDD
セルA2に EEE,FFF,GGG,HHH
セルA3からも同じく複数行にカンマで区切られた"ある文字"があります。
 
ひとつのセルにカンマで区切られている"ある文字"は多くて12個で区切られています。
(●●●,〇〇,123,■,△△△△,XXX,123,789,あああ,BBB,ZZZ,★)
 
(ひとつのセル内の値をカンマで区切られた値を別のセルに置き換えてから?)
 
それを印刷したいのですが印刷の方法は
 
【条件1】
1行目が1ページ
2行目が2ページ
例えば100行あり、100行目は100ページ目に印刷したい
 
【条件2】
1ページ目のセルA1には AAA
1ページ目のセルA2には BBB
1ページ目のセルA3には CCC
1ページ目のセルA4には DDD
以下空白
これを1ページとします。
 
次に
2ページ目のセルA1には EEE
2ページ目のセルA2には FFF
2ページ目のセルA3には GGG
2ページ目のセルA4には HHH
以下空白
これを2ページ目とします。
 
3ページ目も同じように100行あれば100ページまで同じように印刷したいです。
 
 
これはVBAでできますでしょうか。
それともエクセル関数のほうがよいでしょうか。
 
もし、VBAでできるのでしたら教えていただきたいと思います。
エクセルは2016と2021を使用しています。
よろしくお願いいたします。

回答
投稿日時: 24/10/23 06:01:49
投稿者: simple

こちらの質問掲示板の管理人さんから、以下の「Q&A掲示板ご利用上のお願い」が提示されています。

引用:
経緯、状況をできる限り正しく説明しましょう
質問者の方は、操作をご自身で試し、以下のように、質問内容をできる限り明確にしてご投稿ください。
.どのような目的で
.どんな経緯で試してみたのか
.どこでつまずいているのか
回答者の方もアドバイスがしやすくなり、より速い解決につながります。
また、禁止事項として
引用:
コード制作依頼
「●●●を実行するようなマクロを作りたいのですが」「●●●をする方法を教えてください」といった、コード制作依頼ともとれるような質問はおやめください。
とあります。余り厳格に守る必要もないかもしれませんが、管理人さんの発言ですので、念のため付記します。
 
どこまでトライされているか(途中でも結構なので、もしあればコードを提示して)説明されると、それに応じてコメントできますし、後が続けやすくなり、お互いに有益かと思います。
 
ちなみに、書き込み先のシートに書き込むのは提示された項目だけですか?
すでになんらかのものが書き込まれていて、それを避けて書き込む必要があるということはないのですね。
また、別のシート(一つ)に、途中に"改ページ"を挿入しながら連続して書き込んでいいわけですね。

投稿日時: 24/10/23 08:30:26
投稿者: JIRO-KUN

simpleさま
 
回答ありがとうございます。
VBAは行ったことはなく初心者未満でやりたいことだけを記載させていただきました。
禁止事項もあるとわからず質問してしまって失礼致しました。
 
 
.どのような目的で
→ある決まった法則で印刷したい
データを抽出したcsvファイルがあり、そのcsvファイルの内容を記載させていただきました。
そのデータをエクセルにそのまま貼り付け、貼り付けると別のシートに値が返され?
それを印刷したいです。
 
.どんな経緯で試してみたのか
→試してないです。すみません。
 
.どこでつまずいているのか
→何もトライしておらず、質問自体この掲示板でよいのか戸惑っているところです。
 
 
トライしておりません。
(そのトライの方法自体わかっておりません。すみません。)
 
>書き込み先のシートに書き込むのは提示された項目だけですか?
すでになんらかのものが書き込まれていて、それを避けて書き込む必要があるということはないのですね。
 →はい
 
 
>別のシート(一つ)に、途中に"改ページ"を挿入しながら連続して書き込んでいいわけですね。
 →はい。仰るとおりです。
 
よろしくお願いいたします。

回答
投稿日時: 24/10/23 10:38:06
投稿者: mattuwan44

マクロを触ったことない。
これからマクロを覚える気もない。
なら、
マクロの修正が必要になったらどうするのか?とか、
何年後かの業務の引継ぎをどうするのか?とか考えると、
マクロを触らない方がたぶんみんなが幸せだと思います。
 
元のファイルがCSVなら、
 
1)先にエクセルを開いて、
2)データ→データの取得→ファイルから→テキストまたはCSVから
 
で、インポートすると、カンマ区切りでセルを分けてくれます。
後は、
 
3)改ページプレビューに表示を変更
4)改ページを入れたいセル選択→右クリック→改ページの挿入
 
としていけばよさそうです。
 
この作業をマクロ化すれば、ボタンを1クリックだけで自動で
作業をやってくれるようにできますが、
そのマクロを作っている間に作業が終わるかと思います。
この作業を1日に何回も行うということならば、
マクロの記録から始めることをお勧めします。

回答
投稿日時: 24/10/23 12:41:06
投稿者: Suzu

引用:
1)先にエクセルを開いて、
2)データ→データの取得→ファイルから→テキストまたはCSVから
 
で、インポートすると、カンマ区切りでセルを分けてくれます。

 
ここまでは一緒で、
 
3) 差し込み印刷を使用しWord で印刷
 
という方法もありかと。

回答
投稿日時: 24/10/23 12:50:36
投稿者: simple

# 別の用事をしておりました。返事が遅くなり失礼。
 
> VBAは行ったことはなく初心者未満でやりたいことだけを記載させていただきました。
> 禁止事項もあるとわからず質問してしまって失礼致しました。
ああそうでしたか。
特にご自分でVBAを学習したいということではないのですね? 残念です。
そういうことですと、こちらの質問掲示板の趣旨にそぐわないかもしれませんね。
真正面からそう言われてしまうと、ごめんなさい、少なくとも私は回答できません。

回答
投稿日時: 24/10/25 11:12:16
投稿者: Suzu

引用:
1ページ目のセルA1には AAA
1ページ目のセルA2には BBB
1ページ目のセルA3には CCC
1ページ目のセルA4には DDD
以下空白
これを1ページとします。
  
次に
2ページ目のセルA1には EEE
2ページ目のセルA2には FFF
2ページ目のセルA3には GGG
2ページ目のセルA4には HHH
以下空白
これを2ページ目とします。

 
 
印刷プレビューでいう1ページ目、2ページ目 という認識で
1メージ目 の 印刷範囲と同じセル に 別の値を入れ、2ページ目とする事はできません。
 
1ページ目 2ページ目というのが、印刷の 1枚目、2枚目と言うなら上記でも理解できますが・・
 
 
Sheet1 の 1行目〜 のデータを
 
Sheet2 の
 1ページ目は、1列目 (A列)
 2ページ目は、2列目 (B列)
  :
の前提で。
 
Sub sample()
  Dim wst1 As Worksheet
  Dim wst2 As Worksheet

  Dim i As Long
  Dim j As Long

  Dim varValue As Variant

  Set wst1 = Worksheets("Sheet1")
  Set wst2 = Worksheets("Sheet2")

  i = wst1.Range("A1").End(xlDown).Row
  wst2.Cells.Clear
  wst2.Cells.PageBreak = xlPageBreakNone

  For j = 1 To i
    varValue = Split(wst1.Cells(j, 1), ",", 12, vbTextCompare)
    wst2.Cells(1, j).Resize(UBound(varValue, 1)) = WorksheetFunction.Transpose(varValue)
    wst2.Columns(j + 1).PageBreak = xlPageBreakManual
  Next j
End Sub

 
あくまで学習を目的としてサンプルを提示しています。
学習をして欲しいので、解説は入れていません。
目的と違う動作については、ご自身で調べ 改編する手助けのサンプルコードと考えてください。

回答
投稿日時: 24/10/25 11:36:25
投稿者: gombohori

印刷用シートを準備します。
  ページ設定のシートタブで、印刷方向を「上から下」に変更
  1列毎に改ページを挿入
   B列を選択して改ページ挿入 B列を選択して改ページ挿入... を必要なだけ繰り返しす
   100列全部に改ページを挿入するのはちょっと大変ですが、
   1回やっておけば永久に使えるので、がんばってください
 
元のシートで
 データ→区切り位置 でセルを分割
 分割された範囲全体をコピー
  印刷用シートに形式を選択して貼り付け で 行列を入れ替えて貼り付け
 

投稿日時: 24/10/31 09:43:47
投稿者: JIRO-KUN

■mattuwan44さま
 
2)データ→データの取得→ファイルから→テキストまたはCSVからで、インポートすると、カンマ区切りでセルを分けてくれます。
 →できました。
 
4)改ページを入れたいセル選択→右クリック→改ページの挿入
 →1)〜4) 全てできました。ありがとうございます。
 
この作業は1日に1回か2回です。
マクロ化すればいいのですね。
そのマクロの登録?記録?のやり方がわからないのでこれから勉強していきます。
ありがとうございます。
 
 
■Suzuさま
 
3) 差し込み印刷を使用しWord で印刷
 →差し込み印刷、何のことかわかりませんので調べてみます。
 →Wordでもできるのですね。ありがとうございます。
 
・ご自身で調べ 改編する手助けのサンプルコードと考えてください。
 →ありがとうございます。
 
■simpleさま
 
VBAはやりたい内容によってはExcel関数より
優れている部分が大いにあると思い質問させていただきました。
これから時間のある時にVBAの仕組みなどじっくり勉強し取り入れたいと思います。
 
 
■gombohoriさま
 
VBAを使用せずできました。
>100列全部に改ページを挿入するのはちょっと大変ですが、
→仰るとおり1回やっておけば永久に使えるのでこれくらい大丈夫です。
ありがとうございました。
 
 
 

これからエクセル関数だけではなく、VBAも勉強していきたいと思います。
皆様ありがとうございました。