QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 xiaoxifeng 于 2017-3-30 15:19 编辑 ' o% o  u' b5 Y+ S+ n4 R! W! Q

! ]: Y2 z: d" o$ o- M) _; \现在的问题是 :在下面的代码的空白处加什么代码。可以达到图片的效果。就是在打开装配体的时候,自动遍历装配下的零件和数量 并自动缩进
0 {5 r* Q1 D% P- q7 B
6 |2 ?  {) L) @$ o
8 v4 L3 N% e7 B+ w2 T
5 |2 ?1 R& d1 H" P

" t% a% @! U- D6 K0 e
  1. Dim swDM As SwDMApplication
    6 p6 U5 @& m' F9 k3 C8 k! D
  2. Dim swDoc As SwDMDocument12
    ! k& Q$ `, u6 L' G, |9 V1 T
  3. Dim mOpenErrors As SwDmDocumentOpenError
    # c4 U4 i% h3 a) v
  4. Dim swCfgMgr As SwDMConfigurationMgr+ z% N5 H3 Q. M" v6 J) `
  5. Dim objClassfac As SwDMClassFactory
    0 C& H5 `- A% G+ ?3 L, z& g  ~
  6. Dim vCustPropNameArr As Variant& T4 B! u/ n2 t4 H8 A9 z
  7. Const SWDMLicenseKey = ""3 d. I8 M; i4 n$ V4 I# G

  8. ! s+ r& {, \, V- I! b& f
  9. 6 x! Y2 [# h, [/ G& u
  10. Sub 打开文件()
    7 ^: |. A9 S) h+ I: k) c
  11. Range("A3").Activate
    " Q0 q4 E! i8 N
  12. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")' l* a4 s; l% j
  13. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM: P1 |: R" s* D1 X4 F- h  z
  14. Dim vCfgNameArr As Object( i+ V+ W5 G  D( o5 Z" w$ s
  15. Dim vCfgName As Object
    - \% I: W# a9 ]1 D0 A
  16. Dim swCfg As SwDMConfiguration '14! I: R" I" E8 g" r2 {
  17. Dim nPropType As Long
    , j1 H2 f: C# D5 I9 B
  18. Dim PropList() As String& _3 }1 i- m# {; I  S
  19. ReDim PropList(0)
    6 h+ U4 O' T" h) K
  20. PropList(0) = ""
    # R' J9 w) ]" X! n4 P6 v, ]
  21. Dim intChoice As Integer9 V$ A8 ?& `/ B9 a/ Z. J* V0 G: r6 D
  22. Dim FilePathName As String/ L) T5 [# t# f
  23. Dim i As Integer
    / [. k% U3 W, A- D) H& ^# f
  24. HeaderRow = 2
    3 @# I" Z' r/ F6 \5 R. t
  25. RowNumber = 3
    % K( V( f- v$ E( H3 m; A# Q8 [
  26. PathName = Cells(RowNumber, 1) '讀取第一個路徑的值$ J6 @7 C% w3 l9 p- T& X6 l" E: R
  27. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄(尋找繼續填寫的位置)/ _# v2 L- @5 L+ j6 q) _
  28.     RowNumber = RowNumber + 1 '下一列
    / R, H0 L! K; O8 c1 K
  29.     PathName = Cells(RowNumber, 1)
    & Z/ R7 O4 _) T' \+ U! R8 V- p
  30. Wend '回到>直到讀完路徑欄
    9 J& n1 A, E! J0 H& U1 N
  31. Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = True '設定為多選對話框# \# d6 R' Y3 \, c# g
  32. Application.FileDialog(msoFileDialogFilePicker).Filters.Clear '清除既有類型5 O: K- t* P/ e0 I
  33. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件自定义属性", "*.SLDPRT" '設定檔案類型0 ~3 N+ y( e9 {3 G1 `: [3 ]9 |
  34. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件配置属性", "*.SLDPRT" '設定檔案類型
    + J9 @. Q. D# q  u7 s* `
  35. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体自定义属性", "*.SLDASM" '設定檔案類型* m: b. e, G& v5 e4 {, W
  36. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体配置属性", "*.SLDASM" '設定檔案類型
    2 p9 L! w* y. I
  37. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "工程图属性", "*.SLDDRW" '設定檔案類型8 }. Y# Q- |( T6 c2 E
  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' Y6 y6 M! J9 m
  39.     Application.FileDialog(msoFileDialogFilePicker).FilterIndex = Cells(1, 1)
    - M- h! Y  M6 N% c1 j( o
  40. End If& y/ k# c, h$ v5 |
  41. If Cells(1, 2) <> "" Then Application.FileDialog(msoFileDialogFilePicker).InitialFileName = Cells(1, 2)
    ! Q4 l5 @; w) D, F
  42. intChoice = Application.FileDialog(msoFileDialogFilePicker).Show '彈出對話框9 o6 `* D; u) D
  43. / I% X1 H% m# u  f
  44. If intChoice <> 0 Then '判斷有否點選檔案
    # e4 B. }/ ?1 v( q
  45.     RowCount = 1
    0 L: g+ E$ L2 y& y+ o9 `- j
  46.     swFilterIndex = Application.FileDialog(msoFileDialogFilePicker).FilterIndex4 i( D. l8 D; @8 o
  47.     For i = 1 To Application.FileDialog(msoFileDialogFilePicker).SelectedItems.Count '逐一讀取所選檔案, ?  C) x  k8 o' k  x% C, A
  48.         FilePathName = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(i) '讀取完整檔案名稱
    ( \4 s$ D2 F' R- }) N4 `1 @, X
  49.         FilePath = Left(FilePathName, InStrRev(FilePathName, "")) '分解路徑
    ; Q' I8 v6 s/ x2 ^  N. E( b, X' d' q' f
  50.         FileName = Right(FilePathName, Len(FilePathName) - Len(FilePath)) '分解檔案名稱& O: w/ |, {, o/ N' @
  51.         FileExtname = UCase(Right(FilePathName, 6)) '分解檔案類型3 B4 J( B3 f% ~  D
  52.         If swFilterIndex = 1 Or swFilterIndex = 3 Or swFilterIndex = 5 Then
    3 x6 S0 r+ F. u
  53.             Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑) s- t5 K! z' z: c# k) [4 w
  54.             Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱
    0 U2 j  @( R0 \$ e. G
  55.             RowCount = RowCount + 1
    " v5 C2 @5 V9 W
  56.         End If
    3 I8 ?3 p# |: |
  57.         If swFilterIndex = 2 Or swFilterIndex = 4 Then '過濾器是2或4! }$ D3 f; k- c" h
  58.             Set swDoc = swDM.GetDocument(PathName & FileName, swFileTYpe, False, mOpenErrors) '開啟檔案) i! w, a" L3 @( U
  59.             If Not swDoc Is Nothing Then '排除無效檔案7 O5 R/ I  |. d9 u
  60.                 Set swCfgMgr = swDoc.ConfigurationManager
    2 t# H  A5 G$ M! o- b
  61.                 swConfigNames = swCfgMgr.GetConfigurationNames0 `! `5 m' N4 _: p; @. _1 Q
  62.                 % v) F0 l7 {  b5 V4 b/ \% J
  63.                 For Each swConfigName In swConfigNames
    . o6 J; V) ?. h3 H/ t$ x1 t- g3 U
  64.                     Set swCfg = swCfgMgr.GetConfigurationByName(swConfigName)! e# i1 l; u0 Q& n( D7 |
  65.                     vCustPropNameArr = swCfg.GetCustomPropertyNames) ?# x- K9 ]' h
  66.                     If TypeName(vCustPropNameArr) = "String()" Then
    ; U8 t/ {7 w, s6 e6 P
  67. . H$ t/ D* ?) o9 i) S
  68. - n! W$ L: j  O3 W. `5 @

  69. ' U( q6 G' K* [; p) Y& o

  70.   {4 O8 A% C1 h6 A, N1 {! o5 H4 Q
  71. 2 y) F  P" ]) Y* h1 k

  72. 5 T- s' L; K0 S% {& q6 T7 k
  73. ; B( S& V  g4 F+ Y! H. }6 B
  74. # v  h( I& P& A. L/ x1 `: h. o7 N

  75. * \6 F  U+ a! U
  76. 1 c- t: u# B% Y. V6 I3 ?& ?/ I
  77.                     End If1 }: W6 x( P" F) J) A& w3 ^6 g# r
  78.                     Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑
    % D, M# l0 Q) n" h2 q+ V1 @8 u
  79.                     Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱
    : U8 q5 z+ r/ {( J) q7 N
  80.                     Cells(RowCount + RowNumber - 1, 3) = swConfigName '填寫模型組態名稱
    0 y0 y# a- P3 U
  81.                     Cells(RowCount + RowNumber - 1, 3).Interior.Color = RGB(200, 200, 200)) `1 d4 U" d2 a5 f# j  [
  82. * f0 k4 i) X: B) c
  83.                     RowCount = RowCount + 1
    $ `7 i. R& N+ I7 r4 G
  84.                 Next! [1 J3 \# b5 c0 U% S
  85.                 swDoc.CloseDoc '關閉檔案
    ( c" }; w6 Z  r2 c* `
  86.             End If '排除無效檔案<完>0 D9 ^& R( p3 K2 |* \" h
  87.         End If ''過濾器是2或4<完>
    8 o1 Q9 E: c) t( K, o+ d( F
  88.     Next i '逐一讀取所選檔案<完>
    & C% _0 @1 R  y' X1 R0 F
  89. End If '判斷有否點選檔案<完>/ F7 B  `/ n$ @' y( @" R/ W
  90. End Sub- _4 X" G" t+ i; V
复制代码

+ g' O" j# v* ^( i( y3 r
2 d7 X# _% s; U  m1 c6 z
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 )

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