到目前为止,谢谢大家的帮助 - 非常感谢!!但我仍有问题
我是excel中VBA的新用户,我确信答案非常简单。
我已经通过阅读现有问题进行了大量尝试来修复它,但每次我遇到不同的错误并且无法解决问题。
因此,我已经经历了许多代码的迭代尝试解决问题所以欢迎有关如何继续的建议。
如果我没有适当地格式化/问我的问题,也会道歉。
背景
我有两个excel文件: wb1)一张包含公司名称和ID表的表格(每周列表更改) wb2)具有多个选项卡的工作簿,本质上是模板。
对于在wb1中列出的每个公司,我需要将公司名称和ID复制到wb2中的相应单元格中,并另存为公司名称&日期。
如上所述,我经历了多次迭代,并在下面提供了帮助,但我仍然没有让它发挥作用。
我根据修改代码的方式得到的各种错误是运行时错误5,运行时错误438,编译错误以及可能还有其他一些我没有记下的错误。
当前问题:
如果宏保存在wb1中 - 宏运行并创建第一个工作簿但我得到“系统错误& h800401a8(-2147221080)
如果宏保存在个人宏工作簿中 - “脚本超出范围”。它似乎在第Set tb1 = wb1.Sheets("Sheet1").ListObjects("Table1")
行
我欢迎任何有关如何解决问题的建议,并提前感谢您。
这是我的代码:
Option Explicit
Sub CreateStat()
Dim CompanyName As String
Dim CompanyID As String
Dim Z As Long
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim tb1 As ListObject
Dim i As Long
Set wb1 = **struggling with this. I want to reference the workbook that has the
table in it that is being used to draw through to the CompanyName and CompanyID.
This is already open.
The table is formatted as a table starting A1 with headers in row A**.
(errors come when this is set to ThisWorkbook)
Set wb2 = Workbooks.Open("C:\Users\YYY\Documents\Statements\SRTemplate.xlsx")
Set tb1 = wb1.Sheets("Sheet1").ListObjects("Table1")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
wb1.Activate
Sheets("Sheet1").Select
Z = tb1.DataBodyRange.Rows.Count
For i = 2 To Z + 1
CompanyID = tb1.DataBodyRange.Cells(i, 1)
CompanyName = tb1.DataBodyRange.Cells(i, 2)
wb2.Activate
wb2.Sheets("Reconciliation").Range("D3").Value = CompanyName
wb2.Sheets("Reconciliation").Range("M3").Value = CompanyID
ChDir "C:\Users\hannah.wyld\Documents\Statements\"
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\YYY\Documents\Statements\" & CompanyName & " " & Format(Date, "MMM") & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Windows(CompanyName & " " & Format(Date, "MMM") & ".xlsx").Close
wb2.Activate
wb2.Close
wb1.Activate
Next i
End Sub