[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同じマクロを 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.