作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新问题:真正的问题似乎是我使用在文件名后附加日期。我似乎无法重新格式化日期,错误似乎是由 /
触发的在日期中,那么如何重新格式化它,以便 excel 理解日期包含在文件名中?我现在明白 SaveCopyAs 不需要先上传“虚拟”文件。
我目前收到 SaveCopyAs 方法的运行时错误 1004,说它找不到我要创建的新文件的位置。我将此解释为意味着我需要创建一个“虚拟”文件来保存复制的信息,然后再用数据和新文件名覆盖它。这个对吗?
解决方案很简单,可以创建虚拟文件并单独引用每个文件,然后按照我上面的解释继续。但是,我正在尝试循环此过程并使用托管在 PERSONAL.XLSB 中的模块,因此我无法使用 ThisWorkbook
并且必须使用 ActiveWorkbook
.我现在的问题是,由于我使用了ActiveWorkbook
,我不知道如何创建将数据复制到新文件的自动化过程。 .
这是我当前的代码:
Sub cellvalue_filename()
Dim Path
Dim NewPath
Dim WBname
Dim Destination
Path = "C:\oldfilelocation\"
WBname = ActiveWorkbook.Name
NewPath = "C:\newfilelocation\"
Destination = NewPath & Range("B2") & WBname
ActiveWorkbook.SaveCopyAs filename:=Destination
ActiveWorkbook.Close
End Sub
最佳答案
作为一般规则,最好在 VBA 中明确引用所需的工作簿和工作表,而不是依赖它处于事件状态。
你说你不能用ThisWorkbook
因为您引用的工作簿不是包含 VBA 代码的工作簿,但这并不意味着您必须使用 ActiveWorkbook
.
相反,您可以在打开或创建工作簿时获得对它的引用,例如
Dim objWorkbook As Workbook
Set objWorkbook = Application.Workbooks.Open(...)
...
objWorkbook.SaveCopyAs ...
Range("B2")
不指定工作表将假定事件工作簿中的事件工作表。相反,明确指定工作表,例如:
Dim objWorksheet As Worksheet
Set objWorksheet = objWorkbook.Worksheets(1) ' or whatever worksheet you want
...
Destination = NewPath & objWorksheet.Range("B2") & WBname
关于excel - 是否可以创建一个不活动的新工作簿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52897321/
我是一名优秀的程序员,十分优秀!