gpt4 book ai didi

excel - 是否可以创建一个不活动的新工作簿?

转载 作者:行者123 更新时间:2023-12-04 21:51:34 25 4
gpt4 key购买 nike

更新问题:真正的问题似乎是我使用在文件名后附加日期。我似乎无法重新格式化日期,错误似乎是由 / 触发的在日期中,那么如何重新格式化它,以便 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com