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

閉じている別のブックへ転記したいと考えています。


Private Sub CommandButton2_Click()

Dim wb1 As Workbook
Workbooks.Open ThisWorkbook.Path & "\集計.xlsm"
Set wb1 = ActiveWorkbook


wb1.Worksheets("Sheet1").Range("A1:C4") = _
ThisWorkbook.Worksheets("Sheet1").Range("A1:C4")



Application.DisplayAlerts = False
wb1.Saved = True
wb1.Close
Application.DisplayAlerts = True


End Sub

エラー等は表示されないのですが、転記がされず、集計.xlsmは空白のままです。
どこがダメなのか、お手数ですが、ご教示していただけないでしょうか?

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございます。
    wb1.Saveと変更してもできませんでした。

    Private Sub CommandButton2_Click()

    Dim wb1 As Workbook
    Workbooks.Open ThisWorkbook.Path & "\集計.xlsm"
    Set wb1 = ActiveWorkbook

    wb1.Worksheets("Sheet1").Range("A1:C4") = _
    ThisWorkbook.Worksheets("Sheet1").Range("A1:C4")

    End Sub

    この状態で実行したのですが、転記されませんでした。
    転記のコード、おかしいんですかね?

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/11/15 17:05

A 回答 (4件)

保存は No.1 の方法でOKです。



問題は、
> wb1.Worksheets("Sheet1").Range("A1:C4") = _
> ThisWorkbook.Worksheets("Sheet1").Range("A1:C4")

値だけのコピーなら No.3さんの方法で。

書式などもコピーしたければ

ThisWorkbook.Worksheets("Sheet1").Range("A1:C4").Copy wb1.Worksheets("Sheet1").Range("A1")

とか。
    • good
    • 0

こんばんは!



複数セルに値を代入する場合

>wb1.Worksheets("Sheet1").Range("A1:C4") = _
>ThisWorkbook.Worksheets("Sheet1").Range("A1:C4")

> wb1.Worksheets("Sheet1").Range("A1:C4").Value = _
>ThisWorkbook.Worksheets("Sheet1").Range("A1:C4").Value

のように丁寧にRangeオブジェクトのプロパティまで指定する必要があると思います。m(_ _)m
    • good
    • 0

https://excel-ubara.com/excelvba1/EXCELVBA364.html

・ブックを閉じる
全ての引数を省略
Workbook.Close
とだけ指定した場合は、ブックに変更が無ければそのまま閉じられ、
ブックに変更がある場合は、保存確認のメッセージが表示されます。
ただし、
Application.DisplayAlerts = False
これが指定されている場合は、確認のメッセージが表示されずに保存されます。
    • good
    • 0

> wb1.Saved = True   ' (1)



これは ワークブックに「変更はなかった」ことにするものです。
というか、「変更はすでに全て保存された」ということです。

よって
> wb1.Close
でも、変更がないので保存されません。

(1) を
wb1.Save
に変更してください。
この回答への補足あり
    • good
    • 0

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