QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
1天前
查看: 1909|回复: 4
收起左侧

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

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

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

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

x
问题1.为什么在百度搜出来的VBA 都是用OFFICE的Excel 里的宏打开》??7 |4 T! K1 t$ [; I$ h
          我去试过了   大不开; l2 n+ G8 [( n+ S: E
          然后用AUTOCAD里的宏可以打开       不过需要密码" j; [5 c( F3 b9 s
问题2.怎么样可以CrackVBA的密码?有没有什么工具?(我现在要打开的VBA是我们公司一台数控冲床的CAD转换出NC程序的一个插件,不过里面设计有点不合理    我想修改它)9 K" H  p" N" f' r4 A9 R
请哪位高手帮帮忙
发表于 2009-10-20 15:54:16 | 显示全部楼层 来自: 中国
一、很多大型工具软件都有VBA,比如WORD、EXCEL、AutoCAD。VBA的全称是Visual Basic for Applications,这是微软开发的面向应用程序的VB编程开发环境,通俗点说就是VB框架搭配上应用程序内核。所以EXCEL的VBA和AutoCAD的VBA是不一样的。# d& @* x7 @4 X# c5 C  F
二、VBA密码Crack,下载附件并按说明操作。
  h# W5 D, T% y# K/ e- k VBA.rar (1.19 MB, 下载次数: 13)

评分

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

查看全部评分

发表于 2009-10-20 16:46:56 | 显示全部楼层 来自: 中国河北石家庄
老师真是高手,几乎没有不懂的问题。
 楼主| 发表于 2009-10-22 12:43:34 | 显示全部楼层 来自: 中国湖北十堰
谢谢版主!~   懂了
% Y4 ~4 i% b( f9 T, {7 i+ f附件我下了   希望可以解密码
$ C( U5 z5 @' L4 S& [中午就不试了 : |; z" T- ?- y4 R1 ]( W) B
晚上回来在试试
0 c& G7 ~0 ?1 {: Y8 }, M谢谢版主!~厉害
 楼主| 发表于 2009-10-22 12:55:03 | 显示全部楼层 来自: 中国湖北十堰
本来想晚上回来在试试的+ g8 X' O( S+ b) _, O$ R, R
但是现在不试睡不着
! S* ?6 @" ?% x5 `, f5 k嘿嘿
; X0 c( A2 W5 n! U) I" I& Z- D  L2 @
) [8 T/ e9 w: u4 t4 a, Z试了试
, ?9 }! w& {* V! w0 x谢谢版主   打开了那个文件3 e/ O- U* }& g. y4 r3 h# w, e
下面是代码+ T% K7 d/ ?# O. |% P
'Declare Function GS_MHDog Lib "win32dll.dll" (DogData As MH_DLL_PARA) As Long
& ^+ T7 z4 q1 |/ o'Declare Function InstDrv Lib "RCMicroDogSetup.dll" Alias "InstDriver" (ByVal a As Integer) As Integer
- [- e6 I+ M) D6 c2 `3 e9 }- j'Declare Function UninstDrv Lib "RCMicroDogSetup.dll" Alias "UninstallDriver" (ByVal a As Integer) As Integer, o6 P6 v# Y# z
'Declare Function GetDogDriverInfo Lib "RCMicroDogSetup.dll" () As Long
" U8 A5 `- `% r7 P0 v' g& a( G'Declare Sub DriverDialog Lib "RCMicroDogSetup.dll" ()
4 L7 O3 v) \' a8 u9 I8 X'Declare Function NotifyPullOutAndPlugInUsbDog Lib "RCMicroDogSetup.dll" (ByVal a As Integer) As Integer
- m% c' G) A3 i- m& _9 B1 e5 A- P+ N  H+ F& K8 W; t7 E
'Declare Function yy Lib "jmcar.dll" () As Long
5 X! a4 j" ?) R& \$ p'Public xxx As New CAMZDSHXJ
+ q: J. p; ~. k# HConst SYNCHRONIZE = &H100000
8 u+ u& l: o, a' W7 RConst INFINITE = &HFFFFFFFF
* H# f. Q: B/ U8 KPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
6 g0 @$ u6 \. \: F5 g7 tPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long# T$ f3 B& l8 Z  h& d7 Q
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
" H0 U" i+ t4 @0 n1 M* BPrivate Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long; ]. _5 K4 J( G4 S* i- U$ Z
7 j# a  l2 b/ a( A: E3 S
Public Function getmac() As String
: }# }: D6 ^: @0 f" R Dim retval+ Y9 I, B/ A( p
Dim pId As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数
9 \! g, |8 ]0 O: V3 E  Q; ]' Q Dim MYSTR, lstr As String
* f4 R6 Q+ F& P4 p. b6 ` If Dir("D:\cnc\hxj1.txt") = "" Then
) J$ e& d" M) E6 ^: s3 i  Else
) ?$ o3 z5 z6 t+ [    Kill "d:\cnc\hxj1.txt "2 z: i8 W! E  u, C" S  M: g6 H
  End If
. ^8 h4 [1 s1 A* r1 a0 Z  pId = Shell("cmd /C ipconfig /all > D:\CNC\hxj1.txt ", 0) ' Shell 传回 Process Id
% g- m" F* a+ `* [! H; A  pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle; x) G! ?$ A3 I* ]" W/ Y
  If pHnd <> 0 Then7 }; ?; S. a+ `" h9 Y/ I" ^1 q
    Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束; u" {6 `. ^( s& K* R( l( v$ V
    Call CloseHandle(pHnd)! F: f0 S/ ]9 i3 J
  End If
1 i+ b7 z9 I; `* a& M  Close" x) \5 e  a+ ?" G- Q
  Open "d:\cnc\hxj1.txt " For Input As #3
: ?& i; Z/ E% q6 A' T. E, `; F  Do While Not EOF(3)' e: h! ^' r, p0 C% y" t8 I, L# A
    Line Input #3, lstr& X# w" O) r  ]- e1 g9 {. ~# W* X* T
    If InStr(lstr, "Physical Address") > 1 Then
3 M4 L( f) J$ I/ a      MYSTR = Split(lstr, ":", 2, 1)- g: g8 t8 ?1 M8 G) `  h
      getmac = MYSTR(1)0 P1 ~3 g/ }7 y8 L5 N
      Exit Do3 p9 O$ V  F/ P
    End If
) Z/ b: g, T9 C+ {5 x   Loop3 p6 d4 P! V# ^' X
  Close8 t7 g$ |9 E% S) s! I, Z# W
End Function
6 d, I% @9 o6 _5 b Public Sub DelDoubleALL()  '删除重复图素
0 z- t& [* k& b. m; a& [ Dim i, j, k As Integer1 V+ D9 x" ?, r8 l4 |% i
Dim ssetObj As AcadSelectionSet1 Y* w, X8 ]0 `. K2 c* a9 m4 k
Dim dege1 As Double, dege2 As Double8 H9 L; i4 l, [& |# _! k/ i, d
Dim dege3 As Double, dege4 As Double
! k" U5 E. M/ ]" H+ d* V' R3 \' ` Dim pt1 As Variant, pt2 As Variant, Yuanr As Double, yuanr2 As Double
( P( \2 K: A% A% s) S Dim pt10 As Variant, pt20 As Variant, Yuanr1 As Double5 s! @- v0 n7 ?% I1 q% R
Dim ic As Integer
- x  ~! L4 s0 h7 l Dim str1 As String, str2 As String, id1 As String, id2 As String' ~8 |7 u9 x4 K) |( d7 [
Dim EntName() As String, line1() As Variant, line2() As Variant- N' [4 Q( Q: a! c" y
Dim line3() As Double$ j3 ?& u2 `1 t& G5 A) O& |
Dim arc1() As Variant, arc2() As Double, arc3() As Double, arc4() As Double
8 @6 u" s5 Y" x1 z! s Dim cir1() As Variant, cir2() As Double, blk1() As Variant( k4 u: a  z8 J% ]( }4 b% z
Dim blk2() As String
$ {2 R5 I8 \0 Q, ]/ k. p# L ic = ThisDrawing.SelectionSets.Count '选择集的个数
6 K, d2 x& Q; p, ?6 t8 {1 ^0 p4 J( QIf ic > 0 Then
3 Q% J% y; B+ F5 S* B- |    For i = ic - 1 To 0 Step -11 ]& V) w+ Q" b: e5 k% P+ a
        Set ssetObj = ThisDrawing.SelectionSets(i)6 e- T9 [1 o  O  l# x3 w- f" _
        If ssetObj.Name = "SSSS" Then ssetObj.Delete '存在该选择集删除它
) r- E9 x; V9 z1 a- m    Next- ~; F3 H6 Z8 ?1 _/ l8 J+ n
End If
& y9 Q, X/ R7 I! q) m; w    Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS")& A2 K$ F# P  y6 r
    ' Add objects to a selection set by prompting user to select on the screen
: e0 R( O! c; }) K$ w1 Y8 A; ~'    ssetObj.SelectOnScreen$ U. J* S3 D9 ]0 k
            ssetObj.Select acSelectionSetAll '把全部图形加入选择集
  N; Q, w, e$ w' o'            sele1.Select acSelectionSetAll, , , ft, fd  '层选择! L8 h- K2 D2 L; ^
    On Error GoTo ccc1& y1 j0 a5 e( }8 S
    ic = ssetObj.Count - 1
; Z" S$ x% J) m/ ?8 M% c/ I    If ic < 1 Then '选择集孔或图素小于2则退出+ t2 @5 ^: V8 M
     Exit Sub3 N; a# o" q$ s
    End If' r7 B* s! J: N' Q  d
    ReDim EntName(0 To ic)( X6 b$ Q6 X0 C' X$ }
    ReDim line1(0 To ic): ReDim line2(0 To ic): ReDim line3(0 To ic)% D' ?" Y; _. s: ^& e
    ReDim arc1(0 To ic): ReDim arc2(0 To ic): ReDim arc3(0 To ic)9 |1 B# f# a  A# C+ v
    ReDim arc4(0 To ic)4 W* s: I$ J7 e  n- T; B9 }: \
    ReDim cir1(0 To ic): ReDim cir2(0 To ic)
0 X2 Q: q, Q. b: \; ?7 ]    ReDim blk1(0 To ic): ReDim blk2(0 To ic)
' y7 u. O0 `! }: R0 KWith ssetObj
% G3 |' m# _+ e+ B    For i = 0 To ic
! c5 g% p" k& X7 d" {' \         EntName(i) = ssetObj.Item(i).ObjectName6 I+ Q( q/ ^4 |3 f
         Select Case EntName(i)
- g6 P1 v; f$ X7 J          Case "AcDbLine"
, a) B4 o4 @3 {  f4 A( s9 l7 D           line1(i) = .Item(i).StartPoint1 X! N# T4 h( _7 G- w
           line2(i) = .Item(i).EndPoint, o: W( l. v" @% F2 j  T4 h
           line3(i) = .Item(i).Angle
+ A) o4 T! H! B, s( U          Case "AcDbCircle"
. q8 Z+ ~# E+ i" e* R* u( t              cir1(i) = .Item(i).Center
4 M/ a' I, V. Y. O              cir2(i) = Int(.Item(i).Radius * 1000) / 1000
' V( j- c; D3 w- n: ]2 b5 s          Case "AcDbArc"
. O" }) \4 w) N0 O0 t* x               arc1(i) = .Item(i).Center8 n/ h  O2 _# T3 l1 m0 z
               arc2(i) = Int(.Item(i).StartAngle * 1000) / 10000 w& L. ?, r: ]. G6 ]2 \) y5 i
               arc3(i) = Int(.Item(i).EndAngle * 1000) / 1000: q/ |* x3 ]6 P- z7 a4 l
               arc4(i) = Int(.Item(i).Radius * 1000) / 1000$ ^+ w, b: _- c- v$ o6 e
          Case "AcDbBlockReference"& w2 Y; }6 e" I1 _; u+ W! p3 E1 v
              blk1(i) = .Item(i).InsertionPoint
- S9 ?' `, \/ E# s% w& p1 _* _              blk2(i) = .Item(i).Name' K, P) r) w% `2 G, J' ~& |
          End Select
' x* u* k: W; }( O2 U         
; ~2 r: b% ]+ f- ^9 C( b    Next i
3 {' Q* B0 B9 s) {- j- s. f, b7 M2 r# D# K
For i = 0 To ic - 1
9 D  }5 q* @5 C) d' W0 ~& ^" B! M5 p" e, l    id1 = EntName(i): R: j& a' i8 D* h
   For j = i + 1 To ic
- i  D$ r$ ]" H; `8 H' ~% C1 a" T      id2 = EntName(j)
2 N) ]( R$ x9 \     If id1 = id2 Then' @8 g. I; z& H+ s3 J) o
       Select Case id1
3 a# e: F& Q9 Z9 v          Case "AcDbLine"
" d2 h, m9 i4 \% l9 y8 T            pt1 = line1(i)
* i8 U) Q9 ]0 u& X* B            pt2 = line2(i)
, L( X" A, }" N9 B( a! J            dege1 = line3(i)
0 `, j$ e% B! M) `            pt10 = line1(j)7 X1 ]: w- L0 ?/ N3 K/ T
            pt20 = line2(j)) h$ W) Q6 D6 R! u' _1 {6 \
            dege2 = line3(j)$ y: w- L9 ~; n, u
            If Abs(pt1(0) - pt10(0)) < 0.01 And Abs(pt1(1) - pt10(1)) < 0.01 And _
# U- Q7 r% L1 I' X2 a( r( B1 T            Abs(pt2(0) - pt20(0)) < 0.01 And Abs(pt2(1) - pt20(1)) < 0.01 Then+ L; |6 L8 Z9 I- O( O% C3 h0 K
               .Item(i).Delete
8 I, ~3 x* ?& ~: A% L1 K% x               Exit For0 R2 b& q+ C4 V
            End If
+ x6 Z* G* d% r6 K; t; i5 n            If Int(Abs(dege1 - dege2) * 10000 + 0.5) / 10000 = 3.1416 Then- K; q7 |2 V3 a8 C7 D
                If Abs(pt1(0) - pt20(0)) < 0.01 And Abs(pt1(1) - pt20(1)) < 0.01 And _
! n0 w% D6 Y9 Z2 t2 a                Abs(pt2(0) - pt10(0)) < 0.01 And Abs(pt2(1) - pt10(1)) < 0.01 Then" o' a3 b/ Z9 j) \
                   .Item(i).Delete' [3 t. }- B; w5 C3 g5 D, v
                   Exit For
. W$ W, T& u% e& M: Q* N9 q$ R* v                End If5 }; S9 `4 u. {- K" P" F; E
            End If
' ?% e6 s3 j; g! s; o          Case "AcDbCircle"' m# Q# O1 V; E; _) N
            pt1 = cir1(i)
) T3 `7 l) j, A1 l  j$ a; Z            Yuanr = cir2(i)
/ L3 c8 K8 o5 ~0 @6 q$ v" S4 D8 {            pt2 = cir1(j); f8 l' `5 ~% T6 U; b/ w, _
            yuanr2 = cir2(j)6 C5 d+ K0 O2 @
            If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 0.01 And Yuanr = yuanr2 Then0 \! N. u: h) \% C
               .Item(i).Delete5 G4 }: U2 N3 z9 ^/ I- P
               Exit For
+ Z8 I! |* u: @4 ^$ n/ r' @             Else
, l" E) @9 s' j. L  I               If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 8 Then  T; v# i! U4 e9 W
                  .Item(i).color = acGreen
( H1 Q; o+ m  J7 c1 e  q! T               End If
3 k# N8 f5 ~7 Z9 i2 y, N: R& G. R            End If% v" T' E% {' J2 n  w: s( ~8 `6 |
          Case "AcDbArc"  h! b/ |. ], i% ~( @4 C
            pt1 = arc1(i)
, [! {4 W7 D' R+ V2 H* A6 q            dege1 = arc2(i): C$ g1 s+ O+ d! D
            dege2 = arc3(i)5 A% W# c% G* P) N* K. |4 U
            Yuanr = arc4(i)7 z, g5 j: k8 H
            pt2 = arc1(j)
( `9 [  W8 d# O, }/ D            dege3 = arc2(j)
9 O, K4 K1 O1 y7 ^* i            dege4 = arc3(j)' U. u9 V; e) ]; [
            yuanr2 = arc4(j)( p# A  v) T7 s. A
            If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And Yuanr = yuanr2 _
: }: X! |: }& f& X. t! q            And dege1 = dege3 And dege2 = dege4 Then
6 J1 A6 N( o& G" |2 P8 i               .Item(i).Delete
3 J' c) |- @5 I- |% A3 d* W               Exit For! T- ?7 a! `1 o* _" p/ r
            End If
( V5 c0 E! P& n6 T8 D3 |% N1 E. I         Case "AcDbBlockReference"
; ^5 q6 E. O, F$ a/ ]6 T            pt1 = blk1(i)
1 N* G" z( U% l9 M            str1 = blk2(i)
, u: Y) E% f8 G            pt2 = blk1(j)
/ o3 n& Z  f/ {  Q( u5 G( W5 d            str2 = blk2(j)
. P" C8 ]2 V3 c0 k9 u! R            If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And _# T0 `9 n/ Q7 p# @
            Trim(str1) = Trim(str2) Then
" w; v0 W, m/ Q8 C" M  q7 Z! W               .Item(i).Delete
& n) B- J6 X/ D               Exit For
( e' n3 u' |9 `. g8 P; J            End If) T% Y8 B9 H5 k4 Y7 @$ e1 @  M
        End Select
3 {* l8 f. ~' N( v) K      End If( Z! _6 y, d+ l: p4 E5 J
    Next j
& o! ~8 q) q3 h4 N: a  s  Next i
/ _5 _5 L% a' x/ a  End With
2 V" [( E3 k- B6 y% K( b7 F'  MsgBox "删除重复完成!"
7 I9 _" [+ y( h% F   GoTo ccc2
& R+ i4 [" `4 W& a3 b% u; Xccc1:  MsgBox "有错!!!"
0 ]# B9 z6 z8 Y; ?1 _- ~ccc2:     'ssetObj.Delete
  G$ z3 ~. m- v$ I' S5 _! a, O
4 s% d1 h8 R  @, U8 V: q% ^" m9 D End Sub$ c" K  i  o3 K

# T* s3 y. q; C' _/ }5 R2 ] Public Function Clamp100(a1 As Double) As Double   '判断块存在不存在,存在=100,不存在=0' p4 @, \0 K6 t' Z8 b' h
    Dim p1(0 To 2) As Double '交叉选择的左下角点( R( ]. c  o' U9 h
    Dim p2(0 To 2) As Double '交叉选择的右上角点/ O8 M8 o. k8 c: B- A: c4 ]% m
    Dim ssetObj As AcadSelectionSet& ^" Z  E& N0 o7 Q* P' L
    Dim ic As Integer, j As Integer9 [% P8 R8 g, }, R( i1 e0 K
        ThisDrawing.SelectionSets("SSSS").Delete
  T' w' a1 z4 q0 P( e        Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS")
# g% k+ v# A7 p        p1(0) = a1 - 15: p1(1) = -25: p1(2) = 0: g. s# y. N( a0 o2 s
        p2(0) = a1 + 15: p2(1) = -5: p2(2) = 0
$ ^- s- k9 I" c9 [8 G9 M# q( L( E        ssetObj.Select acSelectionSetWindow, p1, p2
% u7 ~& x" ]: W9 w        For j = 0 To ssetObj.Count - 1
; w, e9 C- j: H9 l1 S' n         ssetObj.Item(j).color = acGreen+ w; `9 t; v% b; F" X5 T
          ssetObj.Item(j).Update
! B5 e! J" R" ?+ P( O        Next j" R1 Q6 w% N1 }$ A1 [/ }
        Clamp100 = ssetObj.Count: B: c  R2 O8 h: N% \! k9 {; H8 M' _0 h
End Function' e5 F( R& p7 _3 @( z. B; S
+ ^4 q% ^; b& s" z- D- t5 B* d* R

5 B1 S" K/ N2 T" s' e
* o7 X9 Z' ?4 A; v% X$ U& ]
4 Z2 @1 }8 }3 d0 w3 b% s看不太懂 不过   我在这里多学学  应该没问题的  嘿嘿
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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