Save - Yes / No / Cancel

J

Jon Peltier

Change .SaveAs to .Save, and in your _BeforeSave procedure, wrap the .Save
between lines like these:

Application.EnableEvents = False
' do the save here
Application.EnableEvents = True


- Jon
-------
Jon Peltier, Microsoft Excel MVP
Peltier Technical Services
Tutorials and Custom Solutions
http://PeltierTech.com/
_______
 
S

sparx

Hello all, I have found some vba that may " Force users to enable
macro's ". A workbook using the vba starts up and asks enable or
disable macro's at startup. If you select disable, all sheets are
hidden except one that says about your macro status. If you select
enable, then the one about your macro status is hidden and all the
other sheets are visable using the very-visable routine. This is a
great idea if you wish somebody to run your file as it makes them run
the file macro's and all works well - this is until you might already
have a before_save routine then the file just loops and loops saying
"overwrite existing file? Y/N". So my question is, when you run this
file, and you enable macro's, edit some pages, then go to close, your
prompt with the SaveAs routine that saves the file - but then you press
the Close and then the macro hides all worksheets and displays the macro
status page but because its done that again says "overwrite existing
file? Y/N" - instead of this box appearing - is there a macro that can
be added to the before_close routine that automatically selects "Yes"
for you and does not give you the option to press No or Cancel. - If
anyone would like the vba then I can add this.
 
R

R. Choate

I'm sorry but your info is just wrong. You cannot force anybody to enable macros or make a procedure run in a workbook if they have
turned off (disabled) macros before opening a file. That is the whole reason for giving people that option. Without the ability to
disable all code in Excel, there would be no end to the viruses and problems. Your code cannot force anybody to do what you say.

Sorry
--
RMC,CPA



Hello all, I have found some vba that may " Force users to enable
macro's ". A workbook using the vba starts up and asks enable or
disable macro's at startup. If you select disable, all sheets are
hidden except one that says about your macro status. If you select
enable, then the one about your macro status is hidden and all the
other sheets are visable using the very-visable routine. This is a
great idea if you wish somebody to run your file as it makes them run
the file macro's and all works well - this is until you might already
have a before_save routine then the file just loops and loops saying
"overwrite existing file? Y/N". So my question is, when you run this
file, and you enable macro's, edit some pages, then go to close, your
prompt with the SaveAs routine that saves the file - but then you press
the Close and then the macro hides all worksheets and displays the macro
status page but because its done that again says "overwrite existing
file? Y/N" - instead of this box appearing - is there a macro that can
be added to the before_close routine that automatically selects "Yes"
for you and does not give you the option to press No or Cancel. - If
anyone would like the vba then I can add this.
 
D

Dave Peterson

How about using a helper workbook that uses a macro to open the real workbook.
If macros are disabled, then the real workbook won't open.

If macros are enabled, then the helper workbook can open the real workbook--and
macros will be enabled.
 
S

sparx

Hi again, follow the link to see what I mean regards forcing enabling
macro's ( It does NOT actually force you to enable macro's ) it simply
saves the file with a specific worksheet open and hides all your other
sheets - so when you next open the file and you select disable - then
you just switched off macro's and one of the macro's that makes all
worksheets visable is in that file - so you cant see the worksheets of
your file - great!!

http://www.danielklann.com/excel/force_macros_to_be_enabled.htm

There is a download at the bottom of this webpage - it works a treat.

Sorry if I confused anybody reading my original post - when you disable
macro's - you disable macro's - this file does NOT switch them back on
if you disabled them at file startup.

Thanks for reply to my query - what wahappening in my file is this.
I have a beforesave function and now a beforeclose function - if you
save your file, it saves OK - if you then select close - it runs some
hide sheet macro - then the file just changed so then are asked to
overwrite existing file - you select yes and it keeps on going. The
answer to my question stops this from happening - this is the modified
vba.

Private Sub HideSheets()
Dim sht As Object

Application.ScreenUpdating = False

ThisWorkbook.Sheets("Sheet1").Visible = xlSheetVisible

For Each sht In ThisWorkbook.Sheets

If sht.name <> "Sheet1" Then sht.Visible = xlSheetVeryHidden

Next sht

Application.ScreenUpdating = True

Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True

End Sub

Thanks
 
S

sparx

I just read my own reply - and I dont normally sound like a cartoon
character - I was meant to say "Whats happening in my" and so on!! not
what wahappening....................
 
R

R. Choate

But it won't do any of that if macros are disabled before the file is opened. With disabled macros, nothing will automatically
happen. People have wanted to circumvent this for years, but the ability to disable VBA code before a file is opened is the front
line of defense against malicious code. I saw your code, but if the person has code disabled to start with, none of your code will
do anything no matter how it is written.
--
RMC,CPA



Hi again, follow the link to see what I mean regards forcing enabling
macro's ( It does NOT actually force you to enable macro's ) it simply
saves the file with a specific worksheet open and hides all your other
sheets - so when you next open the file and you select disable - then
you just switched off macro's and one of the macro's that makes all
worksheets visable is in that file - so you cant see the worksheets of
your file - great!!

http://www.danielklann.com/excel/force_macros_to_be_enabled.htm

There is a download at the bottom of this webpage - it works a treat.

Sorry if I confused anybody reading my original post - when you disable
macro's - you disable macro's - this file does NOT switch them back on
if you disabled them at file startup.

Thanks for reply to my query - what wahappening in my file is this.
I have a beforesave function and now a beforeclose function - if you
save your file, it saves OK - if you then select close - it runs some
hide sheet macro - then the file just changed so then are asked to
overwrite existing file - you select yes and it keeps on going. The
answer to my question stops this from happening - this is the modified
vba.

Private Sub HideSheets()
Dim sht As Object

Application.ScreenUpdating = False

ThisWorkbook.Sheets("Sheet1").Visible = xlSheetVisible

For Each sht In ThisWorkbook.Sheets

If sht.name <> "Sheet1" Then sht.Visible = xlSheetVeryHidden

Next sht

Application.ScreenUpdating = True

Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True

End Sub

Thanks
 
S

sparx

Hi, R. Choate. You are right - when you disable macro's at startup
they wont work - but if they dont work then fine - the file dont wor
but if they chose enable then one of the macro's ( on file close - no
save ) switches off all worksheets and makes only one display - the
you are asked to save - you select YES and you have just completed th
loop. When you next open the file if you select disable - the fil
opens but to the last state the file saved in which was - the singl
sheet being viewed. So guess what - the file cant display any othe
worksheets because you didnt enable macro's. Why dont you download th
file as described elsewhere in these notes and see the function workin
for yourself.
Spar
 
G

Gord Dibben

Wrap your Save line in these two lines

Application.DisplayAlerts = False

' your code here

Application.DisplayAlerts = True


Gord Dibben MS Excel MVP
 
J

Jon Peltier

What you should have said was "Encourage" (not "Force") people to enable
macros, then clarify that without macros enabled, the useful parts of the
workbook never become visible.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Peltier Technical Services
Tutorials and Custom Solutions
http://PeltierTech.com/
_______
 
Top