プロが教える店舗&オフィスのセキュリティ対策術

表のデータを、別のエクセルファイルの表に値コピーするマクロを教えてください。
・コピー元とコピー先の表は、11列、10行の枠(データ入力部分)で、一律です。
・データは最低1行、最高10行と、その時によって違います。表の一番最初のセルはB列6行目
 ですが、B列にデータがあれば、他の10列にも必ずデータがあります。
・コピー先のエクセルは、コピー前に開いてあります。(不要な情報の場合はすみません。)

表の形式は同じなので、単に全体や決まった行をコピーするだけならわかるのですが、データが
ある部分だけを選ぶというのが、どうしていいかわかりません。本などをみて、「dim」を使う(表現があってるかわかりませんが)のかなとも思ったのですが、よくわかりませんでした。
よろしくお願いします。

A 回答 (2件)

こんばんは!



>コピー先のエクセルは、コピー前に開いてあります。

というコトですが、ブック名が必要ですので
コピー先のファイル名を仮に「Book2.xlsx」だとします。
そして、「コピー先」ファイルのどのSheetに貼り付けるかが判りませんので
「Book2.xlsx」のSheet1のA1セル以降に貼りつけるようにしてみました。

元データはコード記載BookのSheet1にあるとします。
標準モジュールにしてください。

Sub Sample1()
Dim i As Long, myRng As Range, wB As Workbook
Set wB = Workbooks("Book2.xlsx")
With ThisWorkbook.Worksheets("Sheet1")
For i = 6 To .Cells(Rows.Count, "B").End(xlUp).Row
If .Cells(i, "B") <> "" Then
If myRng Is Nothing Then
Set myRng = .Cells(i, "B").Resize(, 11)
Else
Set myRng = Union(myRng, .Cells(i, "B").Resize(, 11))
End If
End If
Next i
If Not myRng Is Nothing Then
myRng.Copy
wB.Activate
wB.Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteAll
End If
Application.CutCopyMode = False
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

こんなのはいかがでしょう。

(意味を取り違えていたら、ごめんなさい)
Book1のSheet1をBook2のSheet1に空白を無視して丸々コピーします。

Sub sample()
Workbooks("Book1").Sheets("Sheet1").Cells.Copy
Workbooks("Book2").Sheets("Sheet1").Cells.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Application.CutCopyMode = False
End Sub
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。
最初に書かなくてすみません。Book1には、他の表もあるので、全部をコピーすることはできないんです。
またコピー先のシートの設定上、空白のセルでも「空白をコピーした」となってしまうので、今回質問させていただきました。この設定を変えることはできないので困ってました。

お礼日時:2016/10/17 19:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A