乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 41|回复: 0

退出VBA脚本时出现名称空间不匹配错误

[复制链接]

8

主题

15

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2015-2-12 06:09:17 | 显示全部楼层 |阅读模式
我有两个非常有用的VBA项目开始引起问题,一个用于对列表/一批文件执行各种任务,另一个用于将图形的元素输出到另一个文件。
两个VBA脚本都运行良好,并按照预期执行,但是在完成并退出时,我在命令行上收到以下错误:
“\n ***内部错误:VL命名空间不匹配\n”“类型Y重置:
关于可能导致此问题的任何想法? 我怀疑这与打开并在绘图之间切换的代码有关,就像我在待办事项列表中没有任何文件的情况下运行批处理VBA一样,它不会生成错误,但是当我在调试器中单步执行代码时,只有在代码完成时才会弹出错误。
这是一个代码片段,它实际上打开并调用批处理项目中的图纸上的函数,周围还有其他我认为不相关的废话:
  1.     Dim oDWG As AcadDocument
  2.     For i = 0 To Me.FilesToOpList.ListCount - 1
  3.         BatchLaunchWin.Statusbox.Text = "Processing file " & CStr(i + 1) & " of " & BatchLaunchWin.FilesToOpList.ListCount
  4.         DoEvents
  5.         Set oDWG = Application.Documents.Open(Me.FilesToOpList.List(i, 1), ReadOnly)
  6.         DwgChanged = False
  7.         
  8.         '##########################################do stuff here#########################################
  9.         'Example function below, there are actually several..
  10.         If BatchLaunchWin.SearchChkBox Then
  11.             BatchLaunchWin.Statusbox.Text = "Changing Text.."
  12.             DoEvents
  13.             DwgChanged = ChangeText(oDWG, BatchLaunchWin.SearchTextBox.Value, BatchLaunchWin.ReplaceTextBox.Value)
  14.         End If
  15.         
  16.          
  17.         If ReadOnly Then
  18.             oDWG.Close False
  19.         Else
  20.             oDWG.Close 'This will fail if the file is inadvertantly opened read only
  21.         End If
  22.         
  23.         'emergency stop routine exits here
  24.         If CrashStop Then Exit For
  25.         
  26.     Next i 'next drawing to process

这是来自导出VBA的代码片段:
  1.     Dim ExportedDwg As AcadDocument
  2.     SubjectDwg.Wblock ExportPath & "Backboxes" & ExpBoxName, BoxSSet
  3.     Report = Report & "Backbox file (flush) created with " & CStr(BoxSSet.Count) & " entities." & vbCrLf
  4.     'open and saveas earlier filetype
  5.     Set ExportedDwg = SubjectDwg.Application.Documents.Open(ExportPath & "Backboxes" & ExpBoxName, False)
  6.     ExportedDwg.Activate
  7.     ExportedDwg.SaveAs ExportedDwg.FullName, ac2007_dwg
  8.     ExportedDwg.Close False

在一个理想的世界里,我会用 VB.NET 重写代码,但我现在没有时间, 能够快速对批处理例程进行“每个会话”调整,而不必重新编译等,这真是太好了。
谁能对此有所了解?它在Acad 2015上运行,据我所知,我们在2013年没有这个问题。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-4-20 15:29 , Processed in 1.144198 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表