思路是將SW的BOM表導入到EXCEL,然后將EXCEL的數據(零件名+數量)寫入到字典,然后通過文件名來匹配到字典里存的數據(數量)寫入到零件的數量屬性。其中提示請輸入數據時需要粘帖數據進來。Myr = 500 '需人工設定。歡迎大家進行補充、使程序更智能。
2 k* z. A7 t0 Z( o* U+ s6 p; h# ^, d- ^/ k# V8 O. G! w6 A, E9 l
Sub main()
) ~" u9 V e3 ?* o6 [+ M$ s _'打開EXCEL表格開始
3 b' t. x8 P# @* U' C# dDim ExcelSheet As Object7 K* s- B8 {( |9 z3 d
Set ExcelSheet = CreateObject("Excel.Sheet")2 n' K1 v: M# n2 F8 b' ?
ExcelSheet.Application.Visible = True/ M! y* [+ G3 h- l. u4 r8 K
'結束( {' N O8 c( X! s8 d; U/ L+ d
5 R( R# j5 T3 f1 N; |3 z
'填入數據開始
, H0 X6 H5 G7 i) h# TDim d! |9 H% U- ^! c$ M0 K& n! G
Set d = CreateObject("Scripting.Dictionary")
& J0 k# ^3 ]9 r' g; W( F) |6 Y! uMsgBox "請輸入數據": W; r$ H8 R. G* C; [+ ^
'結束
0 I5 l1 L. b) U) M- w2 \
' u6 d; E5 R8 \. H" a1 K'數據寫入字典開始# ]* x. j+ M7 l! c: S; O: g
Dim Myr&
; V4 t* Y; N9 b" M. ~# gMyr = 500 '需人工設定) ?. w7 O9 l/ e2 ]
For i = 1 To Myr
; I5 {4 _# G; { qd(ExcelSheet.Application.Cells(i, 1).Value) = ExcelSheet.Application.Cells(i, 2).Value" v8 R+ C6 b7 X
Next
, \# C Q9 e9 U3 ]( y# g( K* t'結束
. p& E: @6 S2 Q0 i( ]
( G- l+ M7 J8 L6 }'將字典數據逐個寫入到零件開始: D# I( p# S6 f% l; Q, }
Dim swApp As Object* s+ s5 A8 t$ y' A/ p
Dim Part As Object: B/ @% k) i2 {( a0 a( A" E
Dim longstatus As Long, longwarnings As Long
6 E& G# m5 s! O4 j2 h5 X* Y7 rDim myPath$, myFile$# U) w3 W+ s. C( v% f1 q5 n' T" C
0 {! k6 i' c+ i" Z3 lSet swApp = _- z! E9 G% E. _1 e
Application.SldWorks
- T h) a y) i. \9 q9 F% rmyPath = "C:\Users\Administrator\Desktop\1\" '..........................重點:把文件路徑定義給變量
$ B1 X# S' _9 l5 [4 v% I: v9 p/ t- `myFile = Dir(myPath & "*.sldprt") '依次找尋指定路徑中的*.文件
2 _: f# h$ M. f9 W( ` ZDo While myFile <> ""5 u" T! N- z0 y8 l4 Y* I( s" {
Set Part = swApp.OpenDoc6(myPath & myFile, 1, 0, "", longstatus, longwarnings)0 {% T9 }' e1 L. e* g* s
' c' U7 `1 A& }4 ~
'單個零件寫入數據開始
2 e# F/ x: Y1 W'Dim swApp As Object( K1 g K. Z' j3 p8 s% Q6 P6 s$ P
Dim c As String& e: G% K; L A2 R+ d* s5 ^
Set swApp = Application.SldWorks/ s# T9 k( F9 W6 V9 O
Set Part = swApp.ActiveDoc
3 Y% q) B$ r) r% ^6 _c = swApp.ActiveDoc.GetTitle() '零件名
2 U+ @0 I. o( L% L) Sblnretval = Part.AddCustomInfo3("", "數量", swCustomInfoText, d.Item(c))
+ F9 Z5 n6 {' a0 o- V( j( f '單個零件寫入數據結束5 g9 g" f/ ^2 |1 ]+ x6 }
7 Q+ f0 `" p2 n9 C$ T* I. Q: D% k
Part.Save
6 Z' S# {) w, q* G% M, sswApp.CloseDoc myPath & myFile
' m* F" ^7 [2 V, L5 b" ~3 PmyFile = Dir '找尋下一個*.文件
3 L7 ~9 a1 B2 G& t- b$ wLoop
) k w1 `+ o9 g7 `1 u'將字典數據逐個寫入到零件結束
/ R, W* G4 e/ U. E. t2 bEnd Sub. {8 T' e; q3 f* k$ h
|