ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Workbook is saved on close - why? (https://www.excelbanter.com/excel-programming/283147-workbook-saved-close-why.html)

Dee Veloper

Workbook is saved on close - why?
 
Why doesn't this line of code work:
ActiveWorkbook.Close savechanges = False

nor does this one:
Databook.Close savechanges = False
in both cases above the file gets saved even though it shouldn't

but this one works
DataBook.Close False
all variables are declared


code excerpt:
For i = 1 To 10
Workbooks.Open .Files(i)
Set DataBook = ActiveWorkbook
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
MonthStamp
Range("data").Copy
NewWkBook.Activate
ActiveSheet.Paste
Next
DataBook.Activate
Application.DisplayAlerts = False
DataBook.Close False 'this works
'ActiveWorkbook.Close savechanges = False doesn't work
NewWkBook.Activate
Next i

CJ[_3_]

Workbook is saved on close - why?
 
Have you tried this code instead?

ActiveWorkbook.Close SaveChanges:=False

I think you need the colon in there.

Chip Pearson[_2_]

Workbook is saved on close - why?
 
There are two problems at work here.

ActiveWorkbook.Close savechanges = False

First, you don't have Option Explicit in your module. Therefore, VBA will
declare a variable when it encounters a variable name and give it a default
value. The second problem is that you are missing the colon in the named
argument assignment. Without the colon, VBA sees 'savechanges' as a
variable name, not a named argument, so it creates the variable and gives it
a default value of False (since it is used to compare against the boolean
value False). Therefore, your code is the same as

ActiveWorkbook.Close (False = False) doesn't work

And since 'False = False' evaluates to True, you are passing a value of True
to the first argument of Close, which causes the workbook to be saved.

All that said, you need to include the colon in the named argument
assignment:

ActiveWorkbook.Close savechanges:= False


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com


"Dee Veloper" wrote in message
om...
Why doesn't this line of code work:
ActiveWorkbook.Close savechanges = False

nor does this one:
Databook.Close savechanges = False
in both cases above the file gets saved even though it shouldn't

but this one works
DataBook.Close False
all variables are declared


code excerpt:
For i = 1 To 10
Workbooks.Open .Files(i)
Set DataBook = ActiveWorkbook
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
MonthStamp
Range("data").Copy
NewWkBook.Activate
ActiveSheet.Paste
Next
DataBook.Activate
Application.DisplayAlerts = False
DataBook.Close False 'this works
'ActiveWorkbook.Close savechanges = False doesn't work
NewWkBook.Activate
Next i




Dee Veloper

Workbook is saved on close - why?
 
Thanks CJ, Thanks Chip
that was a "doh" moment for me.
;)

"Chip Pearson" wrote in message ...
There are two problems at work here.

ActiveWorkbook.Close savechanges = False

First, you don't have Option Explicit in your module. Therefore, VBA will
declare a variable when it encounters a variable name and give it a default
value. The second problem is that you are missing the colon in the named
argument assignment. Without the colon, VBA sees 'savechanges' as a
variable name, not a named argument, so it creates the variable and gives it
a default value of False (since it is used to compare against the boolean
value False). Therefore, your code is the same as

ActiveWorkbook.Close (False = False) doesn't work

And since 'False = False' evaluates to True, you are passing a value of True
to the first argument of Close, which causes the workbook to be saved.

All that said, you need to include the colon in the named argument
assignment:

ActiveWorkbook.Close savechanges:= False


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com


"Dee Veloper" wrote in message
om...
Why doesn't this line of code work:
ActiveWorkbook.Close savechanges = False

nor does this one:
Databook.Close savechanges = False
in both cases above the file gets saved even though it shouldn't

but this one works
DataBook.Close False
all variables are declared


code excerpt:
For i = 1 To 10
Workbooks.Open .Files(i)
Set DataBook = ActiveWorkbook
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
MonthStamp
Range("data").Copy
NewWkBook.Activate
ActiveSheet.Paste
Next
DataBook.Activate
Application.DisplayAlerts = False
DataBook.Close False 'this works
'ActiveWorkbook.Close savechanges = False doesn't work
NewWkBook.Activate
Next i



All times are GMT +1. The time now is 07:07 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com