思路是将SW的BOM表导入到EXCEL,然后将EXCEL的数据(零件名+数量)写入到字典,然后通过文件名来匹配到字典里存的数据(数量)写入到零件的数量属性。其中提示请输入数据时需要粘帖数据进来。Myr = 500 '需人工设定。欢迎大家进行补充、使程序更智能。0 V! {/ t8 N2 y8 m, @; t' K4 _
U$ t2 e3 i: N* {& o' J n E
Sub main()
p2 r( m9 S% H) R& L! V0 ?'打开EXCEL表格开始) U$ z% F( t( S4 V
Dim ExcelSheet As Object6 i' L% N. H/ C$ Z
Set ExcelSheet = CreateObject("Excel.Sheet")% b! G1 o' b1 g1 J9 `. U$ H
ExcelSheet.Application.Visible = True4 q4 U5 S6 ] B; g$ W3 {
'结束3 w3 G! e: q0 D' ?+ _% |& ~
7 g5 h6 C0 B, t
'填入数据开始
# Z( Q8 n$ Y8 C( m/ e' [Dim d4 M8 e* N- D6 Z3 {
Set d = CreateObject("Scripting.Dictionary") s6 ]$ [2 g( _4 O5 i, Y1 a
MsgBox "请输入数据"( m' v9 I) Q2 ]/ ^1 k+ X3 G
'结束
3 @, t3 t2 G$ Z7 ]+ ~8 L( P* q6 r4 |0 c8 S( K7 \2 l& N* H
'数据写入字典开始
( h- T' Z) {' Z" X' ~: h) aDim Myr&; [( `5 v5 k5 X4 |
Myr = 500 '需人工设定
8 I3 j p1 G1 \5 |/ O! A, JFor i = 1 To Myr
s6 _1 s) p& S) wd(ExcelSheet.Application.Cells(i, 1).Value) = ExcelSheet.Application.Cells(i, 2).Value6 ]& j+ ]( p9 Y7 c) q$ Y1 N) D
Next8 O! `9 i1 K" W! g( Y- V! H4 d( m+ E9 O
'结束- B2 P$ E1 p1 R2 d; @" r' I' s
4 B/ |" e! Y) K, l& K
'将字典数据逐个写入到零件开始
% e2 W4 Z. G m4 s3 X/ ~0 s1 _Dim swApp As Object* y- a. A6 w& D
Dim Part As Object
+ H" W! b! K. U( `Dim longstatus As Long, longwarnings As Long
& e: F; G- j; D1 w w TDim myPath$, myFile$
9 R. K# N5 h! l9 s+ b z* ~ N% j5 }( M
Set swApp = _7 K! C x$ k0 x. t4 C3 G
Application.SldWorks7 g0 ^; v) p) K
myPath = "C:\Users\Administrator\Desktop\1\" '..........................重点:把文件路径定义给变量 D: L# E; G. Q0 ]) A* Y
myFile = Dir(myPath & "*.sldprt") '依次找寻指定路径中的*.文件" j, t M* T/ v! M S1 n7 y9 U
Do While myFile <> ""( Z# A0 t2 R* m6 ]" a
Set Part = swApp.OpenDoc6(myPath & myFile, 1, 0, "", longstatus, longwarnings)
; ^+ |" f# v2 V, Y, R- O& M$ W9 Q
b- R: h$ j: Y9 X# [4 @" l '单个零件写入数据开始9 H8 b0 y6 x. F. R4 u
'Dim swApp As Object
, s# k: ~7 p1 x2 x) W) [Dim c As String4 Q3 [7 T8 s+ d! e& j3 g+ j
Set swApp = Application.SldWorks, P' O* ]" Y/ \' b5 Z7 B; |
Set Part = swApp.ActiveDoc$ G* ~# o4 [+ v$ K1 f
c = swApp.ActiveDoc.GetTitle() '零件名
( Q8 h" }: Q% n+ eblnretval = Part.AddCustomInfo3("", "数量", swCustomInfoText, d.Item(c))
1 K. \5 a3 M; S( e! | '单个零件写入数据结束. ~! i) |- {1 n& ]
$ A: \; w+ Y1 w$ t2 {: V9 e7 J
Part.Save4 G0 l: {+ q- P s ^* c, z
swApp.CloseDoc myPath & myFile
# }4 E0 T$ S' q# GmyFile = Dir '找寻下一个*.文件
& p( h; [5 i4 f' z2 qLoop( }( `: U' K+ G9 n
'将字典数据逐个写入到零件结束
6 g' L7 g; Y& R. [End Sub
: k5 v6 `+ l+ ?$ G |