SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 2950|回复: 11
打印 上一主题 下一主题

EXCEL读取文档属性速度

[复制链接]

5

主题

48

帖子

35

金币

天使

Rank: 2Rank: 2

积分
129
QQ
跳转到指定楼层
楼主
发表于 2019-11-22 10:49:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
咨询下各位通过VBA宏实现读取三维零件.PRT或者装配文件.asm格式的文档获取文档属性和写入文档属性时,涉及多个文档读写时感觉慢,读取59个零件的属性(零件号、名称)用了1分30秒,写入59个零件(零件号)属性用了4分钟,这个速度正常么?
  以下是读写的代码:
Sub ReadPrpExcel()'读取文档属性
Set swApp = CreateObject("SldWorks.Application") '启动SW
ReadFilesCount = 0
HeaderRow = 2
RowNumber = HeaderRow + 1
PathName = Cells(RowNumber, 1) '读取第一个路径的值
While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到读完路径栏
  Filename = Cells(RowNumber, 2)
  If UCase(Right(Filename, 3)) = "PRT" Then swFileTYpe = 1
  If UCase(Right(Filename, 3)) = "ASM" Then swFileTYpe = 2
  If UCase(Right(Filename, 3)) = "DRW" Then swFileTYpe = 3
  Set swDoc = Nothing
  If Dir(PathName & Filename)"" Then
  Set swDoc = swApp.OpenDoc(PathName & Filename, swFileTYpe) '开启文档
  End If
  If Not swDoc Is Nothing Then
  ColumnNumber = 4
  PropName = Cells(HeaderRow, ColumnNumber)
  While Not (PropName = "" Or PropName = 0 Or IsEmpty(PropName)) '直到读完表头
    PropValue = swDoc.CustomInfo2("默认", PropName) '获取属性
    Sheet1.Cells(RowNumber, ColumnNumber) = PropValue
    ColumnNumber = ColumnNumber + 1 '下一栏
    PropName = Cells(HeaderRow, ColumnNumber)
  Wend '回到>直到读完表头
  swApp.CloseDoc PathName & Filename
  Cells(RowNumber, 1).Interior.Color = RGB(200, 255, 200)
  ReadFilesCount = ReadFilesCount + 1
  End If
  RowNumber = RowNumber + 1 '下一列
  PathName = Cells(RowNumber, 1)
Wend '回到>直到读完路径栏
MsgBox "读取了 " & ReadFilesCount & " 个文档的属性!"
End Sub

Sub WritePrp()'写入文档属性
Set swApp = CreateObject("SldWorks.Application") '启动SW
SavedFilesCount = 0
HeaderRow = 2
RowNumber = 2
RowNumber = HeaderRow + 1
PathName = Cells(RowNumber, 1) '读取第一个路径的值
While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到读完路径栏
  Filename = Cells(RowNumber, 2)
  If UCase(Right(Filename, 3)) = "PRT" Then swFileTYpe = 1
  If UCase(Right(Filename, 3)) = "ASM" Then swFileTYpe = 2
  If UCase(Right(Filename, 3)) = "DRW" Then swFileTYpe = 3
  Set swDoc = Nothing
  If Dir(PathName & Filename)"" Then
  Set swDoc = swApp.OpenDoc(PathName & Filename, swFileTYpe) '开启文档
  End If
  If Not swDoc Is Nothing Then
  ColumnNumber = 4
  PropName = Cells(HeaderRow, ColumnNumber)
  While Not (PropName = "" Or PropName = 0 Or IsEmpty(PropName)) '直到读完表头
    PropValue = Cells(RowNumber, ColumnNumber)
    swDoc.DeleteCustomInfo2 "默认", PropName '删除属性
    swDoc.AddCustomInfo3 "默认", PropName, 30, PropValue '新增属性
    ColumnNumber = ColumnNumber + 1 '下一栏
    PropName = Cells(HeaderRow, ColumnNumber)
  Wend '回到>直到读完表头
  Dim lErrors     As Long
  Dim lWarnings   As Long
  SaveOk = swDoc.Save3(1, lErrors, lWarnings)
  swApp.CloseDoc PathName & Filename '关闭
  If SaveOk Then
    Cells(RowNumber, 1).Interior.Color = RGB(255, 255, 127)
    SavedFilesCount = SavedFilesCount + 1
  End If
  End If
  RowNumber = RowNumber + 1 '下一列
  PathName = Cells(RowNumber, 1)
Wend '回到>直到读完路径栏
MsgBox "更新了 " & SavedFilesCount & " 个文档的属性!"
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

5

主题

39

帖子

33

金币

天使

Rank: 2Rank: 2

积分
101
QQ
推荐
发表于 2019-12-22 00:22:41 | 只看该作者
写入自己德SWDM-API金钥就可以用啰


SolidWorks 文件管理工具.zip (6.31 MB, 下载次数: 121)
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 1 反对 0

使用道具 举报

3

主题

38

帖子

23

金币

天使

Rank: 2Rank: 2

积分
84
QQ
板凳
发表于 2019-12-13 07:10:07 | 只看该作者
用SwAPI这速度还行吧

我用SWDM-API读取1000多个零件的属性大概1分钟左右
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

50

帖子

9

金币

天使

Rank: 2Rank: 2

积分
91
QQ
地板
发表于 2019-12-17 16:10:34 | 只看该作者
你好,读跟写都是1分钟左右?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

45

帖子

33

金币

天使

Rank: 2Rank: 2

积分
128
QQ
5#
发表于 2019-12-20 14:28:26 | 只看该作者

   经典案例图书
追问:读的都是零件.prt和装配文件.asm类型的吧,能分享下功能代码么?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

44

帖子

17

金币

天使

Rank: 2Rank: 2

积分
74
QQ
6#
发表于 2020-1-8 03:59:12 | 只看该作者
C#开发的?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

51

帖子

29

金币

天使

Rank: 2Rank: 2

积分
112
QQ
7#
发表于 2020-1-12 22:35:12 | 只看该作者

   经典案例图书
VB.NET
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

53

帖子

49

金币

天使

Rank: 2Rank: 2

积分
157
QQ
8#
发表于 2020-1-16 00:19:35 | 只看该作者
工程图中套用的零件表非本公司专用范本,如何解决?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

45

帖子

36

金币

天使

Rank: 2Rank: 2

积分
119
QQ
9#
发表于 2020-2-2 05:10:47 | 只看该作者
这要自己修改程式码了,加油吧....
我的公司转用Creo了,所以我点没在维护小工具了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

43

帖子

33

金币

天使

Rank: 2Rank: 2

积分
114
QQ
10#
发表于 2020-2-9 05:53:41 | 只看该作者
兄弟能否指点一下改哪些地方file:///C:\Users\ADMINI~1\AppData\Local\Temp\SGPicFaceTpBq\17176\00D3E136.jpg
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

13

帖子

51

金币

天使

Rank: 2Rank: 2

积分
158

最佳新人宣传达人

11#
发表于 2024-4-8 22:14:06 | 只看该作者
好好学习,天天向上!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

1137

帖子

235

金币

传奇

Rank: 8Rank: 8

积分
3844

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

12#
发表于 2024-4-9 08:37:44 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-13 10:02 , Processed in 0.242609 second(s), 38 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

快速回复 返回顶部 返回列表