实时错误“91”对象变量或with块变量未设置

MYCampanula 2017-05-27 07:15:26
Private Sub cmdDraw_Click()
Form1.Hide


Dim swapp As Object
Dim part As Object
Set swapp = CreateObject("Sldworks.Application") '创建或获取SldWorks对象
Set part = swapp.NewDocument(CurrentDir + "\temp\轴承.prtdot", 0, 0, 0) '打开模型

Dim fileName As String
fileName = part.gettitle '获得文件名


Dim CurCFG As Object
Set CurCFG = part.GetActiveConfiguration() '获得配置

Dim ConfName As String
ConfName = CurCFG.Name '获得配置名称



boolstatus = part.Extension.SelectByID("D6@草图1@" + fileName + ".SLDPRT", "DIMENSION", 0.1448, 0.0612, -0.0165, False, 0, Nothing)
part.Parameter("D6@草图1").SystemValue = txtWj.Caption / 1000 '更改目标外径
boolstatus = part.Extension.SelectByID("D1@草图1@" + fileName + ".SLDPRT", "DIMENSION", 0.041, -0.0415, 0.00516, False, 0, Nothing)
part.Parameter("D1@草图1").SystemValue = txtNj.Caption / 1000 '更改目标内径
boolstatus = part.Extension.SelectByID("D4@草图1@" + fileName + ".SLDPRT", "DIMENSION", -0.00518, 0.05451, -0.008906, False, 0, Nothing)
part.Parameter("D4@草图1").SystemValue = txtHd.Caption / 1000 '更改目标厚度
part.EditRebuild
part.ShowNamedView2 "*等轴测", 7
part.ViewZoomtofit2
'添加属性
part.AddCustomInfo3 ConfName, "代号", swCustomInfoText, txtBs.Caption
part.AddCustomInfo3 ConfName, "名称", swCustomInfoText, "单列向心球轴承"
Form1.Show
End Sub
...全文
1395 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-05-31
  • 打赏
  • 举报
回复
注释掉所有On Error Resume Next语句,在IDE中运行, 出错后点击调试,光标会停在出错的那条语句处, 或者 事先在怀疑可能有逻辑错误的语句处设置断点,运行经过断点时中断, 此时可以在立即窗口中使用 ?变量名 或 ?函数名(函数参数) 或 过程名(参数) 辅助调试。
脆皮大雪糕 2017-05-30
  • 打赏
  • 举报
回复
Set swapp = CreateObject("Sldworks.Application") 这句也最好检查一下,执行完了以后swapp是不是又对象生成了。加个监视啥的,看这句执行前后swapp有没有东西。 如果上面这句没问题那问题就必然出在下一句。 Set part = swapp.NewDocument(CurrentDir + "\temp\轴承.prtdot", 0, 0, 0) 楼上对这句的分析已经很详细了
舉杯邀明月 2017-05-30
  • 打赏
  • 举报
回复
Set swapp = CreateObject("Sldworks.Application") 肯定执行成功了的,要不然它的下一句就没法执行了,在执行那一句时就会报错;   而不是在后面的 fileName = part.gettitle才报错。
无·法 2017-05-30
  • 打赏
  • 举报
回复
VBA扎根于各类行业软件了,不知道哪些用vb排行语言的是不是把这些也都算入了。 楼主你单步调试对part右击添加监视看看。 Set part = swapp.NewDocument(CurrentDir + "\temp\轴承.prtdot", 0, 0, 0) 这里再改用全路径测试看看是不是文件路径问题,然后后面3个参数仔细研究下,是不是打开了要前端显示啥的,记得以前用com打开ppt文件要操作还得设置个参数的,不然都是无法操作对象。
舉杯邀明月 2017-05-27
  • 打赏
  • 举报
回复
如果是“ fileName = part.gettitle ”这句提示91错误, 显然,前面的那句:Set part = swapp.NewDocument(CurrentDir + "\temp\轴承.prtdot", 0, 0, 0) '打开模型 没有成功执行,楼主应该查一下: 1. 文件路径是否正确?   CurrentDir有可能会随“工作环境”及指令代码的执行而变化,你应该在此句处设置断点,   当执行到此句时,确认一下“CurrentDir”是否为你需要的路径! 2. 你确定“打开”已有的工程文件,不是用的“Openxxxxx”的函数,而是这个“Newxxxxx”的函数? 3. 查一下相关文档,确认一下你的“NewDocument( )”传的另外几个参数是否正确(假设确实是用这个函数)。
舉杯邀明月 2017-05-27
  • 打赏
  • 举报
回复
引用 1 楼 zdingyun 的回复:
不知LZ哪儿搞得代码?
Sldworks  机械行业一个比较有名的CAM软件。 这个跟“行业”的相关性比较大。 围观一下…………
zdingyun 2017-05-27
  • 打赏
  • 举报
回复
不知LZ哪儿搞得代码?

2,464

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧