思路是将SW的BOM表导入到EXCEL,然后将EXCEL的数据(零件名+数量)写入到字典,然后通过文件名来匹配到字典里存的数据(数量)写入到零件的数量属性。其中提示请输入数据时需要粘帖数据进来。Myr = 500 '需人工设定。欢迎大家进行补充、使程序更智能。& A5 U; g6 X) T4 F, S
5 e: }% c$ s8 z. h* |# hSub main()
' m; m& j3 W% J'打开EXCEL表格开始! k' D& A7 g& t9 z/ {# S3 P- }. ?
Dim ExcelSheet As Object4 w" |& B" E7 k" ]# F$ L, C+ }$ ]
Set ExcelSheet = CreateObject("Excel.Sheet")
9 w4 N( M! h" P; OExcelSheet.Application.Visible = True
7 u x7 P; D. e% \8 n1 U z- g" h: E'结束
# p' k2 D) L3 e' i
& J# f. z& ~% H# O: J7 K- v% e1 L'填入数据开始
! K. I6 f1 b1 k8 dDim d& e4 B# o x* t3 X& M4 H# j" i( n
Set d = CreateObject("Scripting.Dictionary")$ G- {) K4 W* N4 e: b
MsgBox "请输入数据"
" t2 O4 B% c, T. `7 F6 |$ O; I# W'结束5 P1 F, P C5 L1 Q" O4 ]7 P
f3 t3 R3 I7 o ]4 G t3 L'数据写入字典开始
0 _5 t* W+ v$ h5 P/ A7 F* fDim Myr&/ Z/ j7 f' P) C" ^# t; r% P- J
Myr = 500 '需人工设定- n% A. Z0 V. P9 W5 z$ p
For i = 1 To Myr, y- }6 U5 b) g$ Y
d(ExcelSheet.Application.Cells(i, 1).Value) = ExcelSheet.Application.Cells(i, 2).Value
/ ], Q. p; H* M& b1 L4 y Q; [Next5 p( Y- h, H( i( H
'结束
/ Y6 y) ?3 B) M# A7 h7 {4 d
; H4 `# C, U! J4 e( A- J'将字典数据逐个写入到零件开始
* j! C- v# k- i3 O" ~Dim swApp As Object
$ Q1 y: E6 Y/ l6 q+ vDim Part As Object4 T6 E: P) u1 n; u, c! O
Dim longstatus As Long, longwarnings As Long
( J, _! l" s' k& pDim myPath$, myFile$1 G+ h9 U9 g" D+ Z- t% W, L {
; c E! ]: a; @7 X* T$ T2 ASet swApp = _; i& \4 m. D& N2 R/ l
Application.SldWorks8 I( o" {' T. `( f3 n9 Z1 B
myPath = "C:\Users\Administrator\Desktop\1\" '..........................重点:把文件路径定义给变量& E) ]& E8 @$ P5 l4 ?. I# _( T% o# d
myFile = Dir(myPath & "*.sldprt") '依次找寻指定路径中的*.文件- S! D) \0 N: V/ w$ K" j) m
Do While myFile <> ""
/ w" o- G$ F7 R( R0 }& CSet Part = swApp.OpenDoc6(myPath & myFile, 1, 0, "", longstatus, longwarnings)( a* u7 J; I6 p! d1 U* q# f
) z4 d8 w' t- @( t
'单个零件写入数据开始; V& F% F7 [2 F4 @; F% e
'Dim swApp As Object, r, h4 h$ d8 N. o9 O4 `
Dim c As String: z! G, l3 s* U* U% t" T: B9 F; s
Set swApp = Application.SldWorks& H% G9 A/ L; O' f, Y
Set Part = swApp.ActiveDoc
% w; e* h7 T5 q+ P( n3 Mc = swApp.ActiveDoc.GetTitle() '零件名9 n0 F( x$ Y8 j
blnretval = Part.AddCustomInfo3("", "数量", swCustomInfoText, d.Item(c))
4 e. y/ E% {: c$ w. @2 S9 N '单个零件写入数据结束+ K/ w$ J6 o! _2 g6 `0 B; H# X
9 R, b+ X' [1 d* o* L3 `5 W5 L" i7 c) ]Part.Save
* U5 m- K. N/ c, a9 Z- BswApp.CloseDoc myPath & myFile
9 R) c7 `% ^$ g- P7 o" AmyFile = Dir '找寻下一个*.文件
6 M7 K* {' O9 K C: pLoop3 w' O4 v& y" i- M: B) ~- F
'将字典数据逐个写入到零件结束7 t! X1 n" E6 w& G) D
End Sub7 v$ N$ R# V0 O K8 @
|