VBA中CreateTextFile对象调用Path报438错误的原因及路径获取方法
VBA CreateTextFile 错误438问题解析
问题原因
- 变量声明语法错误:代码中
Dim Text FileAs Object存在空格,导致变量名无效,正确写法应为Dim TextFile As Object。 - 对象属性不支持:
FSO.CreateTextFile返回的是TextStream对象,该对象没有Path属性,直接调用TextFile.Path会触发错误438:Object Doesn’t Support this Property or Method。
解决方案:能否直接从创建对象获取路径?
不能直接通过TextStream对象获取文件路径,因为它本身不提供该属性。推荐两种替代方式:
方式1:提前保存路径到变量(最稳妥)
提前拼接好文件路径并存储,后续直接调用该变量即可,无需额外操作:
Dim FSO As Object Dim TextFile As Object Dim filePath As String Set FSO = CreateObject("Scripting.FileSystemObject") ' 提前拼接并保存路径 filePath = ThisWorkbook.Path & "\" & FSO.GetBaseName(ThisWorkbook.FullName) & "_TextFile.txt" Set TextFile = FSO.CreateTextFile(filePath) Debug.Print filePath ' 直接输出路径
方式2:通过FSO获取文件对象读取路径
如果已经创建了文件,可以借助FSO的GetFile方法获取对应File对象,再读取其Path属性。但需注意,TextStream.Name仅返回文件名,若文件不在当前默认目录,需传入完整路径才能找到文件,因此不如方式1便捷:
Dim FSO As Object Dim TextFile As Object Dim fileObj As Object Set FSO = CreateObject("Scripting.FileSystemObject") Set TextFile = FSO.CreateTextFile(ThisWorkbook.Path & "\" & FSO.GetBaseName(ThisWorkbook.FullName) & "_TextFile.txt") ' 通过FSO获取文件对象 Set fileObj = FSO.GetFile(ThisWorkbook.Path & "\" & TextFile.Name) Debug.Print fileObj.Path
内容的提问来源于stack exchange,提问作者Albin
相关产品推荐
相关产品推荐

