思路是将SW的BOM表导入到EXCEL,然后将EXCEL的数据(零件名+数量)写入到字典,然后通过文件名来匹配到字典里存的数据(数量)写入到零件的数量属性。其中提示请输入数据时需要粘帖数据进来。Myr = 500 '需人工设定。欢迎大家进行补充、使程序更智能。# M) @! ~6 @. X) b
* I( P* ]6 w( P
Sub main()
/ q2 O/ y/ r( G7 ?& i8 U, g% \, m'打开EXCEL表格开始
5 s' n8 F5 V# b0 i" dDim ExcelSheet As Object
) t5 ~* w6 k, p1 i2 p; ?/ {Set ExcelSheet = CreateObject("Excel.Sheet")2 @7 Y" `$ X+ C+ j
ExcelSheet.Application.Visible = True
& N6 T; g* q. l5 V. g'结束
h. g2 ~1 {4 J9 x0 f) l) u8 J- A& \$ G( c. c. j
'填入数据开始9 Y G; e4 C$ F( u. Y4 y
Dim d
) S+ `. Q- F1 u- H3 ]Set d = CreateObject("Scripting.Dictionary")& g; k9 R+ b2 k9 q
MsgBox "请输入数据"
3 u* \8 X, i4 }! K1 q; y( s'结束
( r6 y, }, m: D! j, U' A
7 U4 Y! l* Y: ]" L* \$ W'数据写入字典开始
9 L S$ y7 A) o {Dim Myr&
9 r) e) @; T. Q3 X4 HMyr = 500 '需人工设定9 r2 @: m9 ` ^: t" {. @1 j- E% O
For i = 1 To Myr
3 N( c7 @( j/ }0 C, f* Yd(ExcelSheet.Application.Cells(i, 1).Value) = ExcelSheet.Application.Cells(i, 2).Value/ t9 i# g- r! H$ U+ Q: Y* _. g1 R
Next* s! Y; ]% o# q
'结束
+ g! i) B: m4 B; K; N: p5 `& x3 s9 M% s; @% L" g
'将字典数据逐个写入到零件开始
8 D) R# ?+ a, G, m8 H1 A, `Dim swApp As Object
7 g7 f t% J2 j. y4 QDim Part As Object
: ~; c _; I7 S+ r# ]Dim longstatus As Long, longwarnings As Long! P: T @+ P+ k7 T; I. Q
Dim myPath$, myFile$
/ k$ c- H0 p# u" t) H8 t7 Y) Y( }9 Y5 g
Set swApp = _
9 Z" Q7 E$ m6 h8 P! W) A( EApplication.SldWorks
$ U. m0 x6 g, H+ `myPath = "C:\Users\Administrator\Desktop\1\" '..........................重点:把文件路径定义给变量0 S9 {' ?: \5 f1 x1 ]
myFile = Dir(myPath & "*.sldprt") '依次找寻指定路径中的*.文件
% Y& H) t) w- F/ i" Q* v3 ^" YDo While myFile <> ""
; f# l" Q3 z8 u8 d$ k* {/ ?; hSet Part = swApp.OpenDoc6(myPath & myFile, 1, 0, "", longstatus, longwarnings)
4 R# p9 c8 {" x" l9 ]; a
; y1 B0 ?0 u, w' [5 M, Q6 o '单个零件写入数据开始! Z" K" D4 [+ U! o- y5 ?7 G
'Dim swApp As Object+ ^5 D/ I8 V' J' S4 X! A! @0 a
Dim c As String9 O+ K, G" D1 {
Set swApp = Application.SldWorks# i& ?' e! f+ T7 O
Set Part = swApp.ActiveDoc6 \/ g% g6 l; ?1 K) c# e4 m
c = swApp.ActiveDoc.GetTitle() '零件名" [" R: x, H) K
blnretval = Part.AddCustomInfo3("", "数量", swCustomInfoText, d.Item(c))
1 r7 I {9 Y `' `2 n '单个零件写入数据结束
7 E$ n5 t+ W8 j ^/ }
/ t" ]! N8 E* I% ]Part.Save" a5 \8 J' T+ P: ]9 O& B# P1 L8 l
swApp.CloseDoc myPath & myFile% y: d! T/ ^* J# C! _
myFile = Dir '找寻下一个*.文件/ |, d9 R5 S L$ F) z2 \
Loop8 I8 k5 U! e3 N R% T# ^: R: {
'将字典数据逐个写入到零件结束
1 b* ]) x3 h1 W. g( q& @End Sub( s( b- w) O' q: L0 G2 a
|