思路是將SW的BOM表導入到EXCEL,然后將EXCEL的數據(零件名+數量)寫入到字典,然后通過文件名來匹配到字典里存的數據(數量)寫入到零件的數量屬性。其中提示請輸入數據時需要粘帖數據進來。Myr = 500 '需人工設定。歡迎大家進行補充、使程序更智能。
- D/ C* q& }# ?: q( w% t
! V# p0 t1 H( PSub main()
2 K! S+ x. v( C, f$ u1 u'打開EXCEL表格開始
2 U" |$ s$ ?4 f$ K9 g( N2 ?Dim ExcelSheet As Object! e ?3 t5 ]% G, i5 F- M+ z: f" a
Set ExcelSheet = CreateObject("Excel.Sheet")8 K! }' O3 _3 @4 D$ f! v( C
ExcelSheet.Application.Visible = True
- Q! y% C' V2 F3 f'結束+ z0 U% @4 A% p
* J3 X* z( ^! r" w'填入數據開始4 x8 M; `1 e' Q: Y$ G' G
Dim d. U- t$ r/ G, ~9 }2 r, y
Set d = CreateObject("Scripting.Dictionary")
1 @8 o! T, t9 c4 H6 b, vMsgBox "請輸入數據"
4 P- A7 j! U" ^6 b'結束: L% B/ Y6 P) e6 s+ Z( Y$ U
/ _& e9 ]. ~& f% v2 K) N'數據寫入字典開始
2 K0 D# u6 r7 a6 D0 J! ^3 V$ G8 EDim Myr&
V- x0 b" A; {4 p* S; t3 i0 Z; D9 D8 |) yMyr = 500 '需人工設定3 p j* `! [- F r' R5 c' k Z
For i = 1 To Myr$ ^# I7 y- ?$ ]% X+ P
d(ExcelSheet.Application.Cells(i, 1).Value) = ExcelSheet.Application.Cells(i, 2).Value
. d/ N2 ^- z) H' V2 zNext; V* c+ n4 w3 N8 i4 Q) f
'結束6 I4 @' M4 }1 X: k
! Y$ a% |$ e" l) G, p% ~
'將字典數據逐個寫入到零件開始
. G( x7 W# s9 hDim swApp As Object
, _/ Z# F2 K4 X; w0 e4 eDim Part As Object
8 E4 z8 s+ U, Y. v* Z* k) ^Dim longstatus As Long, longwarnings As Long
8 ~* e7 p, l- ^Dim myPath$, myFile$
! y! _2 q ] t' n* E, Q1 ~% k
8 ~% [4 ?* N6 ^, N3 {8 m. RSet swApp = _
0 a; d, c6 E, q- yApplication.SldWorks
( B U4 T: m- K7 g+ ?myPath = "C:\Users\Administrator\Desktop\1\" '..........................重點:把文件路徑定義給變量
$ A# \6 f2 W% A; D- [- ]myFile = Dir(myPath & "*.sldprt") '依次找尋指定路徑中的*.文件 k. h! a+ q3 q6 e" k+ ]7 ^% Q$ [
Do While myFile <> ""$ s( n' V @9 z- k0 _
Set Part = swApp.OpenDoc6(myPath & myFile, 1, 0, "", longstatus, longwarnings)
8 W z: i0 l' x, i
* G& ^1 C4 Y# Y$ d6 W7 } '單個零件寫入數據開始
* D5 f. [1 e! M1 ]'Dim swApp As Object
, a, V7 N* d: t/ k7 N* yDim c As String
9 k$ z9 v; L) iSet swApp = Application.SldWorks
- G9 _- U# n8 K- [/ |2 O6 J4 nSet Part = swApp.ActiveDoc3 A6 A; K& a6 E
c = swApp.ActiveDoc.GetTitle() '零件名
: s! |+ Q$ G$ @+ u/ Z# j; t; Mblnretval = Part.AddCustomInfo3("", "數量", swCustomInfoText, d.Item(c))
, C+ p1 U" k2 _" ?4 E5 m3 J$ }6 y '單個零件寫入數據結束
, q8 |3 C( u$ Z5 p0 v2 E$ z. O W2 }. H/ S+ d+ {. N* l# y
Part.Save
?" n! p6 Q2 x; I8 {3 Z/ ~6 v: }) aswApp.CloseDoc myPath & myFile" p) j1 I, Q- r7 U7 X, C
myFile = Dir '找尋下一個*.文件' M% `' l1 x7 R' u$ c
Loop
6 c4 i0 `8 \1 X* L8 Y'將字典數據逐個寫入到零件結束
* j# U7 Z- i. g* O- oEnd Sub
- I0 i! n: [ e3 M& ~) D |