- ベストアンサー
excelマクロで異なるワークブックに値を入力する方法
- excelのマクロを使用して、異なるワークブックに値を入力する方法について教えてください。
- 具体的には、あるワークブックのフィルタした値を、別のワークブックの指定した列の最後の行に入力したいです。
- ご教授のほど、よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
必要なファイルはすべて開いておいてくださいね はい、どうぞ Sub test() Dim i As Long For i = 2 To Workbooks("ワークブックA").Worksheets("sheet1").Range("a65536").End(xlUp).Row Workbooks(Workbooks("ワークブックA").Worksheets("sheet1").Cells(i, 1).Value).Worksheets("sheet1").Range("g65536").End(xlUp).Offset(1, 0).Value = _ Workbooks("ワークブックA").Worksheets("sheet1").Range("b1").Value Workbooks(Workbooks("ワークブックA").Worksheets("sheet1").Cells(i, 1).Value).Worksheets("sheet1").Range("i65536").End(xlUp).Offset(1, 0).Value = _ Workbooks("ワークブックA").Worksheets("sheet1").Cells(i, 2).Value Next i End Sub #1さん、#2さんも言われていますが、必要なことが抜けているので サンプルとしておきます 参考まで
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
質問者はエクセルのシートの概念が無いのかな。 >「あ」のブック G列 は、「あ」のブックのシート1(例)のG列・・のように書くべきだ。 ブックAを開いてシート1(仮定)をアクチブにしておく。 ーー 「あ」のブック G列に”シャンプー”、 I 列に”0.05” ・・・ 「え」のブック G列に”シャンプー”、 I 列に”5.5” は関連の無い独立した作業なので、各処理コードを順に書き連ねるでよかろう。 あブックを開き、ブックAのあの行を探し、その行のシャンプー列の数字を、あブックのG列に商品名、I列にブックAから引いてきた数をセットする。あブックは変更を保存して閉じる。 いブック、うブック、えブックも同じ処理パターンを繰り返す。 この質問は丸投げなので、また処理も初等的なスキルで住むので書かないから、勉強すること。 ただ質問例ではシャンプー1つだが、多数有る場合はどうなるか。 質問表現が頼りないような感じがするが、実際は質問どおり1つかな。 WebでWorkbooks.Open save などで照会すると http://homepage2.nifty.com/kasayan/vba/excel7.htm などたくさん記事がでるから、読むこと。
- fujillin
- ベストアンサー率61% (1594/2576)
不明の部分は適当に書いていますので、適宜修正して考えてください。 ワークブックAの行を上から順に処理していくとして 1)1列目(?)が”商品名”であることを確認してスタート 商品名である「シャンプー」(2列目の値か?)を記憶しておく 2)次の行から繰り返しの始まり 1列目(?)の値、「あ」から開きたいブック名を作成する (多分、 「あ」 & ".xls" なのかな?) フォルダが違う場合は、パスごと作成する必要があります。 2)指定したファイルを開くのは Workbooks.Open ファイル名 3)開いたファイルで、例えばG列の最終行+1を取得するには rw = Cells(Rows.Count, "G").End(xlUp).Row + 1 なので、その行のG列に、記憶してあるシャンプーを記入 同じ行(あるいはI列の最終行か?)に「あ」のあった行の2列目(?) の0.05を記入 4)ファイルをクローズ 5)次の行の1行目(?)が「商品名」だったら、1)に戻る。 空白だったら、マクロ終了(…でいいのか不明ですが。) そうでない場合は、2)に戻る。 ループ(繰り返し)処理は、For~Nextでもできますが、While~WendとかDo~Untillみたいなほうが書きやすいかも。 (起こり得る状況に応じてエラー処理が必要になるかもしれません。例えば、開こうとしたファイルがない場合とか…)