I have a very simple piece of VBA code to copy the value of a cell, open another workbook, and paste that cell value into the newly opened workbook. It works perfectly in a normal module. But when I run the code in the ThisWorkbook module, for the purpose of triggering it when the file is saved, the other workbook will not open. Simpler macros like opening a MsgBox work fine in ThisWorkbook, however. Another weird thing is that the code DOES work in ThisWorkbook if I am viewing the code. Anyone know why this might be happening? I'm running Excel 2010.
Code is below:
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim rangetocopy As String
Dim w1 As Workbook
Dim w2 As Workbook
Set w1 = ActiveWorkbook
Calculate
rangetocopy = w1.Sheets("Reference Data").Range("F10").Value
Set w2 = Workbooks.Open("C:\Users\user1\Documents\To-Do.xlsm")
w2.Worksheets("Masterlist").Activate
Range("A1").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.Value = rangetocopy
w1.Worksheets("To-do List").Activate
End Sub
Any thoughts?
Set w1 = ActiveWorkbookline, and then hit Ctrl+S... does the breakpoint get hit? FWIW working withSelectandActivateis far from ideal; consider figuring out other ways to do your thing. - Mathieu GuindonSet w1 = ActiveWorkbookshould probably beSet w1 = ThisWorkbookAre you seeing any error when the workbook doesn't get opened? - Tim WilliamsMsgBox w2.Sheets.Countdirectly after theOpenline: what do you see when it runs? - Tim Williams