|
网上找了一个! R9 q3 H. F) u) l
Dim fn As String
# ]; C3 h; h8 o' M5 p9 o, D+ a0 X
Sub Main" n' f: @/ S+ v* f! h
fn = ActiveDocument
2 X. z& H! K6 S If fn = "" Then
! X, O5 b* Q3 @( g+ f9 R fn = "Untitled"
# R1 ] b S7 C+ O; `# n End If( Y# Y% T& j9 J( v7 x
! t4 f) H. ]6 T" C( Z" @# N
tempFile = DefaultFilePath & "\temp.txt"" @$ m" `2 f* K
Open tempFile For Output As #1
^6 O; Q# d/ n item = 0& X& @8 }( h U
StatusBarText = "Generating report..."
/ f1 W1 x* d" s( y/ Q& z' W Print #1, "ITEM";vbTab;"Part Type"; vbTab;"P/N_1"; vbTab;"Manufacturer_1_P/N"; vbTab;"Description"; vbTab;"Manufacturer_1"; vbTab; "Value"; vbTab; "QTY"; vbTab; "REF-DES"% N* Q5 N/ F. S' p, G
For Each pkg in ActiveDocument.PartTypes8 a$ M4 f4 ~4 {2 L+ B- N
'Print #1, pkg.Name; vbTab; note: L* W6 T/ j* H6 P
qty = 09 {. G2 E: w1 J1 M$ C' Z4 n
value = "". M4 x- j7 Q# i
description = ""
% @4 P7 y+ A+ G" C2 E; z, C8 w manufacturer = ""/ `* r9 ?: T1 O5 K, c8 Z$ O
pn = "", ]( D/ ~. `3 f
manufacturerpn = ""
3 N) L9 a& O1 v! @4 ^ symbol = ""
! y0 C) @0 e* s: r1 D item = item + 1
: U/ ?% N: o# H; G- _: e 'Print #1, item; vbTab;# Y$ f2 ]4 v, l" v( {
For Each part In pkg.Components
8 y, p% a Q& t$ Z) v- h, X0 L value = AttrValue(part, "Value")1 u3 L N* f' `& B: E
description = AttrValue(part, "Description")
5 V7 m! E2 m# W ` manufacturer = AttrValue(part, "Manufacturer_1")
' l$ c. y2 I$ [9 L: { pn = AttrValue(part, "P/N_1") O3 Y/ S" |" N. j1 Q
value = AttrValue(part, "Value") ) l$ [6 X+ u$ w; ^
manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")( o" a9 V8 N2 o& b6 M6 E
sysid = AttrValue(part, "SYSID")
' a+ f5 x9 Q/ ~+ p! G+ R! \$ j qty = qty+1
& q6 g8 ~9 S( e# R3 G/ S) X symbol = symbol + part.Name + ", "
2 A) o3 `9 o( u" U! A8 X) B Next
; y5 u- I6 F$ ]1 B* \3 i( { symbol_len = Len(symbol)
8 C# E6 Q) b ]) f symbol = Mid(symbol,1, symbol_len - 2)
) p# m; Q6 V/ `( s Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;; W0 w2 q4 n4 Q! I
Print #1- M5 D' v. z/ t& p% I
Next pkg
6 u2 {& q" r3 n4 V$ @( G$ l StatusBarText = ""+ U7 l" i2 w, ~8 I
Close #1
( Y3 P- L4 r' r3 s) J R0 O ExportToExcel
9 l7 _0 d& a0 D. EEnd Sub1 v* `: Q: m% ` b% d
) J3 M" `, I6 g* Z
Sub ExportToExcel
6 U0 Y7 n. c9 j) C5 L FillClipboard, k+ N' o5 V. i% r! b
Dim xl As Object5 q: o. |* f: e
On Error Resume Next6 N6 S. D5 p5 ?% s
Set xl = GetObject(,"Excel.Application")4 P" \4 b% [- L8 _( j# O5 [, D4 w* v
On Error GoTo ExcelError ' Enable error trapping.' m# ]" o7 x( T& m. |! }
If xl Is Nothing Then( ]9 |- ?# b% A, M0 ^
Set xl = CreateObject("Excel.Application")
" K5 T, v! ^' V) t End If/ c9 `' n: H3 O2 H! V6 y
xl.Visible = True
# J6 J* [+ s% L3 g9 m xl.Workbooks.Add
% T& S6 ~$ J* Z" W" a7 ^9 O xl.ActiveSheet.Paste, `! k4 I2 Q. I- n. {" d; W
xl.Range("A1:I1").Font.Bold = True2 k: {& z3 K# r u. ~; D
xl.Range("A1:I1").NumberFormat = "@"1 ?0 N0 P, d# n
xl.Range("A1:I1").AutoFilter
2 U, l7 z1 G% x/ L0 \2 ^$ t5 o xl.ActiveSheet.UsedRange.Columns.AutoFit# P# ~4 Q8 c; d+ o K$ Z) V
'Output Report Header
0 K- W5 I) v0 [6 h# Y7 ? xl.Rows(1).Insert
/ n) m; F) k4 o, P. ~% T xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now( f1 B* _$ d1 Y& u. m
xl.Rows(2).Insert9 W* L! t& |$ a. ]( X4 ^4 y5 k& M
xl.Rows(1).Font.bold = True& E1 a% p6 n; {0 |$ F
'Output Design Totals, T8 r' o$ @. Z' G
lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1# ]: o( U; `! ~, I; W6 o# I
xl.Rows(lastRow + 1).Font.bold = True
1 }: `. j: `* f l xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count
$ a9 A4 w$ E& v1 u( S/ q xl.Range("A1").Select' K! m# ]/ X/ `5 _% x
On Error GoTo 0 ' Disable error trapping.
- i( t) z8 P, W. O) V Exit Sub ' e% J/ n- t0 P( \7 u
. _9 l* F5 T8 k1 i9 T
ExcelError:, i1 D+ B4 X7 u# M
MsgBox Err.Description, vbExclamation, "Error Running Excel"
: B- f' E* \3 Q: P On Error GoTo 0 ' Disable error trapping. 6 R( `7 h3 M9 V7 l
Exit Sub4 u- p0 J$ J5 G# g, D6 `# b
End Sub
# E- X0 n" {* V3 Z
) }& ~, J5 ^( {% o0 p+ ]5 `Sub FillClipboard
& _* c# a, v' ^! x! G StatusBarText = "Export Data To Clipboard..."7 Q6 j4 _, h% Q2 ]
' Load whole file to string variable
0 M. B9 a! D/ w6 C! \ tempFile = DefaultFilePath & "\temp.txt"5 P) K2 n( i& z3 G8 ^+ ~
Open tempFile For Input As #1
$ {# t3 g( e7 n) k# |2 e L = LOF(1)
1 S- W3 f- i- c% J' G3 S! X AllData$ = Input$(L,1)6 E2 z: X* |* G; z* U
Close #17 B3 F) ^ r2 B& r
'Copy whole data to clipboard
5 b8 q6 _! z6 I1 w# Q Clipboard AllData$
7 V& t& O y. x+ e( h Kill tempFile2 H, t- Q# o# g4 @& O% W
StatusBarText = ""! m" v" F7 t. c3 x4 L
End Sub
/ W, O7 h9 v3 m' D; W4 \Function AttrValue (comp As Object, atrName As String) As String0 p; L+ h! T6 h8 f
If comp.Attributes(atrName) Is Nothing Then/ z T; Z" u( ^2 J. G% ^6 P& g9 ?
AttrValue = ""
1 j. f7 R% F& c+ ~+ \ Else# y+ L5 i" p0 H# g6 O. W" u
AttrValue = comp.Attributes(atrName).Value
$ ?) {; @1 O$ ]1 F End If% F6 m8 a1 b# A% v4 s3 S6 ^
End Function |
|