QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 3919|回复: 1
收起左侧

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

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

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

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

x
本帖最后由 xiaoxifeng 于 2017-3-30 15:19 编辑
+ n9 K  A2 O+ }9 @- G* T; P% H! Y# x1 O$ @1 A( j' _4 n
现在的问题是 :在下面的代码的空白处加什么代码。可以达到图片的效果。就是在打开装配体的时候,自动遍历装配下的零件和数量 并自动缩进
" w; O* R3 b/ ~* Z6 u: z1 o: w
% |* q0 C8 s7 t# b4 o
  ~8 F0 j- q: d0 r8 U5 [& J

9 V: Z9 Y" v# R1 o% ?; {9 r7 S. ]

+ y  P1 ?9 v6 x  {& j$ E
  1. Dim swDM As SwDMApplication
    7 Q. ?* h/ z4 L. N/ x7 b
  2. Dim swDoc As SwDMDocument12
    4 p# Y" ^5 A  L( r! e! u
  3. Dim mOpenErrors As SwDmDocumentOpenError
      w; y- ?. J) U& Z4 F/ @
  4. Dim swCfgMgr As SwDMConfigurationMgr; `  H4 a# Q4 Y8 [+ E
  5. Dim objClassfac As SwDMClassFactory/ v- S6 D" @; z! X: Z- G# e0 q
  6. Dim vCustPropNameArr As Variant
    7 b3 _' P" t4 w
  7. Const SWDMLicenseKey = ""/ Y' f" A! `% ]$ F' I& V
  8. 0 X4 d5 X" O9 E% X( Q+ E) b

  9. , I* a# ~8 u: M, S
  10. Sub 打开文件()
    # Q6 R, m6 k. g5 L% `1 O/ M# c
  11. Range("A3").Activate/ ~/ x' J. [: w7 x. L! \8 f
  12. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")" d# O( z7 P; A3 U) U
  13. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM2 ^' ~% z0 [8 J
  14. Dim vCfgNameArr As Object- G0 \$ q. H3 k  s3 q8 u% a
  15. Dim vCfgName As Object
    2 D; c( ^8 V. w" g& g" T
  16. Dim swCfg As SwDMConfiguration '14& _  O0 Y/ ~3 U. t9 L$ R) l% |
  17. Dim nPropType As Long
    ( F( ], c6 a1 U* }' {8 m" J# r
  18. Dim PropList() As String
    0 a: ^4 }# ~# J
  19. ReDim PropList(0)
    * U1 N' h; f. ~8 M0 Q
  20. PropList(0) = ""* [7 }# p5 M+ F6 P) l
  21. Dim intChoice As Integer% O: Y6 E: S+ r8 k
  22. Dim FilePathName As String
    : D' N+ q/ l  W6 H& j7 V/ a
  23. Dim i As Integer" U( N- L, F9 t8 X# ~! I: K. R9 o0 k2 |
  24. HeaderRow = 22 P" D' h8 Z& W8 `% f1 L9 @7 h
  25. RowNumber = 3
    6 M. p) C7 x1 c& C  |) o, e6 B
  26. PathName = Cells(RowNumber, 1) '讀取第一個路徑的值
    $ D; Y3 R$ R2 x% N/ N" x$ J+ b/ H  t
  27. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄(尋找繼續填寫的位置)$ ?6 @( G, q9 J1 l9 f$ f4 ?& v; g: ^
  28.     RowNumber = RowNumber + 1 '下一列4 H' _7 T' |: a& m; u! ?
  29.     PathName = Cells(RowNumber, 1)
    ' M8 p) w; Z5 A0 R/ \! w
  30. Wend '回到>直到讀完路徑欄
    & q1 _$ H" z( Q) c0 x/ [
  31. Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = True '設定為多選對話框
    ; a6 r0 J& D9 Y& u/ {) _
  32. Application.FileDialog(msoFileDialogFilePicker).Filters.Clear '清除既有類型
    0 K% }9 @$ T2 a# ?5 p. w
  33. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件自定义属性", "*.SLDPRT" '設定檔案類型
    9 K, L. i0 Z( i: p* a7 J8 N% r
  34. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件配置属性", "*.SLDPRT" '設定檔案類型; d" E7 d6 g, N# `0 z
  35. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体自定义属性", "*.SLDASM" '設定檔案類型  ]( j9 p" u2 B4 y
  36. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体配置属性", "*.SLDASM" '設定檔案類型
    2 U% \, B. g' E: ^
  37. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "工程图属性", "*.SLDDRW" '設定檔案類型
    2 ~& J/ B1 d* {; i, |- V, J) @3 B
  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; }0 w# e* @: Q, U# `
  39.     Application.FileDialog(msoFileDialogFilePicker).FilterIndex = Cells(1, 1); @" }8 d" ^9 O0 K3 C- z
  40. End If
    # D9 B+ I( _5 |2 e, |( K3 J& p
  41. If Cells(1, 2) <> "" Then Application.FileDialog(msoFileDialogFilePicker).InitialFileName = Cells(1, 2)+ P0 p( j, P: f# P
  42. intChoice = Application.FileDialog(msoFileDialogFilePicker).Show '彈出對話框( \& J/ Z2 f6 v3 z! B- W; {$ o
  43. * D0 s6 s" P* s! k) w
  44. If intChoice <> 0 Then '判斷有否點選檔案
    + V' b* L+ H: S7 Q- ~: _
  45.     RowCount = 1
    + q# O1 Q6 T- x! B
  46.     swFilterIndex = Application.FileDialog(msoFileDialogFilePicker).FilterIndex
    1 Z/ n1 I% F) u3 J
  47.     For i = 1 To Application.FileDialog(msoFileDialogFilePicker).SelectedItems.Count '逐一讀取所選檔案
    ( \/ ~$ l  |6 F7 m5 g, M) }
  48.         FilePathName = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(i) '讀取完整檔案名稱. O8 z# f/ P/ X8 r
  49.         FilePath = Left(FilePathName, InStrRev(FilePathName, "")) '分解路徑& }) q/ A  f2 N% j' `' G
  50.         FileName = Right(FilePathName, Len(FilePathName) - Len(FilePath)) '分解檔案名稱7 w  k/ U2 q4 T, Y' r& h4 J
  51.         FileExtname = UCase(Right(FilePathName, 6)) '分解檔案類型
    7 d8 t8 P: N: D
  52.         If swFilterIndex = 1 Or swFilterIndex = 3 Or swFilterIndex = 5 Then( o8 B# h. t7 ?
  53.             Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑& b+ d5 l, _6 L% j! H+ L/ ]% R( \
  54.             Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱. L2 b( a! U9 ]
  55.             RowCount = RowCount + 1
      C. M( T6 Y" S8 Q
  56.         End If9 ^3 @4 m1 E& c9 u5 X& H$ f
  57.         If swFilterIndex = 2 Or swFilterIndex = 4 Then '過濾器是2或4' e% Q7 o" f0 L
  58.             Set swDoc = swDM.GetDocument(PathName & FileName, swFileTYpe, False, mOpenErrors) '開啟檔案( U  C; ], F6 W% i
  59.             If Not swDoc Is Nothing Then '排除無效檔案
    2 r% d: r9 |' u( ~$ C- B
  60.                 Set swCfgMgr = swDoc.ConfigurationManager' {& L) ]; h6 g5 o" A" _% C' T
  61.                 swConfigNames = swCfgMgr.GetConfigurationNames0 e+ s0 l( e( m6 E+ `
  62.                
    . z7 L/ `; T- Q* G4 g
  63.                 For Each swConfigName In swConfigNames
    " C! y' m: u2 N: Y2 r
  64.                     Set swCfg = swCfgMgr.GetConfigurationByName(swConfigName)- {0 H: j% R% @1 Z' Z* I: w5 Q' z
  65.                     vCustPropNameArr = swCfg.GetCustomPropertyNames7 p9 f5 F! J- Q% ?) F/ A0 ~
  66.                     If TypeName(vCustPropNameArr) = "String()" Then" `. v! Q7 C$ t: r

  67. " m9 Q7 u9 |! _, ~
  68. 3 t% B4 v' F! Y+ H, d
  69. 9 E# S0 c" q6 N6 h2 q# {0 J
  70. ! Z' H% _- @8 R. g/ ]) I- {
  71. 0 s8 F5 G: H' q3 m8 \  S+ }( ?
  72. + ~( Q, B& c' e( T7 }+ _/ I" l, [

  73. : h% S/ P, [' D1 D( }
  74. ) D% v: T0 T4 K# O; t
  75. " G- s( V+ O/ \8 S- Y6 f7 F
  76. ' ?* E  T) F. m  R. ]6 g; c6 c
  77.                     End If8 f, A6 O  v0 a: c) p
  78.                     Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑
      s, p$ R+ @* r7 X" T3 V1 o
  79.                     Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱
    * r7 \2 Z( v4 e
  80.                     Cells(RowCount + RowNumber - 1, 3) = swConfigName '填寫模型組態名稱
    / n& K4 E8 V- s5 c
  81.                     Cells(RowCount + RowNumber - 1, 3).Interior.Color = RGB(200, 200, 200)+ g1 x/ @% {* r* ~3 @; c+ }

  82. $ S* R7 l' Z; L' `
  83.                     RowCount = RowCount + 1
    . B% `5 |5 A/ w: ~% t
  84.                 Next
    4 I/ X! u, ~7 @- s. d3 ^
  85.                 swDoc.CloseDoc '關閉檔案
    : m) G- ]2 J! A/ E1 p
  86.             End If '排除無效檔案<完>  A0 ]8 E' g' n1 R: g6 I
  87.         End If ''過濾器是2或4<完>
    , ~7 y3 q5 f) C0 H( r' v
  88.     Next i '逐一讀取所選檔案<完>* P& k# h5 i# C: {% T/ A7 d
  89. End If '判斷有否點選檔案<完>
    ' b7 s4 M# G5 H! T
  90. End Sub& I" w( K0 ^1 J/ e
复制代码

% h: N9 _  |) J' v! T9 M, ~
! B2 `; r& l, H/ p
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 )

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