• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでブックの集計の仕方を教えてください。)

VBAでブックの集計方法を教えてください

このQ&Aのポイント
  • 初心者がVBAを使ってブックの集計方法を探しているが、うまく作動しない。値だけをコピーして集計したいが、罫線やパターン、数式までコピーされたり、最後のシートだけ2重にコピーされるなど、意図しない動作が起きる。どの記述が間違っているか分からない。
  • H22.12月度のフォルダーにはA店~E店の集計ブックがあり、それぞれのシートから値をコピーして集計したい。しかし、セルの書式設定だけでなく、罫線やパターン、数式も一緒にコピーされたり、最後のシートだけ2重にコピーされるなど、予期しない動作が起きる。初心者なので、どのような記述が間違っているのかわからない。
  • VBAを使ってH22.12月度のフォルダーにあるA店~E店の売上一覧シートから値をコピーして集計する方法を探している。しかし、セルの書式設定だけでなく、罫線やパターン、数式もコピーされてしまったり、最後のシートだけ2重にコピーされるなど、うまくいかない。自分で本やネットで調べて作成したため、どの記述が間違っているのか分からない。

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

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

#1です。おまけです。 サブルーチン化すると、コードが短くて済みます。ご参考まで。 testの方を実行させて下さい。 Sub test() testsub "C:\hogehoge","BookA.xls" testsub "C:\hogehoge","BookB.xls" 以下別の集計元ファイルについて同様に記述。 End Sub Sub testsub(myFolderName As String, myfileName As String) Workbooks.Open Filename:=myFolderName & "\" & myfileName Sheets("Sheet1").Select Range("B6:F25").Select Selection.Copy Windows("Book1.xls").Activate Sheets("Sheet1").Select Range("B6").Select If Range("B6").Value <> "" Then Range("B65536").Select '2003以前の場合 Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Windows(myfileName).Activate Application.CutCopyMode = False ActiveWorkbook.Close savechanges:=False End Sub

kumi4520
質問者

お礼

回答ありがとうございます 返事が遅くなってごめんなさい いろいろ試してみましたけど、なかなかうまく行かなくて、年末が近づいて他の事で忙しくなるし。。。 今年中には出来上がりそうに無いですけど、せっかく回答もらったのでなんとかしたいなとは思います。

その他の回答 (1)

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

q6370420で回答した者ですが、今日はたまたま家でごろごろしておりますので... 頑張っていらっしゃる様子がうかがえますので、最小限の助言に止めておきますが、 値複写のコードと、丸ごとコピーのコードをダブって実行してしまっております。 先に回答したのは、丸ごとコピーですので、値複写に差し替えてください。 それでは、健闘を祈ります。 Sub test() Windows("Book1.xls").Activate Sheets("Sheet2").Select Range("B6:F25").Select Selection.Copy Windows("Book2.xls").Activate Sheets("Sheet1").Select Range("B6").Select If Range("B6").Value <> "" Then Range("B65536").Select '2003以前の場合 Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If 'activesheet.pasteの代わりに値複写のコードを記述 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

関連するQ&A