英文:
saving a word docx file as a txt in excel VBA and getting runtime error 438
问题
我正在尝试使用Excel VBA将Word文档(.docx文件)另存为文本文件(.txt文件)。然而,当我尝试保存为新的字符串时,出现错误438。
Sub SaveToTXT()
Dim wordDoc As Object
Set wordDoc = CreateObject("Word.Application")
Dim wordPath As String
wordPath = "C:\Users\file"
wordDoc.Documents.Open wordPath
wordDoc.Visible = False
wordPath = Replace(wordPath, ".docx", ".txt")
wordDoc.SaveAs2 (wordPath)
wordDoc.Quit
End Sub
希望这有所帮助。
英文:
I am trying to save a word docx file as a txt using excel VBA. However the error 438 comes up when i try to save as the new string
Sub SaveToTXT()
Dim wordDoc As Object
Set wordDoc = CreateObject("Word.Application")
Dim wordPath As String
wordPath = "C:\Users\file"
wordDoc.Documents.Open wordPath
wordDoc.Visible = False
wordPath = Replace(wordPath, ".docx", ".txt")
wordDoc.SaveAs2 (wordPath)
wordDoc.Quit
End Sub
答案1
得分: 1
这是一种不好的想法,当你刚开始学习VBA时,不要使用晚期绑定,因为晚期绑定不提供智能感知。设置对Ms Word的引用,以便获得完整的智能感知(在IDE中使用工具 > 引用,然后确保勾选MS Word xx.x对象库)。
下面的代码应该让你更接近你想要的:
Sub SaveToTXT()
Dim myword As Word.Application
Set myword = New Word.Application
Dim myPath As String
' 将##user##更改为你的用户名
myPath = "C:\Users\##user##\Documents\"
Dim myDoc As Word.Document
Set myDoc = myword.Documents.Open(myPath)
myWord.Visible = False
myDoc.SaveAs2 Replace(myDoc.Name, ".docx", ".txt"), fileformat:=wdFormatText
myDoc.Close savechanges:=False
myword.Quit
Set myword = Nothing
End Sub
如果你是VBA初学者,我还强烈建议安装免费且出色的Rubberduck插件,以进行VBA代码检查。
英文:
Its a bad idea to use late binding when you are new to VBA because late binding doesn't give you any intellisense. Set a reference to Ms word so that you can get full intellisense (In the IDE use Tools.References then make sure that MS Word xx.x object library is ticked).
The code below should get you closer to what you want
Sub SaveToTXT()
Dim myword As Word.Application
Set myword = New Word.Application
Dim myPath As String
' change ##user## to you username
myPath = "C:\Users\##user##\Documents\"
Dim myDoc As Word.Document
Set myDoc = myword.Documents.Open(myPath)
myWord.Visible = False
myDoc.SaveAs2 Replace(myDoc.Name, ".docx", ".txt"), fileformat:=wdFormatText
myDoc.Close savechanges:=False
myword.Quit
Set myword = Nothing
End Sub
If you are a beginner in VBA then I'd also strongly recommend installing the free and fantastic Rubberduck addin for VBA and pay attention to the code inspections.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论