无效的前向引用或对未编译类型的引用

时间:2019-05-23 09:33:50

标签: excel vba

我目前正在使用代码来更新文件,并循环运行多个工作表。到目前为止,代码运行顺利。在今天的运行中,我遇到“运行时错误'-2147319767(80028029)'自动化错误,无效的前向引用或对未编译类型的引用。”

错误发生在第Workbooks("Upload.xlsm").Worksheets(branchName).Range("C7").PasteSpecial Paste:=xlPasteValues行,并在循环的第6次迭代中显示。

我用On Error Resume Next作为完成运行的临时措施,因为在那时必须完成运行。

完成后,有3个迭代失败(第六,第七和第十次)。这三个之间没有相互关联(即不同的副本源,值等),但是在其他迭代中,它们具有完全相同的副本源/值,已成功完成。

稍后在这些表上运行另一个复制命令会导致相同的错误。我最终不得不删除并重新创建工作表才能解决该错误。

' Uploads file update

fpath = Workbooks("TEG Rates.xlsm").Worksheets("Link List").Range("E3").Value

Workbooks.Open fpath & "Upload.xlsm"

For branchNo = 21 To 37

    branchName = Workbooks("TEG Rates.xlsm").Worksheets("Link List").Range("A" & branchNo).Value
    branchGroup = Workbooks("TEG Rates.xlsm").Worksheets("Link List").Range("B" & branchNo).Value

    ' Copy/Paste Buy & Sell

    Workbooks("TEG Rates.xlsm").Worksheets(branchGroup).Range("D7:G111").Copy
    Workbooks("Upload.xlsm").Worksheets(branchName).Range("C7").PasteSpecial Paste:=xlPasteValues

    For no = 7 To 10

        Workbooks("Upload.xlsm").Worksheets(branchName).Range("D" & no).Value = "=ROUND(100/C" & no & ",6)"

    Next no

    Workbooks("Upload.xlsm").Worksheets(branchName).Range("D14").Value = "=ROUND(100/C14,6)"
    Workbooks("Upload.xlsm").Worksheets(branchName).Range("D15").Value = "=ROUND(10000/C15,4)"

    Workbooks("Upload.xlsm").Worksheets(branchName).Range("D16").Value = "=ROUND(100/C16,6)"
    Workbooks("Upload.xlsm").Worksheets(branchName).Range("D19").Value = "=ROUND(100/C19,6)"

Next branchNo

Workbooks("Upload.xlsm").Close SaveChanges:=True
Application.CutCopyMode = False

虽然我目前可以使用此代码,但我担心的是我的团队在我不在时会遇到此代码。是什么原因引起的,我该怎么做才能防止这种情况的发生?如果需要,我愿意提供这些文件。

6 个答案:

答案 0 :(得分:4)

我今天在宏上遇到了同样的问题。

注意到使用Sheets(sheet_name_var).Select选择工作表时会弹出错误。

我发现的解决方法是:
-复制宏存在问题的工作表副本,
-删除原始工作表,
-将副本重命名为原始名称。

希望这会有所帮助。

答案 1 :(得分:4)

我的朋友和我有同样的问题。我尝试在“工具”>“引用”下启用“ AccessibilitycplAdmin 1.0 type admin”,此问题在两台计算机中均已解决

答案 2 :(得分:1)

我找到解决问题的唯一方法是:

  • 将损坏的工作表中所有查询结果的属性“加载到”更改为“仅创建连接”。
  • 复制工作表
  • 删除损坏的工作表
  • 将刚创建的工作表重命名为损坏的工作表的名称
  • 将所有查询结果更改到相同原始位置的新工作表

我希望这会有所帮助。

答案 3 :(得分:0)

我有一个非常相似的问题,我有几个相似的excel文件,都使用相同的代码。该代码在所有Excel中都可以运行,但其中一个具有相同的错误:

"run-time error '-2147319767 (80028029)' Automation error, Invalid forward reference, or reference to uncompiled type."

我能够通过将损坏的excel保存为.xlsx而不是.xlsm来解决此问题,关闭所有excel应用程序,重新打开.xlsx,添加代码并另存为.xlsm。现在它正在工作...

答案 4 :(得分:0)

我的朋友和我有同样的问题。我试图在“工具”>“引用”下启用“ AccessibilitycplAdmin 1.0 type admin”,此问题在两台计算机中均已解决

我尝试上面的评论并开始工作。解决我的问题。谢谢。

答案 5 :(得分:0)

我遇到了完全相同的错误“自动化错误,无效的前向引用...”这是我使用了一年多的工作簿,没有任何问题,并且最近没有进行任何更改。在工具>>参考中添加“ AccessibilityCplAdmin 1.0类型库”解决了该问题。