Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Excel 2016)
別のExcelファイルからデータをコピー
投稿日時: 20/09/11 14:00:06
投稿者: naoki-x1

別のExcelファイルからデータをコピーするマクロを教えて頂きたいです。
ファイル@sheet1
    A列 B列 C列 D列 E列 F列
1行 Aグループ
2行 社員番号 123 456 789 987 654
3行 氏名 徳川家康 豊臣秀吉 織田信長 武田信玄 明智光秀
4行 有休
 
上記のような表がありまして、また、別sheetには
 
ファイル@sheet12
    A列 B列 C列 D列 E列 F列
1行 Bグループ
2行 社員番号 234 567 890 345 678
3行 氏名 次元大介 峰不二子 工藤新一 山本小鉄 馬場正平
4行 有休
 
このような同じような表がありまして、 それぞれのシートの表の4行目の有休欄に別ファイルからデータを貼り付けたいのです。
 
別ファイル(ファイルA)
 ファイルAsheet1
       A列 B列 C列
1行 社員番号 氏名 有休日数
2行 123 徳川家康 2
3行 234 次元大介 2
4行 321 明智光秀
5行 345 山本小鉄 3
6行 456 豊臣秀吉
7行 567 峰不二子 1
8行 678 馬場正平
9行 789 織田信長 1
 
このようにファイルAは、ファイル@とは行と列が逆になっており、しかも並び方もファイル@とは違います。
そのうえ、ファイル@の拡張子はXLSですが、ファイルAはXLSとXLSXが混在している状態です。
 
ファイル@に、別ファイル(XLSまたはXLSX)を開いて該当部分のデータを貼り付けるマクロを登録したいのです。
ファイル@は開いた状態、ファイルAは閉じた状態です。
 
ご教授宜しくお願いいたします。

回答
投稿日時: 20/09/11 21:32:01
投稿者: simple

こちらの掲示板は、リクエストしてコードを受け取るという感じではない(*)ので、
出来ているところまでコードを提示してもらえますか?
別ファイルを開くとかは少なくともできるはずですね。
 
コードを考えるに当たってのヒントは以下のようなものです。参考にしてください。
・各人の社員番号がわかれば、ワークシート関数VLOOKUP関数を使用して、
  その人の有給休暇日数は取得できるはずです。
・その結果を、4行目に書き込みます。
・その動作を、2行目の2列目から、最終列(Cells(2, Columns.Count).End(xlToLeft).Column)まで
  繰り返します。
・これを二つのシートに渡って繰り返します。
 
(*)こちらのサイトの「利用上のお願い」などをお読み下さい。

回答
投稿日時: 20/09/11 22:37:57
投稿者: simple

もちろん色々なやりかたがあります。
例えば、VLOOKUPを使った計算式をセルに書き込み、
そのあとで、.Value = .Value として、計算式を値にしてしまうという方法もあります。
どれでも結構なので、トライしてみて下さい。
詰まったら、具体的に不明点を書いてください。

回答
投稿日時: 20/09/12 12:24:59
投稿者: mattuwan44

例示を見る限り、
 
シートごとに、
データ範囲をコピー
行列を入れ替えて貼り付け
を繰り返し
最後に
番号で昇順に並び替え
したらよいかと思います。
 
マクロにしたければ、
まずはマクロの記録でコードを探るところから始めてみてはいかがでしょうか?

トピックに返信