同じフォルダ内に次のブックがあります。
・「日報」フォルダ
・「入力」ブック
・「日報」ブック
「日報」ブックの「入力」シートのセルに入力して、ボタンを押すと
「日報」ブックの指定のセルに順にコピーしていくようにしたいの
ですが、コードをお教えいただけないでしょうか?
具体的には次のようになります。
「入力」ブックの「入力」シート→「日報」ブックの「日報」シート
A2,C2,D2,E2,F2→→→→→→A5,D5,F5,L5,P5
A3,C3,D3,E3,F3→→→→→→A6,D6,F6,L6,P6
A12,C12,D12,E12→→→→→→A34,J34,E34,E35
A13,C13,D13,E13→→→→→→A36,J36,E36,E37
このように入力されるようにしたいと思います。
実際にはもう少し同じようにコピーするところが
あるので、後でセル番地を追加できるようなコード
であれば非常にありがたいです。コードを教えて
ほしいなんて本当にずうずうしいですが、どうぞ
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
#3です。
直すのは簡単です。マクロは日報ブックに、対比表も日報ブックのSheet2に作成としてください。
Sub test()
Dim sourceRange As Range
Dim destRange As Range
Dim sourceAddress As String
Dim destAddress As String
Dim addressTable As Range
Dim i As Long
Set addressTable = ThisWorkbook.Sheets("Sheet2").Range("A1").CurrentRegion
For i = 1 To addressTable.Rows.Count
sourceAddress = addressTable.Cells(i, 1).Value
destAddress = addressTable.Cells(i, 2).Value
Set sourceRange = Workbooks("入力.xls").Sheets("入力").Range(sourceAddress)
Set destRange = ThisWorkbook.Sheets("日報").Range(destAddress)
destRange.Value = sourceRange.Value
Next i
End Sub
この回答への補足
どうもありがとうございます。
実行してみたところ
Set sourceRange = Workbooks("入力.xls").Sheets("入力").Range(sourceAddress)
で黄色く反転してエラーとなります。ここのどこかがおかしいよ、
という意味なんでしょうか?
mitarashiさんありがとうございます。シート名が間違っていました。うまくできました!この対象表のアイデアすばらしいです。これで
可変性が高まって今後も使えます。よいアイデアありがとうこざいます。
No.4
- 回答日時:
#3です。
格好良くないところがあったので手直しです。(意味は一緒です)Sub test()
Dim sourceRange As Range
Dim destRange As Range
Dim sourceAddress As String
Dim destAddress As String
Dim addressTable As Range
Dim i As Long
Set addressTable = ThisWorkbook.Sheets("Sheet2").Range("A1").CurrentRegion
For i = 1 To addressTable.Rows.Count
sourceAddress = addressTable.Cells(i, 1).Value
destAddress = addressTable.Cells(i, 2).Value
Set sourceRange = ThisWorkbook.Sheets("入力").Range(sourceAddress)
Set destRange = Workbooks("日報.xls").Sheets("日報").Range(destAddress)
destRange.Value = sourceRange.Value
Next i
End Sub
この回答への補足
mitarashiさんありがとうございます。申し訳ございません、申し上げておくべきでした。入力ブックは実はPDAのポケットエクセルのブック
ですので、VBAなどに対応しておらず、基本的な編集しかできません。
したがって操作するのは日報ブックからとしたいのです。
手直しまでしていただいて本当に心苦しいです。
No.3
- 回答日時:
別解です。
前提条件として、1.マクロは入力のブックに記述
2.入力ブックのSheet2に、転記のための対比表を設ける
A列が入力シートのアドレス、B列が日報シートのアドレス
A列 B列
1 A2 A5
2 C2 D5
3 D2 F5
etc.
3.日報のブックも開いている。
4.エクセル2000のコードですので、他で動かなかったらご容赦を。
Sub test()
Dim sourceRange As Range
Dim destRange As Range
Dim sourceAddress As String
Dim destAddress As String
Dim addressTable As Range
Dim i As Long
Set addressTable = ThisWorkbook.Sheets("Sheet2").Range("A1").CurrentRegion
For i = 1 To addressTable.Rows.Count
sourceAddress = ThisWorkbook.Sheets("Sheet2").Cells(i, 1).Value
destAddress = ThisWorkbook.Sheets("Sheet2").Cells(i, 2).Value
Set sourceRange = ThisWorkbook.Sheets("入力").Range(sourceAddress)
Set destRange = Workbooks("日報.xls").Sheets("日報").Range(destAddress)
destRange.Value = sourceRange.Value
Next i
End Sub
No.2
- 回答日時:
追伸
「日報」ブックの「入力」シートのセルに入力して、とお書きですが、
「入力」ブックの「入力」シート→「日報」ブックの「日報」シート となってますので、「入力」ブックの「入力」シートから「日報」ブックの「日報」シートへ転記するようにしています。
従ってこのコードも「日報」ブックの標準モジュールに書いてください。
この回答への補足
merlionXXさんありがとうございます。ためさせていただいたのですが、「日報ブックは既に開いています・・・」と出ます。
日報ブックに記述し、既に開いているのでこうなるのでしょうか?
「日報」ブック、「入力」ブックの二つを開いた状態でマクロを「日報」
ブックから実行するとするとコードは変わってきますでしょうか。
No.1
- 回答日時:
こんな感じでしょうか。
いちいち書くのがめんどうだったので
A2,C2,D2,E2,F2→→→→→→A5,D5,F5,L5,P5
A3,C3,D3,E3,F3→→→→→→A6,D6,F6,L6,P6
だけにしてますが。
Sub test01()
Set tb = ThisWorkbook
mypth = tb.Path
Set wb = Workbooks.Open(Filename:=mypth & "\日報.xls")
With wb.Sheets("日報")
.Range("A5:A6").Value = tb.Sheets("入力").Range("A2:A3").Value
.Range("D5:D6").Value = tb.Sheets("入力").Range("C2:C3").Value
.Range("F5:F6").Value = tb.Sheets("入力").Range("D2:D3").Value
.Range("L5:L6").Value = tb.Sheets("入力").Range("E2:E3").Value
.Range("P5:P6").Value = tb.Sheets("入力").Range("F2:F3").Value
'以下転記セル省略
End With
Application.DisplayAlerts = False
wb.Close (True)
Application.DisplayAlerts = True
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Excel(エクセル) Excel VBA 指定セルに入力されているパスからシートをコピーして別のブックに転記するVBAのコ 2 2022/04/19 15:53
- Excel(エクセル) 複数のExcelブックのシート1の内容を1つのExcelブックにコピー貼り付けたいのでvbaコードを 7 2023/02/10 23:20
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Excel(エクセル) VBAで同フォルダ内の別ブックを開かず参照して条件の一致する行の指定セルを抽出するには? 1 2022/07/21 19:29
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
【ExcelVBA】シートをそれぞれ...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
フォルダ内の複数ファイルから...
-
エクセルで参照しているデータ...
-
エクセルでウィンドウの枠固定...
-
Excelで指定範囲のデータ...
-
エクセルで別ブックをバックグ...
-
Excelファイルをダブルクリック...
-
外部ブック参照が#REF!になって...
-
ブックのピボットを別ブックに...
-
別ブックから入力規則でリスト...
-
エクセルシートの一部を送りたい
-
フォルダ内の複数ファイルから...
-
フォルダ内ブックの数式を全て...
-
アクセスvbaでエクセルブックを...
-
Excelで複数ブックの同一セルに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
エクセルで「ディスクがいっぱ...
-
Excelでブックの共有を掛けると...
-
Excelで複数ブックの同一セルに...
-
Excel(2010)のフィルターが保...
-
エクセルで別ブックをバックグ...
-
エクセルにおける,「ブック」...
-
同じフォルダへのハイパーリン...
-
ブックのピボットを別ブックに...
-
エクセルファイルを開かずにpdf...
-
エクセル2016です。「ブッ...
-
ブックの保護ができないんです...
-
エクセルで50行ごとに区切った...
-
エクセルシートの一部を送りたい
-
フォルダ内の複数ファイルから...
-
エクセル 複数のブックを一度...
おすすめ情報