思路是將SW的BOM表導入到EXCEL,然后將EXCEL的數據(零件名+數量)寫入到字典,然后通過文件名來匹配到字典里存的數據(數量)寫入到零件的數量屬性。其中提示請輸入數據時需要粘帖數據進來。Myr = 500 '需人工設定。歡迎大家進行補充、使程序更智能。/ W: b0 _8 m& p3 U4 w" H7 J& E
8 s2 P% `6 l2 Z% b. R/ nSub main()( [) O& b! T, N" b t
'打開EXCEL表格開始
6 ~- Q* X$ q" g6 Z3 w& `Dim ExcelSheet As Object
" I" ^ f4 l1 t; c$ H# {Set ExcelSheet = CreateObject("Excel.Sheet")
/ t3 o" Y) w# HExcelSheet.Application.Visible = True9 x4 K9 Q# v7 Q
'結束
" W8 n' G+ R) x1 f: @: |- m8 r& D4 g8 u7 g/ i3 ^
'填入數據開始7 }5 v! _7 q. w3 g9 R, r, ^# Y
Dim d
# `+ ]# }; ?1 S1 g& f" T2 NSet d = CreateObject("Scripting.Dictionary")' g1 |" u) P% L3 p
MsgBox "請輸入數據"$ g: O( G+ f W2 Q/ u* ]4 v
'結束5 Q7 |6 s% v* o5 e8 R. h- g! d
$ F* X0 @$ _! Q% A" y: ^
'數據寫入字典開始! O% i1 t5 O" \# h. b
Dim Myr&
% o" A: u' g: f8 i0 AMyr = 500 '需人工設定* E. \- `% m/ V0 p" D" Y
For i = 1 To Myr
- N2 P9 q# p" P# x a6 rd(ExcelSheet.Application.Cells(i, 1).Value) = ExcelSheet.Application.Cells(i, 2).Value1 ]5 B/ x: V: @; k: d* P7 F7 Q
Next
# c7 n8 O# G/ _& `3 O+ U'結束+ p0 f3 m: e8 G0 P/ f9 J
! s$ z' k! l3 @* Y k
'將字典數據逐個寫入到零件開始
7 Z* I' I& Y! h: EDim swApp As Object
C9 d7 q' V5 i% X( w, cDim Part As Object
" O X6 m* P0 i) R) A5 CDim longstatus As Long, longwarnings As Long3 B/ l# T( F7 L: ^
Dim myPath$, myFile$! k; [& V. ]) R0 q( N9 `
6 X: m8 D3 i( }- n% t
Set swApp = _
4 n' \" W0 X$ F, D4 I* C4 x* CApplication.SldWorks. _8 d. p6 Y& B; P8 e7 a, x$ {3 a
myPath = "C:\Users\Administrator\Desktop\1\" '..........................重點:把文件路徑定義給變量9 ]* g# t" a' Y$ v8 z+ W
myFile = Dir(myPath & "*.sldprt") '依次找尋指定路徑中的*.文件
1 @% J7 b* \3 `0 GDo While myFile <> ""# a% Q9 \) o7 Q8 D" q$ M3 E+ O
Set Part = swApp.OpenDoc6(myPath & myFile, 1, 0, "", longstatus, longwarnings)0 q0 H5 e$ b' l7 z I9 M1 O
% S, M( X9 L5 O, f
'單個零件寫入數據開始( Q- C1 K! T2 _4 c+ U. \
'Dim swApp As Object/ a& W3 j+ J* [5 T! L' R& h5 n! {
Dim c As String/ g$ d. n) f/ v. G2 ?
Set swApp = Application.SldWorks
) ]- z6 ^5 n. u. USet Part = swApp.ActiveDoc
& M. n# l6 e6 \4 D2 K) E' ^c = swApp.ActiveDoc.GetTitle() '零件名' [0 W3 y: d$ {3 e/ J
blnretval = Part.AddCustomInfo3("", "數量", swCustomInfoText, d.Item(c))
* I( g+ \) ?5 \ '單個零件寫入數據結束6 ]) e+ J' U/ y- D$ V& T6 \/ ~2 |
% w& m* w/ c' P5 s- APart.Save
5 I/ r! L1 d) o! l: ~+ @0 GswApp.CloseDoc myPath & myFile3 D) Q7 ]* S2 O5 l. d
myFile = Dir '找尋下一個*.文件
1 j8 U! C- O$ Z' r2 `4 }6 s eLoop
4 t$ T' f/ R- { z4 X- ] G7 @'將字典數據逐個寫入到零件結束
" e8 L+ |, k* C _, r U5 g( @End Sub
+ d( e, ^$ F9 s$ E' A/ O9 v |