添付画像をご覧ください。
【やりいたい事】
ブック1の A2:C2 のセルの値を ブック2のA8:C8 へ転記したい
【他情報】
ブック1とブック2は同じフォルダ内(仕事フォルダ)にあります
ブック1の場所とファイル名: C:\Users\2020\Desktop\仕事\Book1.xlsm
ブック1シート名:Sheet1
ブック2の場所とファイル名: C:\Users\2020\Desktop\仕事\Book2.xlsx
ブック2シート名:Sheet1
【参考:詳しい方が教えてくれたコード】
※自分の貼付方が悪いのか動かなかったです
Option Explicit
Public Sub 別ブックへ転記2()
Dim ws1 As Worksheet
Dim wb2 As Workbook
Dim ws2 As Worksheet
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Set ws1 = Worksheets("Sheet1")
maxrow1 = ws1.Cells(Rows.Count, "A").End(xlUp).Row
If maxrow1 < 4 Then Exit Sub
Set wb2 = Workbooks.Open(ThisWorkbook.path & "\" & "Book2.xlsx")
Set ws2 = wb2.Worksheets("Sheet1")
maxrow2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row
If maxrow2 < 4 Then maxrow2 = 4
row2 = maxrow2 + 1
For row1 = 4 To maxrow1
ws2.Cells(row2, 1).Resize(1, 3).Value = ws1.Cells(row1, 1).Resize(1, 3).Value
row2 = row2 + 1
Next
wb2.Save
wb2.Close
MsgBox ("完了")
End Sub
No.9ベストアンサー
- 回答日時:
>すいません、ブック2もオープンにしたまま、連続して転記をする状態がありました!!!
>しかし、ブック1から常に実行→実行ボタンもつけますので、常にブック1からの実行てなり問題ないことを確認しました
結局、現状のままで良いということでしょうか。
マクロの勉強は最初は、参考書を購入して勉強しました。
マクロで何かの特定のことに関して調べる場合は、下記の
オフィス田中をよく利用しています。
http://officetanaka.net/excel/vba/tips/
No.8
- 回答日時:
No7です。
そもそもの話になりますが、マクロ実行時の前提は
①ブック1はオープンした状態、ブック2はクローズした状態
になっています。
これを
②ブック1はオープンした状態、ブック2もオープンした状態
にしたいということでしょうか。
③それとも、①、②のどちらの状態であっても正しく動作するようにしたい
ということでしょうか。
すいません、ブック2もオープンにしたまま、連続して転記をする状態がありました!!!しかし、ブック1から常に実行→実行ボタンもつけますので、常にブック1からの実行てなり問題ないことを確認しました
すごく効率的で助かっています
今、コードの理解も進めています
ちなまに、たつまるさんは
マクロの勉強は、どのよううにして
行ったんですか???
自分は、、すごく、マクロに興味が
あり、勉強しています
No.7
- 回答日時:
No6です。
No6は無視してください。
ブック2、ブック1をともにオープンし、ブック2をアクティブ状態にして、
当該マクロを実行すると、ブック2の情報をブック2に転記してしまうことが確認できました。
本来、ブック2はクローズしてあることが前提です。
従って、ブック2がオープンされた状態でマクロを実行したとき、
以下のいずれかの動作が考えられます。
①ブック2がオープン中なので、エラーとする。
②構わずに処理を続行し、ブック1の内容をブック2に転記する。
上記で②の方を希望されるということでしょうか。
No.6
- 回答日時:
>ブック1【転記元】ではなく、ブック2【転記先】がアクティブになっていると、ブック2の情報をブック2に転記してしまいます。
そもそもの話ですが、ブック2はクローズされた状態です。
それをオープンしたときに、ブック2がアクティブになります。
最初からブック2がアクティブにはならないはずですが・・・・・
マクロは、ブック1の標準モジュールに登録されている前提です。
ブック1は、マクロのあるファイルなので、必ず
Set ws1 = Worksheets("Sheet1")
でブック1のシート1がws1に設定されることが保証されるはずです。
具体的にどのような操作をしたとき、ブック2の情報をブック2に転記してしまうのでしょうか。
No.5
- 回答日時:
No4です。
If maxrow2 < 4 Then maxrow2 = 4
は
If maxrow2 < 2 Then maxrow2 = 2
の誤りでした。訂正します。
すいませんありがとうございます。
あと1点
ブック1【転記元】ではなく、ブック2【転記先】がアクティブになっていると、ブック2の情報をブック2に転記してしまいます。
以下コードの転記元を Sheet1だけではなく、ブック1のシート1と
指定すれば出来ると思いますが、コードが書けません。
ご教授お願いします。なお、他の方法でも大丈夫です
ws2.Cells(row2, 1).Resize(1, 3).Value = ws1.Cells(row1, 1).Resize(1, 3).Value
No.4
- 回答日時:
No3です。
maxrow2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row
A列の最終行を取得します。
If maxrow2 < 4 Then maxrow2 = 4
もし、最終行が4未満なら、強制的に最終行を4にします。
row2 = maxrow2 + 1
row2は、書き込み先の行番号なので、
最終行+1をrow2にセットします。
ws2.Cells(row2, 1).Resize(1, 3).Value = ws1.Cells(2, 1).Resize(1, 3).
Value
(転記先row2行の1列目のセル)を3列に伸ばしたセルへ
(転記元2行、1列目のセル)を3列に伸ばしたセルを転記
No.3
- 回答日時:
以下のようにしてください。
転記元は、常にA2~C2です。
Public Sub 別ブックへ転記2()
Dim ws1 As Worksheet
Dim wb2 As Workbook
Dim ws2 As Worksheet
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Set ws1 = Worksheets("Sheet1")
Set wb2 = Workbooks.Open(ThisWorkbook.path & "\" & "Book2.xlsx")
Set ws2 = wb2.Worksheets("Sheet1")
maxrow2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row
If maxrow2 < 4 Then maxrow2 = 4
row2 = maxrow2 + 1
ws2.Cells(row2, 1).Resize(1, 3).Value = ws1.Cells(2, 1).Resize(1, 3).Value
wb2.Save
wb2.Close
MsgBox ("完了")
End Sub
ありがとうございます。動きました。感動しています。
今、コードを理解しているところです。
以下4つのコードについて、簡単に教えていただけないでしょうか。
どんな作業。指示をしているといような感じでですね。
簡単にで大丈夫です。
maxrow2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row
If maxrow2 < 4 Then maxrow2 = 4
row2 = maxrow2 + 1
ws2.Cells(row2, 1).Resize(1, 3).Value = ws1.Cells(2, 1).Resize(1, 3).
Value
No.1
- 回答日時:
>【やりいたい事】
>ブック1の A2:C2 のセルの値を ブック2のA8:C8 へ転記したい
これだけでいいのであれば下記のコードで動くと思いますが、
ブック1に2行以上のデータがあっても転記したい、
とかブック2の末尾に転記したい、などの要望には対応していません。
---------------------------------------------------
Option Explicit
Public Sub 別ブックへ転記2()
Dim ws1 As Worksheet
Dim wb2 As Workbook
Dim ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set wb2 = Workbooks.Open(ThisWorkbook.Path & "\" & "Book2.xlsx")
Set ws2 = wb2.Worksheets("Sheet1")
ws2.Cells(8, 1).Resize(1, 3).Value = ws1.Cells(2, 1).Resize(1, 3).Value
wb2.Save
wb2.Close
MsgBox ("完了")
End Sub
---------------------------------------------------
回答ありがとうございます
説明が下手だったのですが
ブック1のセル番地は変わらない
のですが
ブック2→転記先の行は
時間によって、8行目、9行目と
行だけ、増えていきます
台帳で、どんどん下に追加して
いきます
アドバイスいただけましたら
宜しくお願い致します!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
エクセルで参照しているデータ...
-
フォルダ内の複数ファイルから...
-
ブックのピボットを別ブックに...
-
複数のセルをコピーし、別シー...
-
Excel VBA セルと同じ名前のブ...
-
アクセスvbaでエクセルブックを...
-
Excel(2010)のフィルターが保...
-
Excelファイルを開いても何も表...
-
Excel起動時に特定のワークシー...
-
エクセルにおける,「ブック」...
-
エクセルファイルを開かずにpdf...
-
WorkBooksをオープンさせずにシ...
-
エクセルで「ディスクがいっぱ...
-
外部ブック参照が#REF!になって...
-
VBAでブック保護非保護を判定す...
-
【VBA】特定シート 名前編集・...
-
エクセルで50行ごとに区切った...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
Excelで複数ブックの同一セルに...
-
VBA バックグラウンドで別ブッ...
-
エクセルで50行ごとに区切った...
-
エクセルで「ディスクがいっぱ...
-
エクセルにおける,「ブック」...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
-
ブックのピボットを別ブックに...
-
エクセルシートの一部を送りたい
-
エクセル2016です。「ブッ...
-
エクセルで別ブックをバックグ...
-
フォルダ内の複数ファイルから...
-
複数ファイルから特定シートの...
おすすめ情報