使用 vba 中的单元格值保存动态文件

Posted

技术标签:

【中文标题】使用 vba 中的单元格值保存动态文件【英文标题】:Dynamic file saving using cells values in vba 【发布时间】:2020-11-16 12:57:55 【问题描述】:

我想使用 vba 中的单元格值实现动态文件保存到对应的文件夹名称,如下所示:

Sub Envoie_Formulaire()
        Dim MyFile1 As String
        Dim MyFile2 As String
        Dim MyFile3 As String
        Dim MyFile4 As String
        Dim MyFileDir As String
        Dim MyFile As String
        MyFile1 = Range("D2").Text
        MyFile2 = Range("E2").Text
        MyFile3 = Range("F2").Text
        MyFile4 = Range("G2").Text
        MyFileDir = MyFile1 + MyFile2
        MyFile = MyFile1 + MyFile2 + MyFile3 + MyFile4
       ' Do not display the message about overwriting the existing file.
     
       ' Save the active workbook with the name of the
       ' active workbook. Save it on the E drive to a folder called
       ' "User" with a subfolder called "JoeDoe."
       ActiveWorkbook.SaveAs Filename:"\\localAdress\folder1\folder2\folder3\" & MyFileDir "\" & MyFile" "\"
       ' Close the workbook by using the following.
       Application.DisplayAlerts = False
End Sub

***注:

D2 = the word  "BLOC-"
E2 = A letter from "A" to "N"
F2 =the word "BUREAU"
G2=a number of office from "1 to 1000".

所以我将动态 filename "BLOC-XXX BUREAU-XXX" 保存到静态网络目录 (\\localAdress\folder1\folder2\folder3\BLOC-A) 现在我只想从第一个相应单元格中的用户输出中调用“BLOC-xxx”。

但问题是文件名路径 ligne 中产生的语法错误,当我添加“& MyFileDir”时。 有什么建议可以实现吗?

【问题讨论】:

不清楚MyFile1...MyFile4的内容是什么。请阅读minimal reproducible example 并给出一个完整的示例,包括示例输入数据和所需的输出。 不太清楚你想要完成什么。是否要保存名称为 MyFile1, Myfile2 etc. 的活动工作簿?所有这些都在同一路径中(“\\localAdress\folder1\folder2\folder3\”)? MyFile 想成为什么?无论如何,独立于上述澄清请求,您必须设置要保存的工作簿扩展... MyFile1…MyFile4 的内容为单元格值(Cell D2,E2,F2,G2...) 这是您问题中唯一明确的问题。这些字符串要如何使用?像构建路径中的子文件夹名称一样?喜欢在同一路径中保存工作簿的不同名称吗?或者,如果上述任何假设都不是您想要的? 我还是什么都不懂...如果,让我们说MyFile1 = "Test1"MyFile2 = "Test2",你想像Test1\Test2 那样在路径中使用它们吗?还是像“Test1Test2”这样的简单串联名称?独立于解释这部分,这些文件夹是否已经创建?您想要在SaveAs 方法期间创建它们的代码吗? 【参考方案1】:

肯定语法错误在于你必须改变:

ActiveWorkbook.SaveAs Filename:

到:

ActiveWorkbook.SaveAs Filename:=

根据你的变量名,我想说你应该改变:

MyFile = MyFile1 + MyFile2 + MyFile3 + MyFile4

到:

MyFile = MyFile3 & MyFile4

因此最后的陈述应该是:

ActiveWorkbook.SaveAs Filename:="\\localAdress\folder1\folder2\folder3\" & MyFileDir & "\" & MyFile

【讨论】:

好吧,代码中的错误肯定不止这些,如果你看看行尾& MyFile" "\" @Pᴇʜ,我不排除这种情况 好吧,那么这是一个评论,而不是问题的解决方案/答案。他得到的语法错误不会改变你的建议。 把它变成了更合适的答案内容 更好 ^^ 但MyFileDir "\" 仍然缺少& 并且最后的" 太多了。抱歉这么苛刻;)

以上是关于使用 vba 中的单元格值保存动态文件的主要内容,如果未能解决你的问题,请参考以下文章

使用基于单元格值的excel VBA打开文件,路径由相同的值动态组成

VBA:根据单元格值过滤数据透视表

Excel VBA:用相邻的单元格值填充空单元格

动态循环范围,VBA

finereport7计算单元格有值填报提交数据库拿不到单元格值

基于公式的单元格值触发的 VBA 电子邮件代码