| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9910 人关注过本帖
标题:实时错误91,对象变量或with块变量未设置~~如何解决
只看楼主 加入收藏
ck3670
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-4-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:18 
实时错误91,对象变量或with块变量未设置~~如何解决
Private Sub Command1_Click()
Dim part As Object
Dim strfilename As String
Dim longstatus As Long
Dim d1 As Integer
Dim d2 As Integer
Dim h As Single
If Dir(strfilename) = "" Then
   MsgBox ("文件不存在,请检查路径:" & vbCrLf & strfilename)
   Exit Sub
   End If
strfilename = App.Path + "\" + "垫圈.sldprt"
Set swApp = CreateObject("sldworks.application")
swApp.Visible = True
Set part = swApp.opendoc4(strfilename, 1, 0, "", longstatus)
Set part = swApp.ActivateDoc("垫圈")
ProgressBar1.Value = 4
d1 = Text1.Text
d2 = Text2.Text
h = Text3.Text
Debug.Print d1, d2, h
strfilename = "@垫圈.sldprt"
    part.Parameter("d1 @ 草图2 " & strfilename).SystemValue = d1 / 1000
    part.Parameter("d2 @ 草图2 " & strfilename).SystemValue = d2 / 1000
    part.Parameter("h  @ 拉伸1 " & strfilename).SystemValue = h / 1000
    part.EditRebulid
ProgressBar1.Value = 9
Set part = Nothing
Set swApp = Nothing
ProgressBar1.Value = 100
StatusBar1.Panels(1).Text = "更新结束"
End Sub


在最后  part.Parameter("d1 @ 草图2 " & strfilename).SystemValue = d1 / 1000~~~调试时就会出现实时错误91,对象变量或with块变量未设置,有大神告诉怎么解决吗?
搜索更多相关主题的帖子: 如何 垫圈 
2014-04-13 12:26
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:20 
1. strfilename 赋值应前置,否则永远找不到文件
strfilename = App.Path + "\" + "垫圈.sldprt"
If Dir(strfilename) = "" Then
   MsgBox ("文件不存在,请检查路径:" & vbCrLf & strfilename)
   Exit Sub
End If

2. swApp 应先定义再创建对象 (如使用Excel,则 Dim xlApp As New Excel.Application)
Dim swApp As ······
Set swApp = CreateObject("sldworks.application")
2014-04-13 13:58
ck3670
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-4-13
收藏
得分:0 
回复 2 楼 owenlu1981
很感谢你的帮助。在我那样修改后,可以寻找到文件了,但是还是会出现那样的错误。修改后的代码如下:
Private Sub Command1_Click()
Dim part As Object
Dim strfilename As String
Dim longstatus As Long
Dim d1 As Integer
Dim d2 As Integer
Dim h As Single
strfilename = App.Path + "\" + "垫圈.sldprt"
If Dir(strfilename) = "" Then
   MsgBox ("文件不存在,请检查路径:" & vbCrLf & strfilename)
   Exit Sub
   End If
Dim swApp As Object
Set swApp = CreateObject("sldworks.application")
swApp.Visible = True
Set part = swApp.opendoc4(strfilename, 1, 0, "", longstatus)
Set part = swApp.ActivateDoc("垫圈")
ProgressBar1.Value = 4
d1 = Text1.Text
d2 = Text2.Text
h = Text3.Text
Debug.Print d1, d2, h
strfilename = "@垫圈.sldprt"
    part.Parameter("d1 @ 草图2 " & strfilename).SystemValue = d1 / 1000
    part.Parameter("d2 @ 草图2 " & strfilename).SystemValue = d2 / 1000
    part.Parameter("h  @ 拉伸1 " & strfilename).SystemValue = h / 1000
    part.EditRebulid
ProgressBar1.Value = 9
Set part = Nothing
Set swApp = Nothing
ProgressBar1.Value = 100
StatusBar1.Panels(1).Text = "更新结束"
End Sub

调试时还是提示对象变量或with块变量未设置,可以能再帮我找下问题吗?万分感谢
2014-04-15 21:57
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:0 
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.PartDoc

Set swApp = CreateObject("SldWorks.Application")
Set Part = swApp.ActiveDoc
swApp.Visible = True
2014-04-15 22:41
ck3670
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-4-13
收藏
得分:0 
回复 4 楼 owenlu1981
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.PartDoc
~~修改成这个会显示用户定义类型未定义。
关于之前那个调试问题出在
 Part.Parameter("d1 @ 草图1 " & strfilename).SystemValue = d1 / 1000
~~是不是这里的问题呢?
2014-04-15 22:49
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:0 
回复 5 楼 ck3670
得先在工程->引用里添加对象
比如程序中使用Excel,就得先应用 Microsoft Excel xx.0 Object Library
2014-04-16 11:01
ck3670
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-4-13
收藏
得分:0 
回复 6 楼 owenlu1981
我这是用VB对solidworks的二次开发~~在引用那里把关于solidworks的都勾上了,还是不行。本人新手,希望能教下
2014-04-16 16:37
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:0 
出错语句或对象是?
2014-04-16 19:15
ck3670
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-4-13
收藏
得分:0 
回复 8 楼 owenlu1981
出错语句一直都是
 part.Parameter("d1 @ 草图1 " & strfilename).SystemValue = d1 / 1000
这句~~
调试的错误就是实时错误91,对象变量或with变量未设置。
2014-04-17 12:26
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
Set part = swApp.opendoc4(strfilename, 1, 0, "", longstatus)
Set part = swApp.ActivateDoc("垫圈")
取消红色set试试,一个对象接连两次实例化肯定不合规矩。
2014-04-17 12:33
快速回复:实时错误91,对象变量或with块变量未设置~~如何解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030330 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved