VBA 另存为结果未定义的文件类型
Posted
技术标签:
【中文标题】VBA 另存为结果未定义的文件类型【英文标题】:VBA Save As resulting undefined file type 【发布时间】:2015-07-06 08:45:28 【问题描述】:我有一个简单的 VBA,它多次运行同一个报表,同时循环使用不同的名称,将每个报表保存为单独的工作簿。
一切正常,但其中 1 个报告始终保存为“未定义”文件类型,之后我必须手动将其更改为 excel。所有其他人都保存得很好,所以我无法弄清楚这个问题。我尝试过使用 SaveAs FileFormat,但他们都没有解决这个问题。
For Each c In MCH
Detail.Range("B8:E10000").ClearContents
Data.Rows("4:4").AutoFilter Field:=2, Criteria1:= _
c.Value
lr = Data.Cells(Rows.Count, "E").End(xlUp).Row
Data.Range("E5:H" & lr).Copy Detail.Range("B8")
Sheets("Detail").Calculate
Set name = Detail.Range("B4")
Sheets("Detail").Copy
ActiveSheet.Cells.Copy
ActiveSheet.Range("A1").PasteSpecial Paste:=xlValues
ActiveSheet.Range("A1").Select
Set wb = ActiveWorkbook
wb.SaveAs ThisWorkbook.Path & "\" & name
wb.Close False
Next
【问题讨论】:
愿意发布代码吗? 很抱歉不确定它是否有用,因为它是更大宏的一部分,但我添加了涉及保存的部分。谢谢 【参考方案1】:您没有选择文件格式。
代替:
Set wb = ActiveWorkbook
wb.SaveAs ThisWorkbook.Path & "\" & name
试试这个:
Xslx
ActiveWorkbook.SaveAs Filename:= ThisWorkbook.Path & "\" & name, FileFormat:= xlOpenXMLWorkbook, CreateBackup:=False
文本文件 (txt)
ActiveWorkbook.SaveAs Filename:= ThisWorkbook.Path & "\" & name, FileFormat:= xlUnicodeText, CreateBackup:=False
对于其他 FileFormat,请参阅此枚举:
https://msdn.microsoft.com/en-us/library/bb241279(v=office.12).aspx
如有问题
如果您遇到上述问题,请执行以下操作:
-
转到
Developer
标签
点击录制宏
以所需格式手动保存文件
点击停止录制
打开您的 VBA 项目并获取生成的代码
【讨论】:
只是想知道如果我将 name(variable) 的值设置为“Myfile.txt”,脚本可以为我保存一个 .txt 文件吗? 对于文本文件,将xlOpenXMLWorkbook
替换为 xlUnicodeText
我试过了,但它仍然不适用于一个特定的文件。文件名周围的内容可能会导致问题吗?
是的,可能有几个问题。请参阅更新的帖子部分In case of issues
。请按照此方案查看问题所在
我想我找到了问题所在。导致问题的名称是 3.1 Philip Lim,所以当我使用该名称保存文件时,我认为小数导致了未定义的文件类型。有没有办法在不创建特定规则的情况下解决名称中的小数点?以上是关于VBA 另存为结果未定义的文件类型的主要内容,如果未能解决你的问题,请参考以下文章
Javascript:将画布另存为图像 ==>“未捕获的类型错误:未定义不是函数”