Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

@Luschi:Aufheben des Vba-Kennwort-Schutzes per API

@Luschi:Aufheben des Vba-Kennwort-Schutzes per API
Andre´
Hallo Luschi,
habe den Beitrag Makro per VBA ändern vom 06.01.2011 verfolgt.
https://www.herber.de/forum/archiv/1192to1196/t1194138.htm
Dort hattest Du geschrieben,
PS: für jeden Interessierten zeige ich die Lösung in 3 Tagen; brauche noch ein paar Tests! 
Hast Du dies schon irgendwo gepostet? Hab jedenfalls nichts gefunden :-(((
Für mich würde es reichen, wenn die auszuwählende Exceldatei geöffnet wird, dort das bestehende VBA Kennwort ersetzt wird durch ein neues Kennwort und dann die Datei gespeichert und geschlossen wird.
Ich wäre sehr daran interessiert, wenn Du eine Lösung aufzeigen würdest.
Vielen Dank im Voraus!
MFG Andre

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
was Luschi meint...
16.01.2011 10:48:43
Tino
Hallo,
, ist der Nachbau von SendKey mittels API- Funktion.
Weil SendKey eben sehr viele ungewollte Aktionen ausführt die zum Teil sehr nervig sind.
z. Bsp. wird der Num-Lock ständig deaktiviert um nur eins zu nennen.
Hier ist eine alternative, dies habe ich selbst in einem Passwort-Programm (VP6) im Einsatz,
kann aber auch in Excel verwendet werden.
http://www.vbarchiv.net/tipps/tipp_542-alternative-zur-sendkeys-anweisung.html
Gruß Tino
OT Nachfrage zu API-Sendkeys
16.01.2011 18:38:33
Reinhard
Hallo Tino,
seit Jahren bin ich auf der Spur einer Lösung, wie ich ermitteln kann welche Unicodezeichen einer Schriftart in Excel druckbar sind oder nicht, auch schon hier nachgefragt.
Jetzt stieß ich in einem VB Forum auf Code der Bilder vergleicht und MÖGLICHERWEISE brauchbar ist.
Hab mir dann gemacht, ich mache einfach Bilder von allen Unicode-Zeichen von 32 - 65535.
Ich habe das kostenlose programm Irfanview.
Dort ist es so, wenn es gestartet ist, fügt man mit Strg+v ein Bild ein. Mit "s" kommt das Speichern unter Bild.
Automatisch ist man dann in dem Feld wo man den Bildnamen eingeben kann, da ich bmp brauche wegen dem Bildvergleich, kommt dann Tab+b und mit Alt+s wird das Bild abgespeichert.
Im Irfanview wird ja nun noch dieses erste Bild angezeigt, um es zu löschen muß man "d" drücken, dann Rest wie vorher.
Der erste Teil, also Irfanview starten, das erste Bild reinkopieren (Zeichen(32)) abspeichern usw. klappt vorzüglich mit dem normalen Sendkeys.
Application.SendKeys "^vsBild32{TAB}b%s", True
Der zweite Teil, das nächste Bild, oder gar mehr, geht kolossal schief. Dann wird mitten im Vba-Code sowas reingeknallt: sBild34 bd#
Nun hatte ich auch den Vb-Code gefunden den zu zeigst. Da läuft ja erstmal gar nix. Der kann ja gar nicht das erste Bild mit Strg+v anzeigen :-(
Call SendKeysEx("^v")
Bediene ich die API-Funktion falsch?
Natürlich ist mir auch jede andere Variante angenehm um zu ermitteln welche zeichen einer Excelschriftart nun druckbar ist oder nicht.
Danke ^ Gruß
Reinhard
Sub test()
Dim Irfan, Zei As Long
'manuelle einmal in Irfan was abspeichern mit dem richtigen Ordner
'For Zei = 32 To 65535
'   Cells(Zei, 1) = ChrW(Zei)
'Next Zei
Cells(32, 1).Copy
Irfan = Shell("C:\Programme\IrfanView\i_view32.exe", vbMaximizedFocus)
Call SendKeysEx("^v") 'Bild32{TAB}b")
'Application.SendKeys "^vsBild32{TAB}b%s", True
Exit Sub
For Zei = 33 To 33
Cells(Zei, 1).Copy
Application.SendKeys "d^vsBild" & Zei & "{TAB}b%s", True
Next Zei
Application.SendKeys "{ESC}", True
End Sub

Anzeige
AW: OT Nachfrage zu API-Sendkeys
16.01.2011 20:23:25
Tino
Hallo,
schau Dir dies mal an, vielleicht ist es so verständlicher.
https://www.herber.de/bbs/user/73095.xls
Der Trick ist einfach die entsprechenden Tasten in der richtigen Reihenfolge zu drücken und
wieder loszulassen.
Gruß Tino
AW: OT Nachfrage zu API-Sendkeys
16.01.2011 22:10:12
Andre´
Hallo Tino,
danke für den Link
Habe folgendes probiert:
Sub Kontextmenü()
keybd_event VK_CONTEXTKEY, 0, 0, 0   'Kontexttaste runter
keybd_event VK_CONTEXTKEY, 0, KEYEVENTF_KEYUP, 0   'Kontexttaste hoch
keybd_event VK_DOWN, 0, 0, 0        'Pfeiltaste nach unten drücken
keybd_event VK_DOWN, 0, 0, 0        'Pfeiltaste nach unten drücken
End Sub
es wird aber nur einmal die Pfeiltaste nach unten angesprochen.
Wie muss das Makro geändert werden, damit zweimal nach unten realisiert wird?
Vielen Dank im Voraus!
MFG Andre
Anzeige
habs gefunden
16.01.2011 22:15:15
Andre´
..die Taste nach oben
Sub Kontextmenü()
keybd_event VK_CONTEXTKEY, 0, 0, 0   'Kontexttaste runter
keybd_event VK_CONTEXTKEY, 0, KEYEVENTF_KEYUP, 0   'Kontexttaste hoch
keybd_event VK_DOWN, 0, 0, 0        'Pfeiltaste nach unten drücken
keybd_event VK_DOWN, 0, KEYEVENTF_KEYUP, 0      'Pfeiltaste nach oben
keybd_event VK_DOWN, 0, 0, 0        'Pfeiltaste nach unten drücken
End Sub

Unicodezeichen mit Irfanview als bmp speichern
17.01.2011 13:36:49
Reinhard
Hallo Tino,
danke dir. dadurch habe ich jetzt eine funktionierende Lösung gefunden:
https://www.herber.de/bbs/user/73104.xls
Sie beruht auf dem nachfolgenden Code.
In der Beispielmappe sind nur 100 Unicodezeichen in A32-A131. Die Zeit von ca. 50 sec ergibt für 65xxx Zeichen eine Zeit von fast 8 Stunden.
Ca. 5 h davon entfallen auf "Sleep 300" (wenn ich mich nicht verrechnet habe)
Gut, damit kann ich leben, bzw. drossel Sleep noch soweit das geht.
Gruß
Reinhard
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Sub keybd_event _
Lib "user32" ( _
ByVal byteVirtualKeycode As Byte, _
ByVal byteScan As Byte, _
ByVal lFlags As Long, _
ByVal lExtraInfo As Long)
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Private Const KEYEVENTF_KEYUP As Long = &H2  ' Taste lösen
Enum eVK_Key
VK_LBUTTON = &H1  'Linker Mausbutton
VK_RBUTTON = &H2  'Rechter Mausbutton
VK_MBUTTON = &H4  'Mittlerer Masubutton
VK_BACK = &H8 'Backspace Taste
VK_TAB = &H9  'Tab Taste
VK_CLEAR = &HC    'Numpad 5 ohne Numlock
VK_RETURN = &HD   'Enter Taste
VK_SHIFT = &H10   'Shift Taste
VK_CONTROL = &H11 'STRG Taste
VK_MENU = &H12    'Alt Taste
VK_PAUSE = &H13   'Pause/Untbr
VK_CAPITAL = &H14 'Caps Lock/Feststelltaste
VK_ESCAPE = &H1B  'Escape
VK_SPACE = &H20   'Space/Leertaste
VK_PRIOR = &H21   'PageUp/Bild hoch
VK_NEXT = &H22    'PageDown/Bild runter
VK_END = &H23 'Ende
VK_HOME = &H24    'Home/Pos1
VK_LEFT = &H25    'Linke Pfeiltaste
VK_UP = &H26  'Obere Pfeilaste
VK_RIGHT = &H27   'Rechte Pfeiltaste
VK_DOWN = &H28    'Untee Pfeiltaste
VK_PRINT = &H2A   'Drucken (Nokia Tastaturen)
VK_SNAPSHOT = &H2C    'Drucken/S-Abf
VK_INSERT = &H2D  'Einfügen
VK_DELETE = &H2E  'Entfernen
VK_HELP = &H2F    'Hilfe
VK_0 = &H30   'Taste 0
VK_1 = &H31   'Taste 1
VK_2 = &H32   'Taste 2
VK_3 = &H33   'Taste 3
VK_4 = &H34   'Taste 4
VK_5 = &H35   'Taste 5
VK_6 = &H36   'Taste 6
VK_7 = &H37   'Taste 7
VK_8 = &H38   'Taste 8
VK_9 = &H39   'Taste 9
VK_A = &H41   'Taste A
VK_B = &H42   'Taste B
VK_C = &H43   'Taste C
VK_D = &H44   'Taste D
VK_E = &H45   'Taste E
VK_F = &H46   'Taste F
VK_G = &H47   'Taste G
VK_H = &H48   'Taste H
VK_I = &H49   'Taste I
VK_J = &H4A   'Taste J
VK_K = &H4B   'Taste K
VK_L = &H4C   'Taste L
VK_M = &H4D   'Taste M
VK_N = &H4E   'Taste N
VK_O = &H4F   'Taste O
VK_P = &H50   'Taste P
VK_Q = &H51   'Taste Q
VK_R = &H52   'Taste R
VK_S = &H53   'Taste S
VK_T = &H54   'Taste T
VK_U = &H55   'Taste U
VK_V = &H56   'Taste V
VK_W = &H57   'Taste W
VK_X = &H58   'Taste X
VK_Y = &H59   'Taste Y
VK_Z = &H5A   'Taste Z
VK_STARTKEY = &H5B    'Startmenütaste
VK_CONTEXTKEY = &H5D  'Kentextmenü
VK_NUMPAD0 = &H60 'Numpad Taste 0
VK_NUMPAD1 = &H61 'Numpad Taste 1
VK_NUMPAD2 = &H62 'Numpad Taste 2
VK_NUMPAD3 = &H63 'Numpad Taste 3
VK_NUMPAD4 = &H64 'Numpad Taste 4
VK_NUMPAD5 = &H65 'Numpad Taste 5
VK_NUMPAD6 = &H66 'Numpad Taste 6
VK_NUMPAD7 = &H67 'Numpad Taste 7
VK_NUMPAD8 = &H68 'Numpad Taste 8
VK_NUMPAD9 = &H69 'Numpad Taste 9
VK_MULTIPLY = &H6A    'Numpad Multiplikations Taste (*)
VK_ADD = &H6B 'Numpad Additions Taste (+)
VK_SUBTRACT = &H6D    'Numpad Subtrations Taste (-)
VK_DECIMAL = &H6E 'Numpad Komma Taste (,)
VK_DIVIDE = &H6F  'Numpad Devidierungs Taste (/)
VK_F1 = &H70  'F1 Taste
VK_F2 = &H71  'F2 Taste
VK_F3 = &H72  'F3 Taste
VK_F4 = &H73  'F4 Taste
VK_F5 = &H74  'F5 Taste
VK_F6 = &H75  'F6 Taste
VK_F7 = &H76  'F7 Taste
VK_F8 = &H77  'F8 Taste
VK_F9 = &H78  'F9 Taste
VK_F10 = &H79 'F10 Taste
VK_F11 = &H7A 'F11 Taste
VK_F12 = &H7B 'F12 Taste
VK_F13 = &H7C 'F13 Taste
VK_F14 = &H7D 'F14 Taste
VK_F15 = &H7E 'F15 Taste
VK_F16 = &H7F 'F16 Taste
VK_F17 = &H80 'F17 Taste
VK_F18 = &H81 'F18 Taste
VK_F19 = &H82 'F19 Taste
VK_F20 = &H83 'F20 Taste
VK_F21 = &H84 'F21 Taste
VK_F22 = &H85 'F22 Taste
VK_F23 = &H86 'F23 Taste
VK_F24 = &H87 'F24 Taste
VK_NUMLOCK = &H90 'Numlock Taste
VK_OEM_SCROLL = &H91  'Scroll Lock
VK_LSHIFT = &HA0  'Linke Shift-Taste
VK_RSHIFT = &HA1  'Rechte Shift-Taste
VK_LCONTROL = &HA2    'Linke STRG-Taste
VK_RCONTROL = &HA3    'Rechte STRG-Taste
VK_LMENU = &HA4   'Linke ALT-Taste
VK_RMENU = &HA5   'Rechte ALT-Taste
VK_OEM_1 = &HBA   '";"-Taste
VK_OEM_PLUS = &HBB    '"
VK_OEM_COMMA = &HBC   '","-Taste
VK_OEM_MINUS = &HBD   '"-"-Taste
VK_OEM_PERIOD = &HBE  '"."-taste
VK_OEM_2 = &HBF   '"/"-Taste
VK_OEM_3 = &HC0   '"`"-Taste
VK_OEM_4 = &HDB   '"["-Taste
VK_OEM_5 = &HDC   '"\"-Taste
VK_OEM_6 = &HDD   '"]"-Taste
VK_OEM_7 = &HDE   '"
VK_ICO_F17 = &HE0 'F17 einer Olivette Tastatur (Intern)
VK_ICO_F18 = &HE1 'F18 einer Olivette Tastatur (Intern)
VK_OEM102 = &HE2  '"

Anzeige
AW: Unicodezeichen mit Irfanview als bmp speichern
17.01.2011 14:28:43
Tino
Hallo,
wenn es funktioniert ist es ja gut.
Kannst den Code ja über Nacht laufen lassen ;-)
Gruß Tino
AW: Unicodezeichen mit Irfanview als bmp speichern
17.01.2011 19:27:24
Reinhard
Hallo Tino,
du hast Recht, ist ja nur einmalig, dauert halt 8 Stunden, na und.
Was problematisch werden kann, ich hab ja schon mit Sleep 100, Sleep 200 probiert.
Aus mir unklaren Gründen klappt dann der Code bei den meisten Zeichen, bei einigen wenigen nicht.
Dann kommt da eine Fehlermeldung von Irfanview, irgendwas mit kann mit Strg v nix anfangen.
Gut, das habe ich ja durch Tests herausgefunden und Sleep wieder auf 300 gesetzt.
Irgendwie alles nix schlimmes, bin ja sehr zufrieden daß ich überhaupt eine Lösung habe.
Also probiere ich es heute nacht mit Sleep 300, wenn das schiefgeht halt Sleep 400 nächste Nacht.
Wie auch immer, bin sehr zufrieden, der Rest sind Peanuts.
Gruß
Reinhard
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige