QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
问题1.为什么在百度搜出来的VBA 都是用OFFICE的Excel 里的宏打开》??6 e. ~- Y0 m+ x/ f7 O
          我去试过了   大不开; q/ |) T0 t  q& _; a- k; F
          然后用AUTOCAD里的宏可以打开       不过需要密码. K( {4 [7 A$ G( [* S0 n
问题2.怎么样可以CrackVBA的密码?有没有什么工具?(我现在要打开的VBA是我们公司一台数控冲床的CAD转换出NC程序的一个插件,不过里面设计有点不合理    我想修改它)
5 l) r- q  Q0 U请哪位高手帮帮忙
发表于 2009-10-20 15:54:16 | 显示全部楼层 来自: 中国
一、很多大型工具软件都有VBA,比如WORD、EXCEL、AutoCAD。VBA的全称是Visual Basic for Applications,这是微软开发的面向应用程序的VB编程开发环境,通俗点说就是VB框架搭配上应用程序内核。所以EXCEL的VBA和AutoCAD的VBA是不一样的。  ~* x  R" @" c3 d4 z' d4 J! u9 E
二、VBA密码Crack,下载附件并按说明操作。& `$ K# v, j( u8 y9 B# x
VBA.rar (1.19 MB, 下载次数: 13)

评分

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

查看全部评分

发表于 2009-10-20 16:46:56 | 显示全部楼层 来自: 中国河北石家庄
老师真是高手,几乎没有不懂的问题。
 楼主| 发表于 2009-10-22 12:43:34 | 显示全部楼层 来自: 中国湖北十堰
谢谢版主!~   懂了8 r2 B. [5 F: i# u
附件我下了   希望可以解密码! Y; _9 ~! t0 B6 L9 Z
中午就不试了 1 J! G3 Y+ w- d2 q+ q( F
晚上回来在试试
& v# L1 y1 z" G9 Y/ m# v+ e: G: G) ]谢谢版主!~厉害
 楼主| 发表于 2009-10-22 12:55:03 | 显示全部楼层 来自: 中国湖北十堰
本来想晚上回来在试试的
, v8 S7 F* p4 P但是现在不试睡不着
$ s5 Y( y2 `- Y1 S嘿嘿! b& Y- y$ A! u
# Y; m4 ]' L& S0 _
试了试* y/ J5 s; y9 `5 N
谢谢版主   打开了那个文件
( Y6 N1 U4 ~$ B( z9 y下面是代码( ?2 y3 D2 d  @; G
'Declare Function GS_MHDog Lib "win32dll.dll" (DogData As MH_DLL_PARA) As Long3 n0 j) W6 E5 f
'Declare Function InstDrv Lib "RCMicroDogSetup.dll" Alias "InstDriver" (ByVal a As Integer) As Integer
0 s- x4 i7 `" e  E'Declare Function UninstDrv Lib "RCMicroDogSetup.dll" Alias "UninstallDriver" (ByVal a As Integer) As Integer! _& ]& N3 f2 [1 m) S
'Declare Function GetDogDriverInfo Lib "RCMicroDogSetup.dll" () As Long
1 u$ N5 E8 K  l' n* V* ]'Declare Sub DriverDialog Lib "RCMicroDogSetup.dll" ()- {( c, Y; r4 E- K' r; O% x: Y
'Declare Function NotifyPullOutAndPlugInUsbDog Lib "RCMicroDogSetup.dll" (ByVal a As Integer) As Integer
( a: R/ o8 d7 a; J2 W8 M. u: _; c$ B- Z, F/ v7 V
'Declare Function yy Lib "jmcar.dll" () As Long6 Y9 t1 G. r; i' S2 V
'Public xxx As New CAMZDSHXJ
9 E# q( J" z3 t* M2 ]8 Q# ]Const SYNCHRONIZE = &H100000
5 k- X. U2 @+ u4 }9 w; n) H8 CConst INFINITE = &HFFFFFFFF( {) _8 L# x( d# ^- _% T
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
) F" f% X# |0 J, U( y  T, zPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long, t# D. F; C  K1 n
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
; P! h( l& M( y- Z) q# sPrivate Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
# S( c0 K7 l4 e
3 {. O7 K4 x4 {  U* i+ |$ U% i# I  uPublic Function getmac() As String
. ^9 k7 Q0 K% n& s0 o Dim retval
8 x1 I* d! M1 n+ g Dim pId As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数+ m7 e( E: a  h
Dim MYSTR, lstr As String/ w/ ?8 M8 l( q  g0 h
If Dir("D:\cnc\hxj1.txt") = "" Then/ w' n3 {8 u# n! y' Q7 K
  Else8 ?6 Y! _( Y& U* a1 \
    Kill "d:\cnc\hxj1.txt "- w4 C/ Z4 V+ u+ [1 w- J
  End If
3 h1 i% G+ X" J, |5 O8 K  pId = Shell("cmd /C ipconfig /all > D:\CNC\hxj1.txt ", 0) ' Shell 传回 Process Id2 b3 N. G; Q+ d
  pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle" f2 |# Y# A6 x+ f$ r8 L/ b
  If pHnd <> 0 Then, F9 I8 n$ ]8 T" u
    Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束1 y; U; ]6 D2 o
    Call CloseHandle(pHnd)
0 Z0 L7 ?" R& B( I9 H  End If( }5 }8 T6 u: B4 U0 P7 H( g- \
  Close
# T3 W- n( X6 T! m  Open "d:\cnc\hxj1.txt " For Input As #3# D3 K* W, v5 x% F. F1 a: F' ?
  Do While Not EOF(3)9 H. s# J' n& l
    Line Input #3, lstr* P; h7 Y' E. b; [
    If InStr(lstr, "Physical Address") > 1 Then4 ~( G- J' b2 Z, b& W% m' `
      MYSTR = Split(lstr, ":", 2, 1)
5 ~6 N: C/ ~6 P4 }      getmac = MYSTR(1)
" T  J* p. i& ^  o. A      Exit Do1 b5 Z/ z" `& T) b6 b/ z
    End If! M2 S+ H5 i' P3 o, f
   Loop
- c6 k! Q7 w8 c  Close
$ e3 \$ L1 t7 j* ^9 H1 Q: ~3 xEnd Function/ G' N9 }+ J4 d/ }: h' _2 z! q
Public Sub DelDoubleALL()  '删除重复图素: s/ M% ~) n) S& l% N) \
Dim i, j, k As Integer
* W) }" M* d5 t, \$ |2 i, k6 P Dim ssetObj As AcadSelectionSet0 h* r2 Z) q+ a* x- ?) W+ G
Dim dege1 As Double, dege2 As Double
# y$ j# S2 z9 x0 j6 h Dim dege3 As Double, dege4 As Double( Y9 o- N) a: D
Dim pt1 As Variant, pt2 As Variant, Yuanr As Double, yuanr2 As Double. ]; l- {& C. ~& N4 N; g/ P
Dim pt10 As Variant, pt20 As Variant, Yuanr1 As Double
+ o8 i! v2 x" i$ K Dim ic As Integer+ Z+ J  A. ^3 E: }2 `1 G0 S. D9 w7 r
Dim str1 As String, str2 As String, id1 As String, id2 As String0 S5 a9 K# ~/ N) |) K, Q) {
Dim EntName() As String, line1() As Variant, line2() As Variant% X0 j7 t$ k) x& E0 R8 Z
Dim line3() As Double
+ k# i1 r/ v. o7 e Dim arc1() As Variant, arc2() As Double, arc3() As Double, arc4() As Double! w! a0 K3 _' ~- M/ m; d0 U6 C% {' H; h) Y
Dim cir1() As Variant, cir2() As Double, blk1() As Variant
# X& g8 ^6 \# w4 A$ P6 Y8 b Dim blk2() As String
' A) q+ H( U1 h' J ic = ThisDrawing.SelectionSets.Count '选择集的个数
) }1 Z" D" l" P3 F. o% k5 e( V8 aIf ic > 0 Then5 N0 c: V0 ~9 `! g
    For i = ic - 1 To 0 Step -1/ ^3 j! s# J1 R! x
        Set ssetObj = ThisDrawing.SelectionSets(i)1 g$ h, r4 F+ U, q% O; t
        If ssetObj.Name = "SSSS" Then ssetObj.Delete '存在该选择集删除它* N) X# r) `: q: ^* |/ L
    Next
- C: \( U0 H6 J) a4 rEnd If
. l) I: a1 K6 b9 X  P0 V  N5 a1 t    Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS")
& A$ _6 {" [/ j. N    ' Add objects to a selection set by prompting user to select on the screen# ~* W4 w% S  q
'    ssetObj.SelectOnScreen! m% }" ]4 N9 U
            ssetObj.Select acSelectionSetAll '把全部图形加入选择集* z# L: d) f7 i. t4 [5 x
'            sele1.Select acSelectionSetAll, , , ft, fd  '层选择2 t$ }6 M) m" u0 o: r; v" K& g7 N
    On Error GoTo ccc1& ]4 G0 \1 d' F8 c# ^4 M  y
    ic = ssetObj.Count - 18 h+ e% ~7 k/ r# R7 S" Y; W2 l6 }8 B, X
    If ic < 1 Then '选择集孔或图素小于2则退出
- z" N. ~) N, z6 Z& n' z9 Q     Exit Sub
8 M8 G/ Q5 T* x  S    End If
2 {4 X3 E. f: z2 d    ReDim EntName(0 To ic)
# i, n. O5 L, ~, ]    ReDim line1(0 To ic): ReDim line2(0 To ic): ReDim line3(0 To ic)1 u' e3 K% T- I# t$ [
    ReDim arc1(0 To ic): ReDim arc2(0 To ic): ReDim arc3(0 To ic)+ ^6 z* k; a( G0 i- y
    ReDim arc4(0 To ic)9 u5 ?4 h# X5 [
    ReDim cir1(0 To ic): ReDim cir2(0 To ic)' g/ P' R. D) i3 L( y9 L: n
    ReDim blk1(0 To ic): ReDim blk2(0 To ic)
5 Q& {& Q- l* o" iWith ssetObj
$ w! v. |7 I* g; W7 k5 F5 |  X    For i = 0 To ic
1 Z% A% v6 d/ S9 C         EntName(i) = ssetObj.Item(i).ObjectName2 G4 x% @* A2 \6 p
         Select Case EntName(i)
7 r5 _6 b" A. b* N) G0 K          Case "AcDbLine"! O9 J: M+ Z) D: b, V5 k
           line1(i) = .Item(i).StartPoint
" C: m% p1 C& v3 O6 M9 Y- n& R' S           line2(i) = .Item(i).EndPoint
3 U' ?! H8 W8 {: z& `           line3(i) = .Item(i).Angle" s3 D2 u4 F; M$ H
          Case "AcDbCircle"/ O7 U5 H0 i8 W8 N8 I% e/ e& u/ F1 C
              cir1(i) = .Item(i).Center  u+ Q2 I0 }4 _/ {( Z! x4 J. ?
              cir2(i) = Int(.Item(i).Radius * 1000) / 1000$ E$ H( e) A0 D' j; @$ o
          Case "AcDbArc"
6 s" o- w, Q7 B7 k               arc1(i) = .Item(i).Center
4 }) `7 r& ?& g' B0 S               arc2(i) = Int(.Item(i).StartAngle * 1000) / 1000
3 X) E9 Z8 o& ]               arc3(i) = Int(.Item(i).EndAngle * 1000) / 1000' X, Z# L5 n) S* N5 g5 ]
               arc4(i) = Int(.Item(i).Radius * 1000) / 1000
2 i5 Y& E( f) X& I          Case "AcDbBlockReference"
$ v' P) _. k2 R' n* r              blk1(i) = .Item(i).InsertionPoint8 @& k9 z: Z6 d0 v) }7 ~) E& G3 D
              blk2(i) = .Item(i).Name
' J, }. _% X' g3 x' n, U          End Select" l1 D4 A. y$ S) K  l5 M( O" X
           g5 r" g* O8 i, z% Y
    Next i
$ _6 i1 J' h! p6 k" T6 m
, X. M$ D) A& G! A For i = 0 To ic - 1( Z2 ?4 v# x- z( G! m( `
    id1 = EntName(i)1 j9 o! |% H; h! c4 I8 T) B
   For j = i + 1 To ic
+ I: m. ?# [  A! R5 x% Z      id2 = EntName(j). V3 B" t% c% }3 [# x4 W
     If id1 = id2 Then
& C$ S' P  w9 `& G7 n0 [7 U8 Z+ t       Select Case id1* J! X& d/ x2 G/ T/ m, M4 J
          Case "AcDbLine"
6 S' |# s5 c- u# g0 J7 z            pt1 = line1(i)& G0 T+ ^5 y! F- z8 |* C. }7 l
            pt2 = line2(i)7 V8 w* \( d/ t1 _( h
            dege1 = line3(i)
0 k' n& A# S$ B' z& O/ x            pt10 = line1(j)
, i2 X) e  _: T            pt20 = line2(j): I* ~1 n* G2 T3 v+ C
            dege2 = line3(j)& `: X9 V* u& d0 I
            If Abs(pt1(0) - pt10(0)) < 0.01 And Abs(pt1(1) - pt10(1)) < 0.01 And _
; \6 F5 f. B1 s5 l' a  Z            Abs(pt2(0) - pt20(0)) < 0.01 And Abs(pt2(1) - pt20(1)) < 0.01 Then
; a% s/ m8 {4 n6 [* A               .Item(i).Delete
$ e8 @1 P7 Q5 V! e* O8 ]               Exit For/ _3 h4 F9 P8 ^1 w! }1 r) o- J
            End If
$ w& L0 l" ^2 ~            If Int(Abs(dege1 - dege2) * 10000 + 0.5) / 10000 = 3.1416 Then
( Y' r4 F9 t( a$ {) J  z                If Abs(pt1(0) - pt20(0)) < 0.01 And Abs(pt1(1) - pt20(1)) < 0.01 And _  ]# L" Q4 d1 m6 R$ o
                Abs(pt2(0) - pt10(0)) < 0.01 And Abs(pt2(1) - pt10(1)) < 0.01 Then) r: B2 z% r6 Q9 E6 ~1 C, I0 o
                   .Item(i).Delete2 a$ C$ q# K# L7 A
                   Exit For
: Y: s' S& ~8 i% v3 k3 Z% d                End If1 n6 [3 f* A  I2 G
            End If
+ U% |% E: ~8 }: M/ o6 k          Case "AcDbCircle") U: s1 N, g0 D  w6 E. @+ X% V
            pt1 = cir1(i)
- V0 o+ D- T6 [. m' V; Q            Yuanr = cir2(i)
3 G8 O1 q$ Q5 }6 M  Z            pt2 = cir1(j)
; l( q$ q( R+ I' K3 u            yuanr2 = cir2(j)* X' f* |: ]7 K& |/ U& w$ J
            If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 0.01 And Yuanr = yuanr2 Then
$ g, `% w& O2 x7 N! m7 k               .Item(i).Delete5 F. h) J9 y$ Q9 s, ^2 Z/ H2 T
               Exit For6 f" |4 ]% c% n+ B
             Else: z$ a4 @( A# w3 C- l& E0 Y
               If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 8 Then
& [  u& A! x, e/ K* i' D6 ]5 V                  .Item(i).color = acGreen% ?% s7 p0 E  T$ q' B
               End If; S9 l7 ]. X. q+ h' J
            End If
) ~  C2 p, k- X& j9 N# z          Case "AcDbArc"8 p# ^& z4 U1 ?
            pt1 = arc1(i)
0 l! [. o! U& P7 ^            dege1 = arc2(i)7 \- ^1 g# Y) [, E- C0 p& F! |, s/ A! _
            dege2 = arc3(i)
8 m* y, ?, l! w2 H+ W            Yuanr = arc4(i)
( |9 x0 P0 o3 W8 f% T- E            pt2 = arc1(j)  Y7 v6 {( G* h
            dege3 = arc2(j)) K; m) F8 D8 j* f# N- |
            dege4 = arc3(j)
2 v  f$ ^2 _; {' z8 J% ]            yuanr2 = arc4(j)0 E: `7 J  v# W& s  S2 H
            If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And Yuanr = yuanr2 _
" C: ]" N( v( ~) j" ]            And dege1 = dege3 And dege2 = dege4 Then
$ {+ C& _/ d  Y/ f, K4 [               .Item(i).Delete
, q7 o( H' e# s4 p( G               Exit For3 w0 d" \* _* X6 |! z; `
            End If8 h1 ^4 p1 e2 w7 f5 {( `/ d$ a
         Case "AcDbBlockReference"! t: i( G9 `; G' M$ |+ n
            pt1 = blk1(i)% D2 y* R# A3 m: [4 N0 [$ E
            str1 = blk2(i)+ v! V7 U3 Q$ g
            pt2 = blk1(j)
! {9 ^3 X; c) C  O            str2 = blk2(j)
. h" u* z2 c7 c! D  U            If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And _
/ T* |" k% E0 S9 W1 K9 ^6 I            Trim(str1) = Trim(str2) Then
' G3 [+ ^/ r* v5 `$ z               .Item(i).Delete% k# t' ]5 O' A& B1 A, A8 G/ v
               Exit For
3 C# F/ h7 o' S3 |7 D            End If: T4 `7 q+ r$ t9 I+ j. s0 O
        End Select
% _$ d" l+ v- s; |$ [      End If
6 R+ a. |6 N3 ?6 N, e. J4 g/ L    Next j
" w3 U/ @1 E& O( r- a: g  Next i
& }) d9 w) f3 k" ~6 i  End With3 U3 P' Q+ L. J3 l4 [! ^
'  MsgBox "删除重复完成!"5 e+ F& L4 M  ]  r9 z* D
   GoTo ccc2
. l/ f; H, B) U, qccc1:  MsgBox "有错!!!". \  S: \& h3 j* }/ s- k
ccc2:     'ssetObj.Delete1 P6 T7 R4 O: B: @+ ]/ v
4 J1 v9 N+ o" ]
End Sub
9 @4 x* ~- ]! O6 R; Z& n6 [
0 O3 [  ]. \, q) ^. W; ] Public Function Clamp100(a1 As Double) As Double   '判断块存在不存在,存在=100,不存在=0  n2 s+ V" `: ?# W4 j( S2 i4 G
    Dim p1(0 To 2) As Double '交叉选择的左下角点
" u7 U+ R6 E/ C* q% _    Dim p2(0 To 2) As Double '交叉选择的右上角点
  f5 P' Q1 o2 b$ o    Dim ssetObj As AcadSelectionSet# n  E  T% I6 [0 T" s# {, f* ^
    Dim ic As Integer, j As Integer1 S- v) m. l7 g" w
        ThisDrawing.SelectionSets("SSSS").Delete
$ h8 d' q5 \4 x  f) {        Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS")
, {5 \' [* C& o) F& Q: N        p1(0) = a1 - 15: p1(1) = -25: p1(2) = 04 i$ c$ O6 r* P* m! k
        p2(0) = a1 + 15: p2(1) = -5: p2(2) = 0
( j  ~' w, F4 a- A3 d7 D+ Q. V        ssetObj.Select acSelectionSetWindow, p1, p2) F) N( e  m$ [. g! O
        For j = 0 To ssetObj.Count - 1
+ ~3 Y8 d) Y, W; x) \9 L  L. e( Z         ssetObj.Item(j).color = acGreen3 [% U8 }" I) }& b# t
          ssetObj.Item(j).Update/ N6 P) O3 ~. ]+ v/ Y/ T
        Next j
- g! A  j" a8 \* ~% T        Clamp100 = ssetObj.Count8 b# ~& @! n6 v0 E5 ?% ?+ u% L
End Function
6 {9 b1 w/ D$ s4 L+ u, J' y; q1 W" Z9 F- S
/ U9 m# l1 e! M) ?  K# h2 M% z& r6 H
) C. w: @$ e: U( N! |+ G* k- A1 b

5 |: u' y" X/ {8 Y: d4 S看不太懂 不过   我在这里多学学  应该没问题的  嘿嘿
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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