I’m new to VBA in the sense that I’m learning how to use the object model correctly, instead of just recording macros and doing a mediocre job.
I have a series of .RTF documents that are generated from an engineering program and the only file type for output is .RTF. In those RTF files are images that I need to resize before incorporating them into a report. I have a macro that resizes all of the images, and I want to save the document in a new format. For now, I’m using the Application.Dialogs(wdDialogFileSaveAs).Show
statement to open a file dialog so that I can change the file format to .docx.
Obviously, this would be better if I can automate this, because I have more than a couple of files. But, there’s no point in automating it until I can figure out how to use the wdFormatDocumentDefault
enumeration.
I did some searching and I can’t get the example enums that I found to work as described.
So my basic question is, what is the syntax to make these enumerations work? Do I need to use ActiveDocument.SaveAs2? If I do that, do I have to specify the file name? Can I just keep the same file name, but change the file type so that the .RTF file becomes a .docx file?
I modified this from another post on the Stack, but I’m getting a syntax error.
Original:
docx.SaveAs2(fileName, MSWord.WdSaveFormat.wdFormatDocumentDefault)
Modified:
ActiveDocument.SaveAs2(ActiveDocument.Name, MSWord.WdSaveFormat.wdFormatDocumentDefault)
I don’t understand why the modified code doesn’t work.
EDIT:
I figured out that I need to specify the enumerations like this:
ActiveDocument.SaveAs2 FileFormat:=wdFormatDocumentDefault
So, at least the code runs, but it doesn’t actually save the file as a .docx file type.
I was partially referencing other tips and trying things out on my own. I removed the .RTF file extension from the file name, and then added the FileFormat enum.
Working solution is this:
ActiveDocument.SaveAs2 _
FileName:=Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4), _
FileFormat:=wdFormatDocumentDefault
Suggested improvements are welcome.
gshockxcc is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.