QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 3921|回复: 1
收起左侧

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

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

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

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

x
本帖最后由 xiaoxifeng 于 2017-3-30 15:19 编辑 $ h4 y4 U+ x1 S7 M7 H; W

' m! T0 N4 m. f) s( p; L现在的问题是 :在下面的代码的空白处加什么代码。可以达到图片的效果。就是在打开装配体的时候,自动遍历装配下的零件和数量 并自动缩进0 o4 h5 ?5 h5 x  M9 p+ |: [" X
6 \0 D/ h& b7 p$ {( \- T

! j8 L. q7 S; t1 S) {3 k: d; E3 W& p4 s1 [, H

$ N) h% g$ s( F2 O; j$ ]
  1. Dim swDM As SwDMApplication
    : t: i/ D2 I; \4 S$ G" l& H& a2 _
  2. Dim swDoc As SwDMDocument121 t+ M- s/ l6 ~# t& k
  3. Dim mOpenErrors As SwDmDocumentOpenError1 y: G5 ^4 r$ U
  4. Dim swCfgMgr As SwDMConfigurationMgr0 ?0 W! J: |6 c8 N( B
  5. Dim objClassfac As SwDMClassFactory9 }$ I: @. c3 }# s! D1 L$ u
  6. Dim vCustPropNameArr As Variant5 \  A9 V+ B% E& S- l
  7. Const SWDMLicenseKey = ""' a: I6 m1 U- Z* b' t
  8. ; m! V  }6 o: ]9 a7 S1 t  B" w

  9. ! a, U0 f1 d+ @( w% q
  10. Sub 打开文件()
    0 a1 x+ N" I1 @! @' y$ S  R
  11. Range("A3").Activate
    3 T9 s/ B: X. d$ F$ N- c
  12. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
    6 k' b. z) U8 h7 t0 A+ i
  13. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM
    9 B0 O% g/ h0 q
  14. Dim vCfgNameArr As Object" O( b: p% G: |# {2 I; j
  15. Dim vCfgName As Object0 O3 v/ Y2 p5 Y% k# j
  16. Dim swCfg As SwDMConfiguration '14
    * z2 @# T5 e% Y+ A; m) Q
  17. Dim nPropType As Long
    % A8 U: E4 q; U, F' T2 G
  18. Dim PropList() As String1 Q0 h$ F( k5 V8 Z4 ]* `
  19. ReDim PropList(0)
    + M/ B* D/ n" w
  20. PropList(0) = ""8 m- J: B* G1 L1 I* S! b3 m) z
  21. Dim intChoice As Integer
    $ J8 f0 t+ E! K! {. @
  22. Dim FilePathName As String& d. ^- [4 Y) K7 {* n9 Z
  23. Dim i As Integer
    $ ]" }' d+ t, E. W
  24. HeaderRow = 20 ^! M# j! |7 U) O% o
  25. RowNumber = 3* a4 Q5 i# k" s) v+ O% R
  26. PathName = Cells(RowNumber, 1) '讀取第一個路徑的值
    6 i! C* f8 T* }8 R2 K) W
  27. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄(尋找繼續填寫的位置)3 q' C/ U) g+ m+ @
  28.     RowNumber = RowNumber + 1 '下一列+ J/ f  v7 i& M" E3 y9 i
  29.     PathName = Cells(RowNumber, 1)
    3 A6 n0 l+ Z" C+ h9 D! A6 K# E
  30. Wend '回到>直到讀完路徑欄
    + n4 Y5 C/ K( N, |, b, m- i) D( b) p
  31. Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = True '設定為多選對話框. }6 @0 T0 H+ ]" F
  32. Application.FileDialog(msoFileDialogFilePicker).Filters.Clear '清除既有類型
    1 j2 m1 R  G$ V/ L$ j! a7 o
  33. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件自定义属性", "*.SLDPRT" '設定檔案類型/ S" G  y" J6 _, u6 n8 `
  34. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件配置属性", "*.SLDPRT" '設定檔案類型( i/ R; W. p2 o1 e
  35. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体自定义属性", "*.SLDASM" '設定檔案類型
    / y& ?/ Z% J5 u' P
  36. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体配置属性", "*.SLDASM" '設定檔案類型6 n9 |4 `% I. C9 t3 F' q. y
  37. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "工程图属性", "*.SLDDRW" '設定檔案類型
    9 Z0 p. D5 p1 [
  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 Then
    4 l* Y- r2 E' I# Q
  39.     Application.FileDialog(msoFileDialogFilePicker).FilterIndex = Cells(1, 1)
    2 g! A0 C5 q  G2 J8 I
  40. End If& c) C2 y. R$ |9 R% f
  41. If Cells(1, 2) <> "" Then Application.FileDialog(msoFileDialogFilePicker).InitialFileName = Cells(1, 2)
    7 }, t$ z8 n! t" @# n. w& T5 ^
  42. intChoice = Application.FileDialog(msoFileDialogFilePicker).Show '彈出對話框4 U" t0 W1 b! h) {

  43. / y6 o3 h) E1 P; ]/ r( T
  44. If intChoice <> 0 Then '判斷有否點選檔案2 ]' ^, U3 w) h2 s. O" M) t
  45.     RowCount = 1
    9 T* V6 N# P! N  j" d" G( ?
  46.     swFilterIndex = Application.FileDialog(msoFileDialogFilePicker).FilterIndex% a  E0 q& _, r7 D- n
  47.     For i = 1 To Application.FileDialog(msoFileDialogFilePicker).SelectedItems.Count '逐一讀取所選檔案
    ; q2 t2 B1 U  {4 f. U$ k- e
  48.         FilePathName = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(i) '讀取完整檔案名稱
    / x* |0 Z8 Z4 S# K
  49.         FilePath = Left(FilePathName, InStrRev(FilePathName, "")) '分解路徑7 D3 L$ N; J. J' I
  50.         FileName = Right(FilePathName, Len(FilePathName) - Len(FilePath)) '分解檔案名稱# O7 F0 r. N/ n. Q4 A% `8 b
  51.         FileExtname = UCase(Right(FilePathName, 6)) '分解檔案類型
    . L7 O- Q6 B& U8 U% B
  52.         If swFilterIndex = 1 Or swFilterIndex = 3 Or swFilterIndex = 5 Then
    " {+ N. O8 a9 M3 j" c! D# q
  53.             Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑
    4 D( p- q; @( _) S) s
  54.             Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱
    ! ~5 y- a/ K* L3 ~( n1 h# J6 E9 p# N
  55.             RowCount = RowCount + 1
    * N1 ^* Y' i8 }: }# c: ~
  56.         End If) b. A& y$ n6 T  `& ?
  57.         If swFilterIndex = 2 Or swFilterIndex = 4 Then '過濾器是2或4- N( @$ n+ K& G# q
  58.             Set swDoc = swDM.GetDocument(PathName & FileName, swFileTYpe, False, mOpenErrors) '開啟檔案, l  L  h/ H$ p4 T; t9 n. Y; c: f
  59.             If Not swDoc Is Nothing Then '排除無效檔案
    1 L: q& t1 F/ T8 ~/ b
  60.                 Set swCfgMgr = swDoc.ConfigurationManager5 z5 b; s$ z' v5 {, H
  61.                 swConfigNames = swCfgMgr.GetConfigurationNames7 I" k$ t* i- m0 Y7 C! C
  62.                 + h5 i( s! f! g+ P! I+ k+ g9 x
  63.                 For Each swConfigName In swConfigNames
    ( p3 q  c$ y6 r! b
  64.                     Set swCfg = swCfgMgr.GetConfigurationByName(swConfigName)
    - x  m) B: W8 m3 h. M" M3 V1 y
  65.                     vCustPropNameArr = swCfg.GetCustomPropertyNames/ c' K. I" ]# ]1 k
  66.                     If TypeName(vCustPropNameArr) = "String()" Then) h& ?" ~; J& {% [! D# R( a
  67. & a6 q" N/ }' o: _7 ~' ]
  68. , M1 l' t8 u* w9 S
  69. 9 S: s1 Z9 m% X* v" h& P. k
  70. ' K, [6 h/ U* f. N8 n2 Z* `1 g
  71. $ o) X1 f  c. ~' k% d3 ], U

  72. 3 L+ A; H0 [' W( M% w, ?/ v/ o
  73. 4 `+ n; ?8 b; ~, X9 e/ f4 j

  74. / u) L. y# Q6 K3 Z, ?) j* }

  75. 3 d) H! c% c) E8 I

  76. $ P1 A% I9 v7 P) c4 `, b
  77.                     End If
    9 O8 D/ k; _3 _6 c( a
  78.                     Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑. G. a. x4 P$ \; ?
  79.                     Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱. ]; e  Z& A3 F; E% A$ o* i
  80.                     Cells(RowCount + RowNumber - 1, 3) = swConfigName '填寫模型組態名稱
    & E8 Q; S( L  O% N% F
  81.                     Cells(RowCount + RowNumber - 1, 3).Interior.Color = RGB(200, 200, 200). F# N. M. G0 ?6 C* K
  82. , E; k% ]8 p/ n+ v1 C; Q5 ?
  83.                     RowCount = RowCount + 1; A( b+ t. P7 ?/ n
  84.                 Next
    ( s3 \* |) h  X2 l% g8 v
  85.                 swDoc.CloseDoc '關閉檔案9 X5 B8 h3 j4 a3 f  q( t
  86.             End If '排除無效檔案<完>! P  L+ O5 g( o3 t  T
  87.         End If ''過濾器是2或4<完>
    / R2 h# ^" U0 G" Z4 e$ G
  88.     Next i '逐一讀取所選檔案<完>
    " X2 L* k  Y# f5 C$ c. c3 v
  89. End If '判斷有否點選檔案<完>7 M6 ]6 H4 ?% g) M2 ]; y. w! H
  90. End Sub
    ! x# r6 q5 M5 ~" r: ~! ]
复制代码

5 R5 `- p: A0 q
  ^) ?& ?& [# B+ ?, S) |* R
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备2023026364号-1 )

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