excel - 如何将新工作表添加到正在打开的文件而不是个人宏工作簿?
问题描述
我每天早上的第一个任务是抓取另一个部门生成的两个文件。然后,我基本上在文件中“移动”信息以准备电子邮件。必须做的一件事是添加新工作表,我可以在其中编写宏并将其添加到个人宏工作簿中。然而,我遇到的问题是,每当添加新工作表时,宏都会将它们添加到个人宏工作簿,而不是我每天早上打开并需要添加工作表的文件。
我相信这部分是添加工作表的代码部分(如下),但是我不确定用什么来代替它。有人可以帮忙吗?谢谢
ThisWorkbook.Sheets.Add.Name = "PAV" ' This adds three new sheets
ThisWorkbook.Sheets.Add.Name = "PAS"
ThisWorkbook.Sheets.Add.Name = "PAD"
下面是整个宏:
Sub PaidAgainst()
Dim Cll As Range
Dim myrange As Range
Application.ScreenUpdating = False
Set myrange = Application.Union(Range("E2", Range("E" & Rows.Count).End(xlUp)), Range("S2", Range("S" & Rows.Count).End(xlUp)))
On Error GoTo EH
ThisWorkbook.Sheets.Add.Name = "PAV" ' This adds three new sheets
ThisWorkbook.Sheets.Add.Name = "PAS"
ThisWorkbook.Sheets.Add.Name = "PAD"
For Each Cll In myrange
If Len(Cll) < 2 Then
Cll.Offset(1, 0).Copy
Cll.PasteSpecial xlPasteValues
End If
Next Cll
Sheet1.Select
Columns("J:J").Select
Selection.Cut
Columns("A:A").Select
Selection.Insert shift:=xlToRight
Range("D1").Select ' This adds a filter and selects "BAI" values only
Selection.AutoFilter
ActiveSheet.Range("$A$1:$S$7").AutoFilter Field:=4, Criteria1:="BAI"
Sheet1.Activate
Sheet1.Range("$A$1:$S$46").AutoFilter Field:=1, Criteria1:= _
"Paid against dormant"
Range("A1").CurrentRegion.Copy
Worksheets("PAD").Range("A1").CurrentRegion.PasteSpecial
Sheet1.Range("$A$1:$S$46").AutoFilter Field:=1, Criteria1:= _
"Paid against stop"
Range("A1").CurrentRegion.Resize(, 14).Copy
Worksheets("PAS").Range("A1").CurrentRegion.Resize(, 14).PasteSpecial
Sheet1.Range("$A$1:$S$46").AutoFilter Field:=1, Criteria1:= _
"Paid against void"
Range("A1").CurrentRegion.Resize(, 14).Copy
Worksheets("PAV").Range("A1").CurrentRegion.Resize(, 14).PasteSpecial
Exit Sub
EH:
MsgBox "An error occured"
Application.ScreenUpdating = True
End Sub
解决方案
问题是ThisWorkbook
指实际运行代码的工作簿,在您的情况下,是您的个人宏工作簿。
更改代码以引用ActiveWorkbook
,它处理当前在活动窗口中的工作簿。
最好的办法是创建一个适当的工作簿变量,并毫无疑问地使用它来引用工作簿中的工作簿和工作表。
dim wb as Workbook
set wb = ActiveWorkbook
[...] ' later in the code
wb.Worksheets("PAD").Range[...]
[...]
wb.Worksheets("Sheet1").Range("[...]
推荐阅读
- javascript - 您可以使用 AJAX 在 PHP 中输出 HTML 表格吗?
- c# - What is the different between Windows Form App and Windows Form App (.Net Framework)?
- sql - SFMC - 使用 SQL 脚本在 Automation Studio 中添加组标识符
- http - HTTP POST over 4G/NB-IOT 的安全性如何?
- docker - docker run 命令中的小写“-p”和大写“-P”参数有什么区别?
- node.js - 接收消息:使用 NodeJS 和 React 时无法获取 / 错误
- angular - 渲染一个没有任何包装标签的角度模板
- json - 有没有办法使用 react native 获取嵌套的 JSON 对象?
- momentjs - 试图在页面上更新数据和时间
- ruby-on-rails - 自动构建嵌套字段,ruby on rails