エクセルで複数のブックの一部をBOOK1に1行ずつコピーしたいんですが、いろいろ探して近いものは見つけたのですが、元になるブックの1部の列をコピーするブックの行にコピー出来ないでしょうか?
merlionXXさんのhttp://oshiete1.goo.ne.jp/qa4969413.htmlこれを参考にして作っているのですが、
課名D16
商品名B20:B39
枚数H20:H39
金額I20:I39
の部分をbook1に1件1行としてコピーしたいのですができますでしょうか?
もとのブックの行数は決まっています。
どうか力を貸してください。よろしくお願いします。
Sub test02()
Dim MyFile As String, MyPath As String '変数宣言
Dim x As Long, y As Long
Dim wb As Workbook, tb As Workbook
Dim ka As String
Dim sh1, sh2
Set tb = ThisWorkbook
MyPath = tb.Path & "\" '自分のパスを取得
MyFile = Dir(MyPath & "*.xls", vbNormal) 'パス内のエクセルファイル
Application.ScreenUpdating = False '画面更新停止
Application.Calculation = xlCalculationManual '自動計算停止
Do While MyFile <> "" 'エクセルファイルがなくなるまで
If MyFile <> tb.Name Then '自分以外のファイルを対象
Set wb = Workbooks.Open(MyPath & MyFile) '選択したファイルを開く
With ActiveSheet
ka = .Range("D16").Value '課名取得
x = .Range("B" & Rows.Count).End(xlUp).Row '最終行取得
sh1 = .Range("B20:B" & x).Value '商品名取得
sh2 = .Range("H20:I" & x).Value '数量&金額取得
End With
With tb.Sheets("Sheet1")
y = .Range("B" & Rows.Count).End(xlUp).Row '最終行取得
y = IIf(.Range("B" & y) = "", y, y + 1)
If x >= 20 Then '納品書B20以下にデータがあれば
Set myRng = .Range("A" & y).Resize(x - 19, 1)
myRng.Value = ka '課名転記
myRng.Offset(, 1).Value = sh1 '商品名転記
myRng.Offset(, 2).Resize(, 2).Value = sh2 '数量&金額転記
End If
End With
wb.Close (False) '選択したファイルを閉じる
End If
MyFile = Dir() '次のファイルを検索
Loop '繰り返し
Application.Calculation = xlCalculationAutomatic '自動計算停止解除
Application.ScreenUpdating = True '画面更新停止解除
Set tb = Nothing
Set wb = Nothing
Set myRng = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
質問の内容がよく分かりませんが
>・・・これを参考にして作っているのですが、
変更部分は?
>元になるブックの1部の列をコピーするブックの行にコピー出来ないでしょうか?
>・・・の部分をbook1に1件1行としてコピーしたいのですができますでしょうか?
例を挙げて説明した方がわかりやすいかも
以上よく分ってませんが
この様なことがしたいのかな?
:
:
Set myRng = .Range("A" & y).Resize(x - 19, 1)
myRng.Value = ka '課名転記
myRng.Offset(, 1).Value = sh1 '商品名転記
myRng.Offset(, 2).Resize(, 2).Value = sh2 '数量&金額転記
:
:
↓ ↓
:
:
Set myRng = .Range("A" & y)
myRng.Value = ka '課名転記
myRng.Offset(, 1).Value = WorksheetFunction.Transpose(sh1) '商品名転記
myRng.End(xlToRight).Offset(, 1).Value = WorksheetFunction.Transpose(sh2) '数量&金額転記
:
:
参考になりますか
この回答への補足
すみません自己解決?しました。Bに設定しているところをAに変えることで(Aは日付で空白はないので)すべてのデータが抽出されました。
根本的な解決ではないのかもしれませんが、、。
ありがとうございました。
どうもありがとうございました。
shが10まであるのですが、最後は
myRng.End(xlToRight).Offset(, 10).Value = WorksheetFunction.Transpose(sh10) ではなくそのまま
myRng.Offset(, 10).Value = WorksheetFunction.Transpose(sh10)
でうまくいきました。只、Bの列に空白があるとそのブックは読み込まれません。空白に-などを入れればいいのですが、もしお分かりでしたらお願いします。現在以下のようになっています。
ka = .Range("k2").Value '日付取得
x = .Range("B" & Rows.Count).End(xlUp).Row '最終行取得
sh1 = .Range("B33:B38" & x).Value
sh2 = .Range("C33:C38" & x).Value
sh3 = .Range("D33:D38" & x).Value
sh4 = .Range("E33:E38" & x).Value
sh5 = .Range("F33:F38" & x).Value
sh6 = .Range("G33:G38" & x).Value
sh7 = .Range("H33:H38" & x).Value
sh8 = .Range("I33:I38" & x).Value
sh9 = .Range("J33:J38" & x).Value
sh10 = .Range("K33:K38" & x).Value
End With
With tb.Sheets("Sheet1")
y = .Range("B" & Rows.Count).End(xlUp).Row '最終行取得
y = IIf(.Range("B" & y) = "", y, y + 1)
If x >= 20 Then 'B20以下にデータがあれば
Set myRng = .Range("A" & y) '.Resize(x - 19, 1)
myRng.Value = ka
myRng.Offset(, 1).Value = WorksheetFunction.Transpose(sh1)
myRng.Offset(, 2).Value = WorksheetFunction.Transpose(sh2)
myRng.Offset(, 3).Value = WorksheetFunction.Transpose(sh3)
myRng.Offset(, 4).Value = WorksheetFunction.Transpose(sh4)
myRng.Offset(, 5).Value = WorksheetFunction.Transpose(sh5)
myRng.Offset(, 6).Value = WorksheetFunction.Transpose(sh6)
myRng.Offset(, 7).Value = WorksheetFunction.Transpose(sh7)
myRng.Offset(, 8).Value = WorksheetFunction.Transpose(sh8)
myRng.Offset(, 9).Value = WorksheetFunction.Transpose(sh9)
myRng.Offset(, 10).Value = WorksheetFunction.Transpose(sh10)
説明不足ですみませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
バッチファイル 別ファイルにリ...
-
バッチファイル XCOPYで上書き...
-
ファイルサーバ上のファイルが...
-
エクセルのマクロについて教え...
-
パワポでスライドをコピーでき...
-
ファイルコピーのスクリプトで...
-
エクセルのマクロについて教え...
-
マインクラフトPCをプレイしよ...
-
[エクセル]コピーするとオブジ...
-
現在のブックを閉じないで、マ...
-
frxファイルの役目
-
エクセルVBAで開いているファイ...
-
Vba初心者です。下記のコード助...
-
アクセス クエリを別のファイ...
-
VB6.0でデバッグ時、文字列の値...
-
vbsでExcelのシートをコピーす...
-
Gitについて質問。 クローンし...
-
bat 同名ファイルコピー時にリ...
-
ラズパイからパソコンにファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
現在のブックを閉じないで、マ...
-
エクセルのマクロについて教え...
-
frxファイルの役目
-
バッチファイル XCOPYで上書き...
-
エクセルのハイパーリンクがコ...
-
エクセルVBAで開いているファイ...
-
ファイルサーバ上のファイルが...
-
エクセル2010、図が大きすぎま...
-
[エクセル]コピーするとオブジ...
-
バッチファイルのコピーで
-
アクセス クエリを別のファイ...
-
Vba初心者です。下記のコード助...
-
バッチファイル 別ファイルにリ...
-
同じファイル名 上書きしないフ...
-
Gitについて質問。 クローンし...
-
vbsでExcelのシートをコピーす...
-
マインクラフトPCをプレイしよ...
-
xcopyでのバッチコピー方法でコ...
-
ファイルをコピーできない
おすすめ情報