[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同じマクロを Workbook_BeforeCloseにするとエラー9がでます』(なぜ)
いつもお世話になります
ファイル間でシートをコピーするマクロ
Option Explicit
Sub レース名コピー()
Sheets("レース名1").Select Range("A1:K1001").Select Range("A6").Activate Selection.Copy Application.CutCopyMode = False Selection.Copy Workbooks.Open Filename:="G:\521-42.xlsm" Sheets("格付け 成績").Select Sheets("競走名").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Range("B1").Select ActiveWorkbook.Save ActiveWindow.Close Range("A2").Select End Sub
を作って動作確認をしたので
ファイルを閉じるときにできるように
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
Sheets("レース名1").Select Range("A1:K1001").Select Range("A6").Activate Selection.Copy Application.CutCopyMode = False Selection.Copy Workbooks.Open Filename:="G:\521-42.xlsm" Sheets("競走名").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Range("B1").Select ActiveWorkbook.Save ActiveWindow.Close Range("A2").Select ActiveWorkbook.Save Application.ScreenUpdating = True End Sub
としたのですが
Sheets("競走名").Select でエラー9が出てしまいます なぜでしょうか
< 使用 Excel:Excel2010、使用 OS:Windows7 >
恐らく記録したマクロをそのままThisWorkbookに移植してしまったのでしょう。
ThisWorkbookに書かれたブックの指定のないシートオブジェクトは、ThisWorkbookが親オブジェクトとして 扱われます。
そのまま活かすなら ActiveWorkbook.Sheets("競走名").Select としてみてください。 (seiya) 2019/08/03(土) 19:33
オブジェクト型の変数やWithステートメントを使うと、もう少し短くかけるとおもいますので、調べてみてはいかがでしょうか?
(テストしてないですが、整理するとこんな感じになりそうです。)
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim srcRNG As Range Set srcRNG = ThisWorkbook.Sheets("レース名1").Range("A1:K1001")
Application.ScreenUpdating = False
With Workbooks.Open(Filename:="G:\521-42.xlsm")
'▼コピペ srcRNG.Copy .Sheets("競走名").Range("A1")
'▼開いたブック(貼付先シートがあるブック)を上書き保存して閉じる .Save .Close
End With
'▼自ブックを上書き保存 ThisWorkbook.Save
Application.ScreenUpdating = True End Sub
(もこな2) 2019/08/04(日) 13:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.