思路是将SW的BOM表导入到EXCEL,然后将EXCEL的数据(零件名+数量)写入到字典,然后通过文件名来匹配到字典里存的数据(数量)写入到零件的数量属性。其中提示请输入数据时需要粘帖数据进来。Myr = 500 '需人工设定。欢迎大家进行补充、使程序更智能。
0 V; }- U: `( x: y. ]& e' A2 |! u; x, T. L
Sub main()
/ z8 F7 j/ u) F( t5 o7 W3 n* s# z'打开EXCEL表格开始
9 i& p; L" G/ }, T' @" pDim ExcelSheet As Object
, q9 b! i7 Q' r4 o7 `# v3 \, QSet ExcelSheet = CreateObject("Excel.Sheet")
: f( f+ i# t6 F) mExcelSheet.Application.Visible = True
+ x5 C0 h6 W8 |% s'结束
2 t1 I3 u; n$ Z" F* `" d6 [7 i* F
'填入数据开始
" n! T' @ `$ l; G- r q5 |/ \Dim d( {, N8 @& v# Y0 ?/ g% [
Set d = CreateObject("Scripting.Dictionary")
8 t8 g& W3 H8 c8 R2 sMsgBox "请输入数据"& z U! n2 D: H0 \5 K, T- @
'结束- Y( H2 _# Z9 C# B
( C: R7 Q# e8 Q+ B
'数据写入字典开始# S- E$ M& v. G3 W X s% W( G
Dim Myr&
4 E$ T# f# k% R& EMyr = 500 '需人工设定
5 [0 ~/ {; m3 FFor i = 1 To Myr
3 n$ V4 h9 H7 {d(ExcelSheet.Application.Cells(i, 1).Value) = ExcelSheet.Application.Cells(i, 2).Value0 R0 v _, C4 H, |
Next; j( e* p8 B2 l2 `+ x9 U; b- ^6 Z1 f
'结束
) M- X8 d4 _7 H4 z, D" N6 n
+ j& X; D6 |6 ]+ m% n5 T'将字典数据逐个写入到零件开始
7 Y i% s& Y9 w; aDim swApp As Object0 i# |% k# t1 q, Z$ h9 X3 Y4 A
Dim Part As Object
4 Q }5 q& @* y/ S: t0 j* [# mDim longstatus As Long, longwarnings As Long, Y9 I) A% ]9 {" N! r) l( x
Dim myPath$, myFile$& G; _- D3 C2 ?4 G$ ]
2 M& p" {7 i' i& K6 }2 O+ aSet swApp = _3 V% e! i& o& @1 e# Q
Application.SldWorks
& e- ^9 B. D9 O v9 VmyPath = "C:\Users\Administrator\Desktop\1\" '..........................重点:把文件路径定义给变量0 v* B: u" G. S9 J3 q/ q
myFile = Dir(myPath & "*.sldprt") '依次找寻指定路径中的*.文件
' Q' l8 X m/ E3 R! FDo While myFile <> ""
g# D7 C, c( |9 j6 h4 p7 X9 U; w8 OSet Part = swApp.OpenDoc6(myPath & myFile, 1, 0, "", longstatus, longwarnings)
: y' Y& u# y9 J! G/ W- c" F- Y3 x- h2 [- n( ?
'单个零件写入数据开始
( ^7 Z" _1 m+ C% r: I% A; w2 G'Dim swApp As Object- D2 u0 V+ @# V7 Z5 n
Dim c As String
: T; V7 c, b# ^9 A- j5 Z3 s/ l" ASet swApp = Application.SldWorks7 E! p8 k2 ~3 H
Set Part = swApp.ActiveDoc
6 ^/ Z9 O- X8 ]" p2 f: Q' Dc = swApp.ActiveDoc.GetTitle() '零件名( e/ o8 F- ]; Z1 c6 z$ E
blnretval = Part.AddCustomInfo3("", "数量", swCustomInfoText, d.Item(c))
; g& w& I* ]! i; ]. ?4 e '单个零件写入数据结束1 _$ h" r. [6 ^$ e! Z$ s
5 t' d2 b5 l! T5 r! h) k. t
Part.Save% _) ]" U, z! Z l& L( }
swApp.CloseDoc myPath & myFile. H# `0 U/ N! b( i6 O+ X
myFile = Dir '找寻下一个*.文件
9 A w; L3 Y2 \; V. c' I J1 ~Loop/ I" M, y" s, Z
'将字典数据逐个写入到零件结束
# k! Y3 {8 U$ s/ dEnd Sub
# _5 B) u9 q, v |