Excel (VBA)

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

 
(指定なし : Microsoft 365)
マクロをつかってコピペをしたい
投稿日時: 24/04/12 08:24:47
投稿者: Aaabuuxz

マクロを使ってデータをコピーし別ブックの指定セルに値貼りする作業を行いたいです。
 
例えば
ブック1、シート1のA1からD847までデータがあり、1行目はタイトルとします。タイトル行を除き
A2からD列のデータが入っいる最終行を自動で探し範囲をコピー(今回だとA2からD847まで)し、別ブックであるブック2のシート1
B6セルから値貼り。
 
その後ブック1のシート、シート2に移り、同様タイトル行を除いた
A2セルからD列のデータが入っている最終行を探してコピー。その後ブック2のシート1のG6セルから値貼り。
 
このように作業繰り返したいのですが、いい方法がございますでしょうか。

回答
投稿日時: 24/04/12 09:08:02
投稿者: WinArrow

コードの作成依頼ではないですよね?
 
基本的な要件
1.複写先ブックについて
  説明では、「複写元シートの1行目を除き」と書いてあるから、
  既存ブックで、既存シートを考える。
  既存データは、どのようにするのか?
  また、複写元シート名と、複写先シート名は同じなのか?
  複写元ブックの存在するシートが複写先ブックに存在しなかったときの対応は?
   等を予め考えておくこと
 
2.複写元側
  1行目を除いたシートのデータ行を取得する方法は、幾つかあります。
  最も簡便な方法は、Usedrange(データの存在するセル範囲)を使うとよいでしょう。
  Usedrangeでは、1行目が含まれてしまうので、Offsetで1行下にずらします。
 
3.複写処理は、マクロの記録でコードが作成できるが、
  「値」だけという条件ならば、
  「.Value = .Value」で複写可能です。
   例
    Workbooks(複写先).Sheets(n番目).Range(セル範囲).Value = Workbooks(複写元).Sheets(n番目).Range(セル範囲).Value
 
※3を核(コア)としてシートのループを組み立てればよいでしょう。
  

回答
投稿日時: 24/04/12 15:33:36
投稿者: QooApp

▼コピー作業
入力されている最終行 最終列の探し方については
以下のリンク先で何パターンか記述例があります。
https://www.niji.or.jp/home/toru/notes/8.html
 
主にS3-1あたりが汎用的に便利です。
 
投稿内容的にはさして複雑な挙動はないので
「VBA 行 コピー」や「VBA セルコピー 別のセル」などで調べると作例があると思います。
 
完全で完璧な効率重視のコードの作例はほとんどありませんが、
ご自身が要求している機能について理解度を上げることができるくらいのコード構成はしていると思いますので作例をまずは参考に完成させてみてください。
 
セルの情報量が多かったり、
セルの総コピー数(実行回数)が多ければ動作が重くなることはあるでしょうが、
単純で稚拙なコードであったとしても(本件に関しては)さして困るほどの負荷は発生しないはずです。

投稿日時: 24/04/13 11:12:02
投稿者: Aaabuuxz

WinArrow さん
 
ご丁寧にご教授いただきありがとうございます。
記載頂いたコードとループなどを利用してみます。

投稿日時: 24/04/15 13:45:43
投稿者: Aaabuuxz

QooApp さん
 
記述例のリンクや参考例をご教授いただきありがとうございます。
活用させて頂きます。