QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 1900|回复: 4
收起左侧

[已解决] 请教一个很弱的问题!关于VBA的

[复制链接]
发表于 2009-10-20 14:22:45 | 显示全部楼层 |阅读模式 来自: 中国湖北十堰

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
问题1.为什么在百度搜出来的VBA 都是用OFFICE的Excel 里的宏打开》??" j4 p5 `8 j( S+ t% e
          我去试过了   大不开
( ^" g3 h" c5 b- [% P# X4 y+ {- i          然后用AUTOCAD里的宏可以打开       不过需要密码" V8 }; C! Q& d% ^
问题2.怎么样可以CrackVBA的密码?有没有什么工具?(我现在要打开的VBA是我们公司一台数控冲床的CAD转换出NC程序的一个插件,不过里面设计有点不合理    我想修改它)8 t! l9 v* v# N: W- @9 W
请哪位高手帮帮忙
发表于 2009-10-20 15:54:16 | 显示全部楼层 来自: 中国
一、很多大型工具软件都有VBA,比如WORD、EXCEL、AutoCAD。VBA的全称是Visual Basic for Applications,这是微软开发的面向应用程序的VB编程开发环境,通俗点说就是VB框架搭配上应用程序内核。所以EXCEL的VBA和AutoCAD的VBA是不一样的。
% C! @+ ~6 v- z' S- B; h1 r二、VBA密码Crack,下载附件并按说明操作。
7 v" |" M3 C  p/ c3 j3 p2 G9 I VBA.rar (1.19 MB, 下载次数: 13)

评分

参与人数 1三维币 +8 收起 理由
wang2003 + 8 好资料,感谢您对论坛的支持!

查看全部评分

发表于 2009-10-20 16:46:56 | 显示全部楼层 来自: 中国河北石家庄
老师真是高手,几乎没有不懂的问题。
 楼主| 发表于 2009-10-22 12:43:34 | 显示全部楼层 来自: 中国湖北十堰
谢谢版主!~   懂了
: T- j5 h! Z6 F% ^1 ]3 T) C+ f附件我下了   希望可以解密码
& N3 C# G: v0 Y) Y中午就不试了
2 x. g8 g( s4 Q5 e+ l晚上回来在试试. l1 e: X) F5 W1 e4 G& a* J
谢谢版主!~厉害
 楼主| 发表于 2009-10-22 12:55:03 | 显示全部楼层 来自: 中国湖北十堰
本来想晚上回来在试试的
2 D' d" ], c, r( F但是现在不试睡不着 1 t- V5 k- I6 B$ J2 L. d
嘿嘿' w; |3 \* {7 d/ _  Q  p

; e2 v/ O' g4 r6 q4 W5 b试了试
) r* ]) B( Z% t! `* F谢谢版主   打开了那个文件$ \' P9 R$ V! V7 T  ]* O& f
下面是代码5 o* a  B* c7 S% u: c* F
'Declare Function GS_MHDog Lib "win32dll.dll" (DogData As MH_DLL_PARA) As Long
, g- e2 `/ U( V4 f) B$ i/ {'Declare Function InstDrv Lib "RCMicroDogSetup.dll" Alias "InstDriver" (ByVal a As Integer) As Integer' M7 l/ o4 N3 R# L, ~
'Declare Function UninstDrv Lib "RCMicroDogSetup.dll" Alias "UninstallDriver" (ByVal a As Integer) As Integer
+ [" C; a: W+ L; c  R% U7 c' F% m'Declare Function GetDogDriverInfo Lib "RCMicroDogSetup.dll" () As Long9 H  _; @/ P& i
'Declare Sub DriverDialog Lib "RCMicroDogSetup.dll" ()
4 X3 D! Q9 I2 U2 H) L5 M9 H'Declare Function NotifyPullOutAndPlugInUsbDog Lib "RCMicroDogSetup.dll" (ByVal a As Integer) As Integer' f1 t7 F+ T/ C  B$ u
% l1 ]# i# ?+ O+ `
'Declare Function yy Lib "jmcar.dll" () As Long
+ O, ?" r; v  {  u, H, @'Public xxx As New CAMZDSHXJ5 W- u9 s; q( A+ M- {
Const SYNCHRONIZE = &H100000
( x! P1 k& D4 [: uConst INFINITE = &HFFFFFFFF
& ~- Y6 b- ]& @* ?! L8 JPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
! E$ d% L" F( b/ }6 [8 dPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long( v$ L' W' S6 o) Q2 P; P$ H
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
3 {; z# I5 e/ Y$ W: EPrivate Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long8 q3 j$ v$ `2 x$ g& }

$ h. x8 e; M0 b. E2 FPublic Function getmac() As String
+ _8 S+ t' b) T  Y( L7 m Dim retval) z. W9 w8 |" E  o
Dim pId As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数$ w3 }( q1 P% N
Dim MYSTR, lstr As String
- \) y- \9 e2 j2 g If Dir("D:\cnc\hxj1.txt") = "" Then
/ F  f" @: L0 ]8 y, W: O* d  Else
) ~8 \% G. B4 @$ J" A% |1 d    Kill "d:\cnc\hxj1.txt "+ o0 K" k' p( f- {
  End If
+ S0 R: ]/ I: }) s  pId = Shell("cmd /C ipconfig /all > D:\CNC\hxj1.txt ", 0) ' Shell 传回 Process Id
3 ]- i& C9 n- d4 [! e  pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle
- }  e7 K( L8 J! |- I0 ?6 Q  If pHnd <> 0 Then
. P$ h. w  ^8 |- a    Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束, Z# y" z4 u  \! u4 J
    Call CloseHandle(pHnd)
( ~8 y& b3 }; N& T1 j9 j* K8 X$ g4 p  End If- c5 Q  @+ _9 J
  Close
4 s- u' N& s7 z+ @  Open "d:\cnc\hxj1.txt " For Input As #3
- i% T% _$ Z9 H, B$ f: @2 I  Do While Not EOF(3)
7 q) N* B/ A* J& }# O' A8 L& v    Line Input #3, lstr- l2 }+ E! C7 i( y& X) y# t5 [
    If InStr(lstr, "Physical Address") > 1 Then
+ p% k( h) f7 o+ Y/ ]2 X. c      MYSTR = Split(lstr, ":", 2, 1); K9 I* N7 D; b) i; z% w( m
      getmac = MYSTR(1)0 ]7 _9 D( ^6 X3 u& q& A$ A
      Exit Do: U# E' K7 ]& r9 ~* U) r) l/ c
    End If
6 r( }$ h5 P2 l  V2 Y   Loop+ A& F: X! n4 b. C  ^1 e3 L' m; T4 ?
  Close2 a5 C6 T- d5 [' R) z
End Function
6 m  d- |4 D+ h* t Public Sub DelDoubleALL()  '删除重复图素
, C6 r$ }. \7 ^3 N0 | Dim i, j, k As Integer9 T% G; Y. X, l& `, w
Dim ssetObj As AcadSelectionSet
# S6 y# _6 n0 N1 G7 J Dim dege1 As Double, dege2 As Double
: c0 `2 |2 y' i, p( J, S: P# e Dim dege3 As Double, dege4 As Double
. R; ~" r$ r, z Dim pt1 As Variant, pt2 As Variant, Yuanr As Double, yuanr2 As Double7 G/ L6 Z2 A$ B! v
Dim pt10 As Variant, pt20 As Variant, Yuanr1 As Double
, o3 j/ Y9 w$ L+ L  ~ Dim ic As Integer& o9 r- K, T$ b, L2 ~2 A
Dim str1 As String, str2 As String, id1 As String, id2 As String+ ]! _6 K  Q: z- i4 F, d9 r
Dim EntName() As String, line1() As Variant, line2() As Variant
1 U6 _" E- p1 I4 g' ?1 l Dim line3() As Double
2 t  a9 v4 k+ {& e Dim arc1() As Variant, arc2() As Double, arc3() As Double, arc4() As Double! h; n7 d1 u- R# l
Dim cir1() As Variant, cir2() As Double, blk1() As Variant6 Z4 Y' v9 o3 {4 u( T/ l, K! a
Dim blk2() As String
# o/ \% V. D0 n! j* E3 J6 r ic = ThisDrawing.SelectionSets.Count '选择集的个数
. ]' c- r0 `- wIf ic > 0 Then7 Z9 @% M! g# m. w( q% q
    For i = ic - 1 To 0 Step -1$ G# s) B: O3 n
        Set ssetObj = ThisDrawing.SelectionSets(i)/ }1 y$ Z; \  w1 u# @4 d5 o/ I
        If ssetObj.Name = "SSSS" Then ssetObj.Delete '存在该选择集删除它% P. w; M1 s7 ~9 i
    Next
; A; s2 T# g4 G$ i% d2 l; F+ Y+ TEnd If) u& v/ ~8 e) E2 d
    Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS")
4 ]+ j, u$ K& m" n$ v7 Z0 h    ' Add objects to a selection set by prompting user to select on the screen( C3 q- p9 b/ H' L: s3 U
'    ssetObj.SelectOnScreen
; z& ]# ]% n, y9 m" H$ [* ?            ssetObj.Select acSelectionSetAll '把全部图形加入选择集
4 t# ^5 F- h2 Z* `'            sele1.Select acSelectionSetAll, , , ft, fd  '层选择
( Z: g2 g1 K0 V! ~. A    On Error GoTo ccc1  F. ]3 T# p; h* f3 q  c' [
    ic = ssetObj.Count - 1
2 A1 N& f6 F8 K& x    If ic < 1 Then '选择集孔或图素小于2则退出5 _1 b  I! Z$ r7 z  D3 _* W% z
     Exit Sub
: W0 B& T8 N2 I6 o& g    End If
# G6 N; u( [+ _5 X2 a) x1 v    ReDim EntName(0 To ic)
5 O/ C) M) t' N! m/ n    ReDim line1(0 To ic): ReDim line2(0 To ic): ReDim line3(0 To ic)
% I. r- Q8 E! L( _9 V7 h' m) N- A( V    ReDim arc1(0 To ic): ReDim arc2(0 To ic): ReDim arc3(0 To ic)( P! W( ^$ g( J' F. [
    ReDim arc4(0 To ic)
$ U( y6 d0 M0 }& Y9 V    ReDim cir1(0 To ic): ReDim cir2(0 To ic)- z3 x, l' r- K7 m" I# \7 a: E
    ReDim blk1(0 To ic): ReDim blk2(0 To ic)3 i1 I" b; ^% K7 T# O
With ssetObj
; {# l2 T' v& _6 N( w8 r1 |- [    For i = 0 To ic, `9 h" J4 M4 y$ x/ U
         EntName(i) = ssetObj.Item(i).ObjectName2 U) H( e. W3 ~
         Select Case EntName(i)) a4 E$ n# H4 i! F/ g
          Case "AcDbLine"2 _' X, I4 o) X* }( [
           line1(i) = .Item(i).StartPoint# U  y  T2 u  ^9 \6 P' B/ }, t$ i% ~
           line2(i) = .Item(i).EndPoint& D7 C# g- C2 y8 J- @+ Y
           line3(i) = .Item(i).Angle) \+ E1 P8 u2 n6 g6 x% r
          Case "AcDbCircle"  a1 [* W  i6 T8 x# D
              cir1(i) = .Item(i).Center
( F* o1 r; u9 d              cir2(i) = Int(.Item(i).Radius * 1000) / 1000
' O( g0 B$ I6 @: o8 x          Case "AcDbArc"
9 J- Y  v( k. o               arc1(i) = .Item(i).Center& r9 R6 w* S: F/ @4 ~% i
               arc2(i) = Int(.Item(i).StartAngle * 1000) / 1000" S6 c# k  O  O0 \- ?
               arc3(i) = Int(.Item(i).EndAngle * 1000) / 1000( v& R7 N" p& `! {
               arc4(i) = Int(.Item(i).Radius * 1000) / 1000
$ X+ g" {0 h& b8 o& P0 P# J& n0 ~          Case "AcDbBlockReference"
5 v3 D( o3 A3 x7 {0 I              blk1(i) = .Item(i).InsertionPoint! v; O' P4 n: A9 ~
              blk2(i) = .Item(i).Name3 Y* }  I1 z- p! C
          End Select
$ d' n. f2 h. S) {* E6 i' o8 G  c. }         ( l2 S& V  A( F! N
    Next i, S0 e& @* y8 x( q( [5 I6 m

# Y, ]& Y* ~# ]( ]5 } For i = 0 To ic - 1
$ g. E( z' \; C2 q; `2 U    id1 = EntName(i)
, k" {, x. R  F, [# b   For j = i + 1 To ic
0 X" O0 T5 b( y3 s. g# e      id2 = EntName(j)
, ^3 v( U, }) y     If id1 = id2 Then
* T1 Y! q% C* }# _4 ]( M3 v0 Z+ H       Select Case id12 Z0 F* H7 Q2 I0 R5 v/ m
          Case "AcDbLine"7 o! }6 t( o: C' S0 a# G1 E! h2 s
            pt1 = line1(i)6 z; h( S7 z9 J7 {
            pt2 = line2(i)
  B& X8 P5 V+ }            dege1 = line3(i)
; E* }7 X  G" V5 ?8 w4 b            pt10 = line1(j)- x" x: r* d# S* M
            pt20 = line2(j)
* {/ [9 {  a, n; E! }/ q0 z            dege2 = line3(j)9 c6 r3 e0 v- U  h  q9 T/ a' ]4 q3 t
            If Abs(pt1(0) - pt10(0)) < 0.01 And Abs(pt1(1) - pt10(1)) < 0.01 And _5 \& K& L) J0 ~! m9 X0 M- ^
            Abs(pt2(0) - pt20(0)) < 0.01 And Abs(pt2(1) - pt20(1)) < 0.01 Then, i- O- \8 w6 J$ b! \
               .Item(i).Delete
( F# i1 ~- B0 G" @, g) }& W               Exit For( n+ Y2 ?$ ?$ M6 n9 C. N3 K; p
            End If8 z( ]& g6 y3 A( u
            If Int(Abs(dege1 - dege2) * 10000 + 0.5) / 10000 = 3.1416 Then. V& P0 b, A3 \
                If Abs(pt1(0) - pt20(0)) < 0.01 And Abs(pt1(1) - pt20(1)) < 0.01 And _
5 l5 s& S3 N. o                Abs(pt2(0) - pt10(0)) < 0.01 And Abs(pt2(1) - pt10(1)) < 0.01 Then8 X) K1 o/ W- @$ r. o' C* y$ e
                   .Item(i).Delete
& g+ n2 O& r4 Z. S) F1 h                   Exit For
. H- a6 Z& r) @' e( J                End If/ `9 c( \) @6 b: @
            End If9 l" W& [2 W+ z" ?
          Case "AcDbCircle"+ A. u4 r0 y1 J- }
            pt1 = cir1(i)
2 I- p: e( ^" }8 W            Yuanr = cir2(i)$ d9 _) w3 M3 S; V& y/ Z8 X
            pt2 = cir1(j), X" g1 X! a) k$ O9 r) b3 E1 }
            yuanr2 = cir2(j)
9 D& Y$ O/ d/ |; N7 {            If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 0.01 And Yuanr = yuanr2 Then
! A6 ~# w# r1 e6 ]4 U0 q; k- ]               .Item(i).Delete$ g+ B2 ~, Q* H* _1 O6 j
               Exit For- u$ A$ F, h2 `
             Else
0 J- \* N2 I( n: T1 T( u$ G               If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 8 Then
0 R4 b% ^/ Z0 `                  .Item(i).color = acGreen0 t" j( j0 d" u' p6 t: X
               End If
' G1 l& j8 n# P. e! V            End If
" ^+ k! H* D( r4 f& w% L          Case "AcDbArc"- d5 C1 L+ I8 [+ I6 `
            pt1 = arc1(i)8 ]. W7 J" _* q) ^* b7 B. g
            dege1 = arc2(i)+ P# d$ i! p0 [4 C; I
            dege2 = arc3(i)
! @0 O2 s) i0 G0 \& r% T' q            Yuanr = arc4(i)
$ V' E$ z5 T, I            pt2 = arc1(j)' x  u4 ~+ u. r% n, c
            dege3 = arc2(j)
. X1 B  k0 _4 A            dege4 = arc3(j), i1 O6 K7 e. E8 i
            yuanr2 = arc4(j)
5 e9 b0 P9 P5 p            If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And Yuanr = yuanr2 _& T& A6 w" g) K! w+ F" N
            And dege1 = dege3 And dege2 = dege4 Then1 t. Z3 m& P( o4 I. ]0 t- d# r% @9 L4 q
               .Item(i).Delete
2 b1 c0 B# H, A$ v/ G               Exit For( V8 |. {5 a; r3 x
            End If
+ Q. g0 X! {& W1 r) I- S3 v         Case "AcDbBlockReference", s* ~1 \" ?1 a7 L0 @
            pt1 = blk1(i)8 R+ p  W* U2 m4 i
            str1 = blk2(i)
! M' ?7 [7 b9 \+ o6 K4 t0 y            pt2 = blk1(j). g% O, F+ c, Y2 P; t2 B
            str2 = blk2(j)' p, U7 E  ~1 X* a4 `1 H. D- t
            If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And _
8 |& @1 v8 _  V* M( e            Trim(str1) = Trim(str2) Then
- s6 _" M2 U2 b7 p/ F6 J  R5 u( O: \4 V2 o               .Item(i).Delete
: H3 n0 ~/ B4 q- j               Exit For# Z& M! M4 L4 B
            End If& l" j# ]& l% l& c- V
        End Select
3 i1 b9 a- _) `3 Z      End If
. Y  w/ I) {4 P* }5 Q+ O4 U    Next j
4 A7 E( P( X2 a% U  Next i
7 c5 C9 ~6 l( k, s6 o  End With# a- x! n3 {/ G9 ]" P* W
'  MsgBox "删除重复完成!"
( M, S/ ?/ O) o2 x; X& \8 c   GoTo ccc2
0 w* y1 r, Y; J' `ccc1:  MsgBox "有错!!!"
3 P% |" z/ f- Z; r2 Nccc2:     'ssetObj.Delete- O: n2 ?$ S5 \2 l8 b
6 E( J5 R! B% i$ O: u2 m
End Sub
6 z* c# M- J4 g$ X  i5 z
1 G7 y. M  f5 B* `$ [" B9 b. M Public Function Clamp100(a1 As Double) As Double   '判断块存在不存在,存在=100,不存在=04 e3 G7 X4 m4 [9 A8 W2 ?& r
    Dim p1(0 To 2) As Double '交叉选择的左下角点! B7 N# O9 B1 ^  A8 ~1 ~
    Dim p2(0 To 2) As Double '交叉选择的右上角点+ R# b0 Y, i/ A3 f- c& v
    Dim ssetObj As AcadSelectionSet
2 Y7 v# w" e5 q' C- R    Dim ic As Integer, j As Integer
8 ~$ N: N3 g% z8 R& H: W0 p* k" u        ThisDrawing.SelectionSets("SSSS").Delete
( `0 E, W+ x* G5 a& d# w        Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS")/ n/ C- g+ l: o- G
        p1(0) = a1 - 15: p1(1) = -25: p1(2) = 0
0 A9 t5 [4 X- ]$ V        p2(0) = a1 + 15: p2(1) = -5: p2(2) = 02 v( `9 G: I% t! }/ V9 v3 N
        ssetObj.Select acSelectionSetWindow, p1, p2
) h5 F( ]( c2 }1 l+ T+ o* `4 W. ^        For j = 0 To ssetObj.Count - 1& g/ l2 p% O8 T8 b$ v9 N+ k
         ssetObj.Item(j).color = acGreen$ Q% A2 m* a8 Y# M  ?; n" W; k
          ssetObj.Item(j).Update9 g( [7 ?! D( e( T7 S
        Next j
) ?& i+ I! M& ]6 Q3 j- l  z% R0 n        Clamp100 = ssetObj.Count
; z( J# L: x4 l( g1 H( yEnd Function) {: D! @5 w0 S5 f, h& e2 v0 U
1 r1 P  F, v% b
: f# r, L$ @9 W* H+ g

- t9 ?0 u1 e4 j% b+ b" i# w' Z4 T& P7 q
看不太懂 不过   我在这里多学学  应该没问题的  嘿嘿
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表