思路是将SW的BOM表导入到EXCEL,然后将EXCEL的数据(零件名+数量)写入到字典,然后通过文件名来匹配到字典里存的数据(数量)写入到零件的数量属性。其中提示请输入数据时需要粘帖数据进来。Myr = 500 '需人工设定。欢迎大家进行补充、使程序更智能。& r! y7 h+ I# I% k- ^
5 J# m! _) @9 M4 t1 D& h
Sub main() L6 d, g6 f& v
'打开EXCEL表格开始
' S+ x+ d# S% D* gDim ExcelSheet As Object/ ~5 n/ J& b( g i! @/ o( z5 f& }
Set ExcelSheet = CreateObject("Excel.Sheet")$ h. ?4 E3 f7 _
ExcelSheet.Application.Visible = True
: L' B; N. K# o* D( B Z'结束' L0 p! N: N, z8 P/ u& F, P
7 C& y0 }# R. s: |'填入数据开始4 H" t' @( e1 }, Y ]
Dim d# D( x- ]3 d3 P, h/ Y
Set d = CreateObject("Scripting.Dictionary")5 [4 M, `/ F; M" ?. @" d
MsgBox "请输入数据"
& Z4 U) Y- O! u2 N& J1 ]'结束
3 U5 I% X/ ]/ f9 U( L+ i
6 W# |( C4 E5 N2 n9 h3 P( {& ~: ^'数据写入字典开始
9 y$ e) ^: h: W: TDim Myr&
! D2 e7 K; d# z# h8 k# `0 hMyr = 500 '需人工设定9 D( C2 f" r, O0 Z3 U" F4 h
For i = 1 To Myr
0 V9 }1 r) d/ Z) R! W( `d(ExcelSheet.Application.Cells(i, 1).Value) = ExcelSheet.Application.Cells(i, 2).Value
6 W0 h0 w) V$ B. k% O: k" oNext
/ O% Z. a- k* u* s3 M" B h1 ?'结束$ u: L6 H$ z8 N) V# G, E0 k, P
, e2 l# E' v# y# F# m1 a'将字典数据逐个写入到零件开始
/ G5 Z/ M0 t5 o1 {1 n& iDim swApp As Object
3 K4 T- L* _4 i7 eDim Part As Object" j5 ?8 `/ ^9 j6 \$ D3 q
Dim longstatus As Long, longwarnings As Long: _" Y- ~* O5 ^; ^0 j
Dim myPath$, myFile$4 z% m4 ^/ X' d8 j- Y, ?( J
3 ~+ K* p6 Q5 M4 e# m9 m" X. Q
Set swApp = _
2 ~; O6 P! ~: n6 x4 [ Y% I4 sApplication.SldWorks4 U2 n) Q3 C2 t9 ^- P& X1 X& k
myPath = "C:\Users\Administrator\Desktop\1\" '..........................重点:把文件路径定义给变量. W. y" m5 n& I# y- a
myFile = Dir(myPath & "*.sldprt") '依次找寻指定路径中的*.文件
; Z @5 g# W& @1 k! H( F* pDo While myFile <> ""
( }, d8 L# J) V( S$ ASet Part = swApp.OpenDoc6(myPath & myFile, 1, 0, "", longstatus, longwarnings)
* G; t2 }: ]* S/ W7 I( L6 f/ ?1 K; c3 m, w9 v% I
'单个零件写入数据开始
6 j" Z# J. o$ \6 C/ {( F: l- m'Dim swApp As Object
. |# {6 W3 }6 D! dDim c As String
4 [; A. H8 K- Z5 T8 bSet swApp = Application.SldWorks
! W/ U- s% |* v! v9 K# pSet Part = swApp.ActiveDoc( g. Z+ I P# p) K0 V, @
c = swApp.ActiveDoc.GetTitle() '零件名2 m* }! \7 k( i! g( ?' J$ {/ J
blnretval = Part.AddCustomInfo3("", "数量", swCustomInfoText, d.Item(c))
4 f! w' m0 z+ p '单个零件写入数据结束, A2 U7 z: r3 ], R0 }, Z
: {4 D4 Y: d& z" B' | f p5 J% _Part.Save5 l' B! W3 S( N! g6 `; C
swApp.CloseDoc myPath & myFile
( ` ]% S5 A. x9 W# e3 T& gmyFile = Dir '找寻下一个*.文件& |' h4 f1 m; D
Loop
; m( V9 d; z W0 O0 c! t'将字典数据逐个写入到零件结束
4 x5 |# W! V: z i4 C: t( x0 KEnd Sub
# M/ A% U9 e9 S* H |