QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 xiaoxifeng 于 2017-3-30 15:19 编辑 / e) |2 K! i) E6 [

/ Q. ~+ M5 P1 e现在的问题是 :在下面的代码的空白处加什么代码。可以达到图片的效果。就是在打开装配体的时候,自动遍历装配下的零件和数量 并自动缩进
4 Y" @1 g# i6 z; q5 X% W5 G: h& i$ u; Z+ ~$ L! t
, H3 s, S- }3 V) j6 q2 v

- a, h# f0 N1 G" j5 @

, {: |+ v! x, q4 a
  1. Dim swDM As SwDMApplication8 D7 O4 o- U. T
  2. Dim swDoc As SwDMDocument12
    $ m: ]  {- T0 \& W5 ^$ M. h) W7 ?
  3. Dim mOpenErrors As SwDmDocumentOpenError
    ! d4 G! l, ~5 K6 @
  4. Dim swCfgMgr As SwDMConfigurationMgr
    ' X8 J' [2 P. X; I2 A8 F
  5. Dim objClassfac As SwDMClassFactory
    & g4 a- w, p8 e( T' v$ }
  6. Dim vCustPropNameArr As Variant! G2 `% h; y" {- t, D& C$ r
  7. Const SWDMLicenseKey = ""- W5 M2 [7 X) |
  8. 8 L( {3 V: L8 h
  9. % A/ \, M/ {3 o* Y# V
  10. Sub 打开文件()
    & ~5 G$ l0 i, T) W! R( D& f6 P* _
  11. Range("A3").Activate
      {* e% Z" o+ d5 {% F, h; }
  12. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
    9 ~4 O' ^, o$ D4 `
  13. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM: b$ {. I) [& h5 t, d  \
  14. Dim vCfgNameArr As Object
    ! m/ |1 Y& v. M) p' P
  15. Dim vCfgName As Object
    5 O2 L! h  w' |' @
  16. Dim swCfg As SwDMConfiguration '14+ `  k+ @& {! ~6 j1 F! ~, R; I
  17. Dim nPropType As Long
    9 b  z' ^  a$ z: u% a
  18. Dim PropList() As String
    & {) p: ?4 u9 |( ~+ w
  19. ReDim PropList(0)
    4 G- r& V/ [) ?$ E# c) Y; F
  20. PropList(0) = ""
      d5 V+ }/ c6 S3 m
  21. Dim intChoice As Integer! e, M" C! H1 v0 {2 a7 b
  22. Dim FilePathName As String  x" k9 _/ P2 c2 a) i
  23. Dim i As Integer( `" x( L, S1 R3 X- Y3 _: O
  24. HeaderRow = 24 v& g7 O0 l2 }; e- I& `6 M" a0 ?0 B
  25. RowNumber = 3
    ; t2 n6 P5 M1 x0 W
  26. PathName = Cells(RowNumber, 1) '讀取第一個路徑的值4 {, D& ]5 t: E" i. V
  27. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄(尋找繼續填寫的位置)
    - X9 R8 e" h  `! O
  28.     RowNumber = RowNumber + 1 '下一列& ^+ S0 }( u; }* ~8 @9 D
  29.     PathName = Cells(RowNumber, 1)& J; @& u& Z3 ]
  30. Wend '回到>直到讀完路徑欄: o9 M# s" o; Y6 ^, i
  31. Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = True '設定為多選對話框7 N$ p4 w9 O2 X$ |( a
  32. Application.FileDialog(msoFileDialogFilePicker).Filters.Clear '清除既有類型  Z) b* c0 w" L* E' B
  33. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件自定义属性", "*.SLDPRT" '設定檔案類型9 f$ s! H  ~: m8 [; F  C
  34. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "零件配置属性", "*.SLDPRT" '設定檔案類型
    1 k, G$ ]& d' ^# L2 S
  35. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体自定义属性", "*.SLDASM" '設定檔案類型
    " ~5 t: N% t  m$ O$ A
  36. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "装配体配置属性", "*.SLDASM" '設定檔案類型; |- A+ C7 W/ M$ `/ [+ S$ U
  37. Application.FileDialog(msoFileDialogFilePicker).Filters.Add "工程图属性", "*.SLDDRW" '設定檔案類型
    5 o$ u" G. E" D
  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
    . w# @9 P/ W' i5 q, D
  39.     Application.FileDialog(msoFileDialogFilePicker).FilterIndex = Cells(1, 1)7 a% g: V' R% O) J8 e6 R* u8 {/ n6 W
  40. End If
    3 ]! A+ z" W" h8 Q
  41. If Cells(1, 2) <> "" Then Application.FileDialog(msoFileDialogFilePicker).InitialFileName = Cells(1, 2)
    - f  F! N. V3 l9 y" R
  42. intChoice = Application.FileDialog(msoFileDialogFilePicker).Show '彈出對話框0 ], C/ n# r4 Q& ?
  43. 3 l2 l+ u/ z, l) q
  44. If intChoice <> 0 Then '判斷有否點選檔案
    0 h+ P! `' |& H9 {/ M: H  Y( ^6 E; O$ ]4 t
  45.     RowCount = 1
    6 e! C* G$ q6 B2 u. B& u2 `4 @* b
  46.     swFilterIndex = Application.FileDialog(msoFileDialogFilePicker).FilterIndex
    0 \: c+ ~* L2 D' j
  47.     For i = 1 To Application.FileDialog(msoFileDialogFilePicker).SelectedItems.Count '逐一讀取所選檔案# X& m  P" {' @. |) `- s0 ~4 h
  48.         FilePathName = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(i) '讀取完整檔案名稱
    # y% y) V) n! q& K8 q  I
  49.         FilePath = Left(FilePathName, InStrRev(FilePathName, "")) '分解路徑; {( ?, s5 u) M3 u) q! e9 u; j
  50.         FileName = Right(FilePathName, Len(FilePathName) - Len(FilePath)) '分解檔案名稱0 S  B# [( k- z4 _9 v# e/ I
  51.         FileExtname = UCase(Right(FilePathName, 6)) '分解檔案類型/ A9 M5 ^- C9 T9 Y. [, M
  52.         If swFilterIndex = 1 Or swFilterIndex = 3 Or swFilterIndex = 5 Then
    2 x1 W; k0 p) U' }/ H) f
  53.             Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑
    8 R/ |! b2 U  I; v
  54.             Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱
    9 C4 B, }5 M: L' u2 c& g: `
  55.             RowCount = RowCount + 1
    & r" A" t; I4 D% G3 I7 C
  56.         End If
    1 o2 Z& d: v. w1 U5 }& H
  57.         If swFilterIndex = 2 Or swFilterIndex = 4 Then '過濾器是2或47 S8 f' _, g- p( \# v' a, s
  58.             Set swDoc = swDM.GetDocument(PathName & FileName, swFileTYpe, False, mOpenErrors) '開啟檔案; a1 a/ Z( {- ?) n: e8 ]- C& L
  59.             If Not swDoc Is Nothing Then '排除無效檔案
    7 W+ w; j1 X6 p- F  ~- p5 s
  60.                 Set swCfgMgr = swDoc.ConfigurationManager
    , r6 C" ]! ~" A3 W/ H8 L- e1 `3 y
  61.                 swConfigNames = swCfgMgr.GetConfigurationNames
    0 a: W; n; E; W9 D: }
  62.                 1 {0 n5 J+ C$ r8 j- B5 ]
  63.                 For Each swConfigName In swConfigNames9 ~6 ]& t+ v; n* Z
  64.                     Set swCfg = swCfgMgr.GetConfigurationByName(swConfigName)
    + V) x4 _7 U+ h3 c+ ~+ \( I8 Q
  65.                     vCustPropNameArr = swCfg.GetCustomPropertyNames) i5 e  m9 M8 ~
  66.                     If TypeName(vCustPropNameArr) = "String()" Then5 I% i+ O) ]% W' r

  67. + T0 P! C- U- C

  68. 6 n. k; x* F- r) l- u' J4 K

  69. , o7 ~: a9 Y" M9 m  b) M
  70. 7 B3 |" d: @) A/ j
  71. 7 F8 @* j5 [( b0 ?$ q' z# s

  72. $ l) U  S5 ^6 {  K) g6 a2 N+ ?8 _( w( S

  73. 1 S+ ]- U- k7 ]( ^0 d& y
  74. ! Y* w1 b. n  c9 {: M% ]% @2 h
  75. . ~0 {2 c6 G  O
  76. 2 T1 y! r6 g2 \% e2 A* F
  77.                     End If4 O4 Y/ B7 r; f# U* l. d  L
  78.                     Cells(RowCount + RowNumber - 1, 1) = FilePath '填寫路徑6 j5 c- }5 U" R/ s6 [1 u1 [
  79.                     Cells(RowCount + RowNumber - 1, 2) = FileName '填寫檔案名稱% W# d% k! \7 G2 j( o" Z- Q  F7 `
  80.                     Cells(RowCount + RowNumber - 1, 3) = swConfigName '填寫模型組態名稱3 S  i+ L% a! d, r7 b* q+ G: @
  81.                     Cells(RowCount + RowNumber - 1, 3).Interior.Color = RGB(200, 200, 200)1 b+ |  B& ~- G: ?' s$ r& X6 _" Z5 I! R

  82. % R7 @" J- d4 h# \- B! Y. U4 i
  83.                     RowCount = RowCount + 1
    / v2 S7 D- T  u4 d9 g/ T, }4 _2 P+ B
  84.                 Next
    % L7 d* n* [) k, y
  85.                 swDoc.CloseDoc '關閉檔案' J( M, d8 F) o, K
  86.             End If '排除無效檔案<完>$ U; b/ K2 n+ c
  87.         End If ''過濾器是2或4<完>
    % ]$ |4 K* P  G) u$ n
  88.     Next i '逐一讀取所選檔案<完>
    9 p6 `) r" k2 }: t2 s$ x* u2 h! k
  89. End If '判斷有否點選檔案<完>
    ' W( ]) f; ?% x: [- a3 G8 J
  90. End Sub# ~5 S/ M9 r% U1 J' P! ?
复制代码

) G; t* l+ T7 K  ^! G' T9 q. |5 _) L$ ~% N* p5 W; C8 W  K  g
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 )

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