VBA,从范围中保存Excel文档,但添加额外空间

VBA,从范围中保存Excel文档,但添加额外空间,vba,excel,macros,Vba,Excel,Macros,因此,我有一个文件,它运行一系列有点复杂的宏,我希望第一步是以不同的名称保存该文件,以便可以重用包含宏的文件。我遇到的问题是,它将文件名保存到单元格中的值中,但在文件名前后添加了一个空格。我能修一下吗 Sub SaveWorkbook() 'Pick range where file name is stored Saveasname = Range("L2").Value 'Save the workbook ActiveWorkbook.SaveAs "I:\MyFilePath\ "

因此,我有一个文件,它运行一系列有点复杂的宏,我希望第一步是以不同的名称保存该文件,以便可以重用包含宏的文件。我遇到的问题是,它将文件名保存到单元格中的值中,但在文件名前后添加了一个空格。我能修一下吗

Sub SaveWorkbook()

'Pick range where file name is stored
Saveasname = Range("L2").Value

'Save the workbook
ActiveWorkbook.SaveAs "I:\MyFilePath\ " & Saveasname & " .xlsm"

End Sub
我还应该提到,我曾尝试删除saveasname周围的额外空格,但它们要么自动返回,要么宏无法运行。:/ 任何建议都会有帮助



更新:谢谢你的回答!我发现我把事情搞砸了。我在文件名中添加了另一个字段,其中包含非法字符(冒号),所以我修复了这个问题,现在一切正常。谢谢你的帮助

文件名
字符串中删除此空格应该有效;)


FileName
String中删除此空格应该有效;)

“删除saveasname周围的空格”不应意味着更改以下内容:

ActiveWorkbook.SaveAs "I:\MyFilePath\ " & Saveasname & " .xlsm"
为此:

ActiveWorkbook.SaveAs "I:\MyFilePath\ " &Saveasname& " .xlsm"
这应该意味着将其更改为:

ActiveWorkbook.SaveAs "I:\MyFilePath\" & Saveasname & ".xlsm"
然后,它将如您所期望的那样工作。

删除saveasname周围的空格并不意味着要更改以下内容:

ActiveWorkbook.SaveAs "I:\MyFilePath\ " & Saveasname & " .xlsm"
为此:

ActiveWorkbook.SaveAs "I:\MyFilePath\ " &Saveasname& " .xlsm"
这应该意味着将其更改为:

ActiveWorkbook.SaveAs "I:\MyFilePath\" & Saveasname & ".xlsm"

然后,它将按照您的预期工作。

尝试将
saveasname
更改为
&trim(saveasname)&
。或者,修剪声明部分
Saveasname=trim(Range(“L2”).Value)
。它现在一点也不工作了,尽管我以前让它工作过。你说的
现在一点也不工作是什么意思?它是否会在您调用
SaveWorkbook
时出错?或者它在第一条线上崩溃了?还是在第二行?它是否给出任何错误消息?当
L2
包含一些值但不包含其他值时,它是否有效?因此,我刚刚更新了我的问题以进行解释。错误消息出现在启动ActiveWorkbooks.SaveAsTry的行中,只需将
saveasname
更改为
&trim(saveasname)&
。或者,修剪声明部分
Saveasname=trim(Range(“L2”).Value)
。它现在一点也不工作了,尽管我以前让它工作过。你说的
现在一点也不工作是什么意思?它是否会在您调用
SaveWorkbook
时出错?或者它在第一条线上崩溃了?还是在第二行?它是否给出任何错误消息?当
L2
包含一些值但不包含其他值时,它是否有效?因此,我刚刚更新了我的问题以进行解释。错误消息出现在启动ActiveWorkbooks.Save的行中。如果您愿意,此操作已成功。我试图将您的答案标记为已接受,但当我这样做时,会弹出一条消息,说明发生了错误:\谢谢,这很有效。我试图将您的答案标记为已接受,但当我这样做时,会弹出一条消息,说明发生了错误:\非常感谢。这和Limak建议的是一样的,但你的建议更清楚,也更有效。谢谢非常感谢。这和Limak建议的是一样的,但你的建议更清楚,也更有效。谢谢