思路是將SW的BOM表導入到EXCEL,然后將EXCEL的數據(零件名+數量)寫入到字典,然后通過文件名來匹配到字典里存的數據(數量)寫入到零件的數量屬性。其中提示請輸入數據時需要粘帖數據進來。Myr = 500 '需人工設定。歡迎大家進行補充、使程序更智能。
3 R; s' N! ~3 }, S! A. {2 S* H1 I" N3 }9 Q
Sub main()3 k! X" F) b- l+ ^4 R
'打開EXCEL表格開始1 `( ?% k. N; T5 G5 Q7 E+ C _4 S
Dim ExcelSheet As Object5 |7 F/ d s2 S) B3 W
Set ExcelSheet = CreateObject("Excel.Sheet")
7 x" r* ]0 Y: J6 LExcelSheet.Application.Visible = True$ }6 u8 S) r7 S, J! _7 R$ [: r
'結束
( W" |/ _' @* L# O7 l: v H0 `
$ B0 t* m5 X" Q# J# {'填入數據開始, {# L# ~$ V/ o! S1 r9 J" [
Dim d
) `3 Y+ ^3 c, ~; M6 ^Set d = CreateObject("Scripting.Dictionary")4 \/ H E2 ~- n; C% Z, k
MsgBox "請輸入數據"
! _+ b* Q# f+ \: E- T'結束: Q2 `3 h* K% A2 S
8 t( C! h x7 |! B'數據寫入字典開始
9 X" G2 I7 ~4 U# v9 RDim Myr&2 h; w/ D' I. F. a1 P/ }
Myr = 500 '需人工設定
. T& O3 G* k- T1 f) V5 F+ eFor i = 1 To Myr$ \6 w% d+ n0 {+ ]
d(ExcelSheet.Application.Cells(i, 1).Value) = ExcelSheet.Application.Cells(i, 2).Value
" ?0 _7 u, a. z/ D2 M4 @1 F$ DNext$ l! u0 N8 L/ z1 e( S M
'結束$ j" s, F+ u/ K! l
0 K2 p( i4 U- F' V" o'將字典數據逐個寫入到零件開始5 V0 a& C" \& D% R+ d+ b
Dim swApp As Object9 P; Y) C8 J1 U& t! E4 T
Dim Part As Object
1 Z' \% z4 c- r3 q2 @Dim longstatus As Long, longwarnings As Long
0 }( L" C& @1 i$ ^& R& ODim myPath$, myFile$7 ?$ Z+ d' Q% I% Y! R3 O$ P
5 \. y* k6 Y, C# r' m9 H% ? a5 u1 ?
Set swApp = _* O5 @5 }( ?/ p% p" z. w
Application.SldWorks
: V Q; o% _1 f, [( C7 [5 H5 }0 rmyPath = "C:\Users\Administrator\Desktop\1\" '..........................重點:把文件路徑定義給變量, h5 _% |1 Z( B% B: m' p
myFile = Dir(myPath & "*.sldprt") '依次找尋指定路徑中的*.文件% }2 D, O1 W: _
Do While myFile <> ""
- k/ @! t9 N4 ~% c( hSet Part = swApp.OpenDoc6(myPath & myFile, 1, 0, "", longstatus, longwarnings)
% U8 Z" V; ~8 o& W: A: X8 O: ~
1 h- e, O$ C1 M '單個零件寫入數據開始( \/ Q7 m+ w" K b, u/ J& N7 G% b4 M
'Dim swApp As Object: m2 s8 I9 s! X7 f4 N. c
Dim c As String- ~7 q6 f6 {1 e: Z* |2 T/ ]% g$ s
Set swApp = Application.SldWorks
4 h2 \7 }4 a( Q+ ^1 a( `$ W8 r0 [Set Part = swApp.ActiveDoc
, `" X& |9 m* M9 Kc = swApp.ActiveDoc.GetTitle() '零件名* }. V. z6 h/ A( n) h& D5 U
blnretval = Part.AddCustomInfo3("", "數量", swCustomInfoText, d.Item(c)) O1 ~. H: Z% |4 ` P
'單個零件寫入數據結束
7 a8 W4 X# D6 j# \6 n E
2 P, f3 p) c4 y, S0 q- v L8 hPart.Save4 D/ o+ S% T( W7 ]
swApp.CloseDoc myPath & myFile9 ?7 H. \+ [, Z3 h2 j
myFile = Dir '找尋下一個*.文件
' U# ^" ~% ^+ |5 R3 e# c2 M# ^! ALoop, V1 ?- \) @' @7 h H$ L' X
'將字典數據逐個寫入到零件結束. r5 h' I' B3 ~5 d. j4 C! M0 u
End Sub
0 \+ O$ c/ i2 k |