多个运行时错误的问题:更新的代码 - 仍然存在问题

时间:2016-07-04 14:12:02

标签: excel vba excel-vba runtime-error type-mismatch

到目前为止,谢谢大家的帮助 - 非常感谢!!但我仍有问题

我是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

0 个答案:

没有答案