xlsm SaveAs xls

O

Otto Moehrbach

Excel 2007 Win 7 64-bit
With VBA I'm trying to save an xlsm file as an xls file. It didn't work.
That is, after saving, the xls file does not exist and the active file is
the starting xlsm file.
I recorded a macro as I did the SaveAs and got the code (after modifying the
recorded code):
ActiveWorkbook.SaveAs Filename:= _
ThePath & "\" & WbName & ".xls", FileFormat:=xlExcel8
where WbName is "Anything".
Again, the active file is the xlsm file and the Anything.xls file does not
exist.
How do I code this? Thanks for your time. Otto
 
G

Gord Dibben

Otto

Using.......................

Sub saver()
Dim Wbname As String
Wbname = "Anything"
ActiveWorkbook.SaveAs Filename:= _
ThePath & "\" & Wbname & ".xls", FileFormat:=xlExcel8
End Sub

Anything.xls winds up in C:\

Maybe change ThePath to ActiveWorkbook.Path


Gord Dibben MS Excel MVP
 
W

witek

Otto said:
Excel 2007 Win 7 64-bit
With VBA I'm trying to save an xlsm file as an xls file. It didn't
work. That is, after saving, the xls file does not exist and the active
file is the starting xlsm file.
I recorded a macro as I did the SaveAs and got the code (after modifying
the recorded code):
ActiveWorkbook.SaveAs Filename:= _
ThePath & "\" & WbName & ".xls", FileFormat:=xlExcel8
where WbName is "Anything".
Again, the active file is the xlsm file and the Anything.xls file does
not exist.
How do I code this? Thanks for your time. Otto


It works for me

check if ThePath & "\" & WbName & ".xls" gives you valid path and you
have access to write there.
 
O

Otto Moehrbach

Thanks Gord. ThePath is ActiveWorkbook.Path.
Your suggested code is identical to mine. I used yours and got the same
result. The new file, gord.xls, doesn't exist and the active file is the
original xlsm file.
Gord, I started remarking out lines and remarked out the DisplayAlerts=False
line. I ran the below code and up popped a Msgbox telling me that the
original xlsm file was already open and did I want to open it again. I
clicked NO and the code stopped and never reached the SaveAs line.
Apparently NO is the default on that MsgBox and the SaveAs line was never
reached.
Notice the MsgBox after the Loop. The code never reaches that Msgbox.
Why is the loop trying to open the original xlsm file? Thanks for your
time. Otto
Sub xlsmToxls()
Call GetWbName
If CancelA = True Then Exit Sub
ThePath = ThisWorkbook.Path
Set Dest = Range("A8")
ChDir ThePath
TheFile = Dir("*.xls")
Application.ScreenUpdating = False
Do
Set wb = Workbooks.Open(ThePath & "\" & TheFile)
Sheets("Report For Supv").Range("A8").EntireRow.Copy
Dest.EntireRow.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Set Dest = Dest.Offset(1)
wb.Close
TheFile = Dir
Loop While TheFile <> ""
MsgBox ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
ThePath & "\" & WbName & ".xls", FileFormat:=xlExcel8
Application.ScreenUpdating = True
End Sub
 
O

Otto Moehrbach

Gord
I figured it out. ThisWorkbook is an .xlsm wb and is in the same folder
as the 5 .xls files that the code opens and closes. What was happening was
that the code was trying to open that .xlsm file, which was already open.
The "DisplayAlerts=False" line prevented the display advising the above, so
I never saw it. The code stopped cold at that point. Apparently the line
TheFile = Dir("*.xls") picks up any file that has "xls" after the period
and .xlsm has that. Of course that was never a problem until 2007 came out.
I trapped it with an IF statement that TheFile=ActiveWorkbook.Name and all
works good now. I thought you might want to know. Otto
 
G

Gord Dibben

Otto

I never got back to you earlier but I ran the macro(after remming Call
GetWbname)............I missed you posting that macro?

I got message about file already being opened.

There is no "displayalerts" lines in the macro you posted.

Assume it is set in GetWbname code.

Thanks for the update.


Gord
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top