注册 登录
编程论坛 VB6论坛

VBA2010中 SaveAs 后的变量超长了

znstz 发布于 2018-04-18 21:03, 1622 次点击
'********************************代码如下:

Sub 导出()
Dim AA As String
   ...
    AA="2018年1月1日至2018年3月31日公司出车四辆大型车辆(货车)出车里程及油料统计表(2018年4月统计).xlsx"

     ....
    Workbooks("总表.xlsm").Worksheets(Array(7,8,9,10)).Copy
ActiveWorkbook.SaveAs AA

End Sub

'***************运行错误‘1004’
’**************怀疑文件名过长,将AA的值改为"大车4",运行正常
'***************BUT ,老板要那个长的名字,只好先出表,再改表名,有没有大侠能帮忙,指点一下,直接出长表名?毕竟,每月都要出一张的。3Q


3 回复
#2
znstz2018-04-18 21:16
跪求,解!
#3
wds12018-04-19 08:18
应该是:路径+文件名过长,所以保存不了
win系统一般为256长度,其他的软件一般都有最大限定
建议:增加判断和改名
1、vba最大支持的长度你可以测试一下
2、如果超过规定长度,将文件名保存为临时变量,按短文件名保存
3、之后利用改名
#4
xiangyue05102018-04-19 08:55
这个好像不是超长。为什么报错也没有搞明白
不过代码改动一下就可以(Excel2016测试通过)
AA = "2018年1月1日至2018年3月31日公司出车四辆大型车辆(货车)出车里程及油料统计表(2018年4月统计)"
ActiveWorkbook.SaveAs AA, 51

后面这个51是XlFileFormat格式的枚举,参见https://msdn.
xlExcel8 56 Excel 97-2003 工作簿 *.xls
xlWorkbookDefault 51 默认工作簿 *.xlsx
1