QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 版主微信号:caivin811031;还未入三维微信群的小伙伴,速度加
2022-07-04
全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
查看: 3316|回复: 1
收起左侧

[讨论] excel VBA 批量更改solidworks 属性的问题

[复制链接]
发表于 2017-3-30 15:18:45 | 显示全部楼层 |阅读模式
安装
主题分类用于问题归类:

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 xiaoxifeng 于 2017-3-30 15:19 编辑 & k3 k& o( X) E: t2 K
3 U/ I0 L) H; d/ `: v
现在的问题是 :在下面的代码的空白处加什么代码。可以达到图片的效果。就是在打开装配体的时候,自动遍历装配下的零件和数量 并自动缩进: B3 `1 q9 i5 |' E% I  ?6 X" M
: o' L8 o% W2 ^  G. ~
- `" A$ @# z/ z0 s% G

% f# V" N( Q9 k0 ]8 v! }

! W2 I+ H- |4 s5 f% y0 C
  1. Dim swDM As SwDMApplication
    ; f3 i. A9 c1 y4 g3 S. c! C. G
  2. Dim swDoc As SwDMDocument123 u+ ?; a; ~2 i( d: a
  3. Dim mOpenErrors As SwDmDocumentOpenError* p, v3 E, q; d! C7 ~5 `
  4. Dim swCfgMgr As SwDMConfigurationMgr
    3 A# S- t$ T7 t8 N$ \* w1 {
  5. Dim objClassfac As SwDMClassFactory
    ( r0 f! ?* w- g# z( K+ i
  6. Dim vCustPropNameArr As Variant
    4 G, V  ]5 J5 t0 _  F. M
  7. Const SWDMLicenseKey = ""/ u' R, u$ I7 ^/ K( e7 C2 A

  8. ( S6 y; f  E: ~: A2 C; f$ `' X, v
  9. 6 t, g5 p; Z0 q9 n3 G7 D$ J9 m1 h& Y
  10. Sub 打开文件()! Q8 T$ x; `% J: a
  11. Range("A3").Activate6 R% ~7 {  j, x# ?
  12. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
      r6 z0 w, I3 {. f* z7 Y9 B6 }
  13. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM
    ( A% D9 {1 R1 }
  14. Dim vCfgNameArr As Object
    3 }* k% l/ @! V
  15. Dim vCfgName As Object
    * r) \' a8 m3 l6 J* }" U) D
  16. Dim swCfg As SwDMConfiguration '149 g. E1 x7 V. N& U* c
  17. Dim nPropType As Long
    2 V/ |! h8 g2 m- u
  18. Dim PropList() As String% [. ]* l) I) U! q  Z8 P8 c
  19. ReDim PropList(0)7 Q# z- [  U* G$ K% k
  20. PropList(0) = ""* b0 E: }; S9 w1 }+ k9 C7 j% g
  21. Dim intChoice As Integer
    ; v4 \' ~& Q& {6 ?/ k) H% V) p
  22. Dim FilePathName As String6 t1 N* K  B+ G+ a. D4 `9 V1 F
  23. Dim i As Integer
    1 W% V7 ~2 c- R; ?+ j8 {
  24. HeaderRow = 2
    ! C* b0 U; ?, t7 r, K0 D6 h1 j
  25. RowNumber = 3
    & g9 \! |6 k. Y! h( j7 [
  26. PathName = Cells(RowNumber, 1) '讀取第一個路徑的值0 P+ |6 t! h( f$ `. h% t
  27. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄(尋找繼續填寫的位置)
    * W7 B& v$ ]$ Y1 j, F! C) U
  28.     RowNumber = RowNumber + 1 '下一列+ e. f: G5 n9 p3 j6 U
  29.     PathName = Cells(RowNumber, 1)
    : p+ K+ o2 s/ ~; H, d/ \* o
  30. Wend '回到>直到讀完路徑欄
    3 o; m3 m0 @2 N( v" g+ q: e' c
  31. Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = True '設定為多選對話框; ^' y8 A& X. ?+ ^. {
  32. Application.FileDialog(msoFileDialogFilePicker).Filters.Clear '清除既有類型
    7 y: D" k" S" M
  33. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件自定义属性", "*.SLDPRT" '設定檔案類型7 w) R4 s& D! r+ Q+ J
  34. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件配置属性", "*.SLDPRT" '設定檔案類型
    % F! T, l, t$ J4 q
  35. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体自定义属性", "*.SLDASM" '設定檔案類型
    0 C( @/ N/ O0 |) a
  36. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体配置属性", "*.SLDASM" '設定檔案類型
    & |: @9 ]1 P+ q: o  o: B3 `4 P+ |
  37. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "工程图属性", "*.SLDDRW" '設定檔案類型  `& S: L4 B  C
  38. If Cells(1, 1) = 1 Or Cells(1, 1) = 2 Or Cells(1, 1) = 3 Or Cells(1, 1) = 4 Or Cells(1, 1) = 5 Then5 e0 v4 }3 L: X) B7 H9 I2 V$ i
  39.     Application.FileDialog(msoFileDialogFilePicker).FilterIndex = Cells(1, 1)6 [+ V: P$ F$ K. D/ T2 W, l9 o' q! S
  40. End If& e0 W+ s) }! u; }! _+ f
  41. If Cells(1, 2) <> "" Then Application.FileDialog(msoFileDialogFilePicker).InitialFileName = Cells(1, 2)
    ( P% D; J* p2 n$ F/ U' J) P8 Z0 x. u4 }
  42. intChoice = Application.FileDialog(msoFileDialogFilePicker).Show '彈出對話框1 X6 q2 J& @. u; P

  43. 3 H2 p. u: |2 ?3 `
  44. If intChoice <> 0 Then '判斷有否點選檔案* T$ T# u7 S/ M8 M& Z% b
  45.     RowCount = 1' m0 G7 T. X7 X
  46.     swFilterIndex = Application.FileDialog(msoFileDialogFilePicker).FilterIndex
    ; \9 H& k+ D) c
  47.     For i = 1 To Application.FileDialog(msoFileDialogFilePicker).SelectedItems.Count '逐一讀取所選檔案2 c" i7 W; I5 s; l
  48.         FilePathName = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(i) '讀取完整檔案名稱
    8 s; w( `3 t; ^6 e5 [: ?! e
  49.         FilePath = Left(FilePathName, InStrRev(FilePathName, "")) '分解路徑5 }4 \6 l5 w  c" \
  50.         FileName = Right(FilePathName, Len(FilePathName) - Len(FilePath)) '分解檔案名稱# C$ I9 E1 p( x/ |' q* C8 Z
  51.         FileExtname = UCase(Right(FilePathName, 6)) '分解檔案類型/ C3 t2 R+ s$ ?. \2 p. m
  52.         If swFilterIndex = 1 Or swFilterIndex = 3 Or swFilterIndex = 5 Then- N# X- i; o8 x! K4 `7 P
  53.             Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑& e" K' l, f5 O* R: j; S
  54.             Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱- G: S! e) i9 ~" i0 p. l6 Y
  55.             RowCount = RowCount + 1
    % s. S4 e; K4 P/ _# ?
  56.         End If. D8 l& s  N" }5 j  w3 X8 t: J
  57.         If swFilterIndex = 2 Or swFilterIndex = 4 Then '過濾器是2或4, t! Z; J3 V4 L! P' L. ^
  58.             Set swDoc = swDM.GetDocument(PathName & FileName, swFileTYpe, False, mOpenErrors) '開啟檔案  V9 v" h* [0 X  j
  59.             If Not swDoc Is Nothing Then '排除無效檔案1 w% L4 t  J7 M6 d) `+ w4 m7 l) Q5 ?
  60.                 Set swCfgMgr = swDoc.ConfigurationManager
    5 e+ F5 s+ b  R' ^9 L2 r
  61.                 swConfigNames = swCfgMgr.GetConfigurationNames
    : n( [4 J, h% Y$ N  H1 ?
  62.                 4 M/ t2 S4 r4 X
  63.                 For Each swConfigName In swConfigNames( f) o: m2 f8 R- D  b' A: L
  64.                     Set swCfg = swCfgMgr.GetConfigurationByName(swConfigName)
      C$ s' a$ B* T# Q. h: ?, p
  65.                     vCustPropNameArr = swCfg.GetCustomPropertyNames
    6 e  Q( Q( {; Q0 i4 |8 G8 k
  66.                     If TypeName(vCustPropNameArr) = "String()" Then7 j( f! H' W) J2 }1 I# Z. X5 Q

  67. 3 f6 n5 ~0 m. p' R: E
  68. # q2 ~. ?8 i3 v* C% ?
  69. * @( `( C% C+ u2 X( C7 g

  70. / @3 D/ g$ \# U! f  U2 [4 @

  71. ; z. A( P' `& j; q/ c- J4 O! H
  72. ' P( U4 v* N2 R2 O2 m, j5 r7 I* C

  73. ! M* B2 `7 q3 p- M0 O7 b' a
  74. ' [. _+ V+ C) T( R# f) N" b

  75. $ v+ _- v" C- S

  76. 7 {; ^8 T- ^. ]
  77.                     End If; z2 l. n7 H0 a, H
  78.                     Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑
    , V+ u, x  C0 H4 u: W
  79.                     Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱
    . d/ R2 k3 R: o1 `* r
  80.                     Cells(RowCount + RowNumber - 1, 3) = swConfigName '填寫模型組態名稱$ J( B+ {' U- M8 I8 t
  81.                     Cells(RowCount + RowNumber - 1, 3).Interior.Color = RGB(200, 200, 200)9 i+ P: n' \* V7 Y2 @7 ^

  82. 0 I: X% c5 V3 D) _( |9 s
  83.                     RowCount = RowCount + 1
    , s; J8 q9 i* l2 X, `: m% M
  84.                 Next
    ' F+ {5 J9 G1 t: s1 f
  85.                 swDoc.CloseDoc '關閉檔案
    # l  T# r1 G* ^5 K
  86.             End If '排除無效檔案<完>! X8 p  T1 n2 P$ c2 d, }0 O# K8 ?
  87.         End If ''過濾器是2或4<完>7 O9 T! G+ m, R4 U* d2 {" B* N
  88.     Next i '逐一讀取所選檔案<完>
    5 ^7 P' F1 ]& n! o3 g# ]$ w' i
  89. End If '判斷有否點選檔案<完>6 _- @! C9 J& {: g" K. c
  90. End Sub) v; Y8 h: d' f1 g+ @
复制代码

/ l) U2 H2 d# w& X$ e: j' I
. C" v' X0 g9 S, H4 G9 ]: @
170721lfgkgzh6xgxwfh6x.jpg

点评

游客
视频t.cn/RxlBLRP 海外直播t.cn/RxmJr8B 好多年前,我在上海本地某论坛混的时候,去过那个网站,整整一层楼面办公的都是管理员,专门删贴的。网络是智力密集型行业,在中国却是劳动力密集型的。  发表于 2017-3-31 06:36
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备13008828号-1 )

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