Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA-Zugriff auf eine VBProject.Protection geschützte DOT

68 views
Skip to first unread message

Jürgen Grabenkasmp

unread,
Jul 24, 2002, 11:04:31 AM7/24/02
to
Hallo,

ich knobel schon eine ganze Weile an folgendem Problem:

In unserer Firma haben wir der Sachbearbeitung zahlreiche DOTs (>150) zur
Verfügung gestellt. Der Code dieser DOTs ist aus firmeninternen Gründen PW
geschützt. Durch den Umzug in unserer neues Verwaltungsgebäude haben sich
Änderungen im hausinternen Netz (LW usw.) ergeben. Diese Angaben sind in den
DOTs als Konstanten abgelegt.

Wie schaffe ich es nun, aus einem anderen - und damit !! aktiven !!! -
Makro heraus, das PW zum öffnen des Code-Moduls einzugeben.

Die Google-Suche hat mir einige Anregungen (Sendkeys) gegeben, aber ich
scheitere immer daran, dass Sendkeys immer nur das Projekt entschützt, in
dem das Makro abläuft.

If MMSchutz = True Then
SendKeys "%{x}"
SendKeys "{down 4}"
SendKeys "{Enter}"

Kann mir jemand helfen, da ich sonst alle DOTS per Hand ändern muss.

Umgebung Win NT 4, Office 2000

Vielen Dank im voraus

Jürgen Grabenkamp

Thomas Gahler

unread,
Jul 24, 2002, 11:45:53 AM7/24/02
to
Hallo Jürgen

> Die Google-Suche hat mir einige Anregungen (Sendkeys)
gegeben, aber ich
> scheitere immer daran, dass Sendkeys immer nur das Projekt
entschützt, in
> dem das Makro abläuft.

Also musst du in das entsprechende Projekt wechseln ;-)

1.) Nenne dein Projekt, wo du mein Marko rein tust 'ZZZZZ'
(Extras -> Eigenschaften -> Projektname)
2.) Schau zu, dass alle Vorlagen und Addins entladen sind.
3.) Halte nur diese eine Datei offen

Jetzt sind die Bedingungen geschaffen, damit du das Makro
starten kannst.
Alles klar sonst modifizieren.

Sub Demo()
SendKeys "%{c}p" 'Fokus an Projekt-Explorer.
SendKeys "{home}" 'zum obersten Projekt springen

SendKeys "%{x}s" 'Extras, Eigenschaften
SendKeys "^{Tab}" 'Register wechseln

SendKeys "%{A}" 'Ansicht entsperren

SendKeys "%{K}" 'Kennwort löschen
SendKeys "{del}"

SendKeys "%{B}" 'Bestätigung löschen
SendKeys "{del}"

SendKeys "{Enter}" 'Dialog schliessen
End Sub


--

- NT 4.0, SP6 | Office 97, SP2 | VB 6.0

--------------------------------------------------
Greetings from Switzerland

Thomas Gahler
MVP für WordVBA


Jürgen Grabenkasmp

unread,
Jul 24, 2002, 2:08:09 PM7/24/02
to
Hallo Thomas,

vielen Dank für deine schnelle Antwort und Hilfe. Das war genau das, was ich
brauchte.

Ich habe noch folgende Anpassungen vorgenommen:
SendKeys "^{r}" 'Fokus an Projekt-Explorer. ^{r} anstelle %{c}p
ging bei mir nicht, wozu ist das c und p ?


SendKeys "{home}" 'zum obersten Projekt springen

SendKeys "{down 1}" an der ersten
Stelle steht die Normal.dot Hast du eine Idee wie die auch

noch weg geht. Die AddIns krieg ich gelöscht.

SendKeys "%{x}" 'Extras, Eigenschaften Xs geht bei mir auch
nicht, wozu ist das s ?


SendKeys "{down 4}"
SendKeys "{Enter}"

Dann wird erst das PW abgefragt und dann kann ich versuchen auf die Register
zuzugreifen.

Ich denke ich komme jetzt klar. Muß mir nur noch überlegen, wie ich jetzt
alle DOTs einlesen, öffnen,verändern und wieder speichern kann.

Nochmals Dankeschön

Jürgen

"Thomas Gahler" <wurze...@SPAM.bluemail.ch> schrieb im Newsbeitrag
news:uxlvykyMCHA.1744@tkmsftngp10...

Lutz Gentkow

unread,
Jul 25, 2002, 2:58:07 AM7/25/02
to
Hallo Jürgen,

ein Makro zum Bearbeiten aller Dateien eines Verzeichnisses findest Du
im Artikel "How to Find & ReplaceAll on a Batch of Documents in the Same
Folder" unter http://www.mvps.org/word/FAQs/MacrosVBA/BatchFR.htm .

Das hier hilft vielleicht auch:

"Skipping Password-Protected Documents in a Batch Process"
=> http://www.mvps.org/word/FAQs/MacrosVBA/CheckIfPWProtectB4Open.htm

Viele Grüße vom Niederrhein

Lutz, MVP für Word/VBA

Jürgen Grabenkasmp

unread,
Jul 25, 2002, 12:36:05 PM7/25/02
to
Hallo Lutz, hallo Thomas,

vielen Dank für eure Hilfe. Ich glaube damit komme ich erstmal weiter.

Gruß
Jürgen

"Lutz Gentkow" <e...@kohlschein.de> schrieb im Newsbeitrag
news:3D3FA17F...@kohlschein.de...

Thomas Gahler

unread,
Jul 26, 2002, 11:30:14 AM7/26/02
to
Hallo Jürgen

> ging bei mir nicht, wozu ist das c und p ?

Menü 'Ansi*c*ht' Befehl *P"rojekt-Explorer (Kann sien dass
nicht in jeder Wordversion die Hotheys (Alt+...) gleich
sind.

>an der ersten
> Stelle steht die Normal.dot Hast du eine Idee wie die auch
> noch weg geht. Die AddIns krieg ich gelöscht.

Nei die kriegst du nicht weg die ist immer offen. Ist nur
eine Frage wie deine Projekte heissen (bei mir ist es
jeweils 'Projeckt' und 'TemplateProject' für dei Normal.Dot.
Ist ja eigenlich egal, du musst nur sicher stellen, dass die
Position immer die gleich ist. Du kannst ja deine Normal.Dot
auch umbenennen (Extras -> Project-Eigenschaften) und auch
hier ZZZ eintragen.

>Xs geht bei mir auch nicht, wozu ist das s ?

Menü 'E*x*tras'

> SendKeys "{down 4}"
Ich kann dafür deine { Down 4 } nicht nachvollziehen ;-)

> Dann wird erst das PW abgefragt und dann kann ich
versuchen auf die Register
> zuzugreifen.

Aha, du hast nicht ganz das gleiche gemacht wie ich. Mal
sehne wie es jetzt bei mir aussieht.

Aha, jetzt habe ich den Duchblick, da kommt noch eine
Passwort abfrage dazwischen. ich hatte die Datei leider nie
geschlossen.
Also meien Code einwenig anpassen und dann klappt es schon
bald

1.) Datei öffnen,
2.) Im VBA in Ansicht -> Projektexplorer eingeben
3.) Home auf das erste Projekt springen
4.) Im VBA in Extras -> Eigenschaften
5.) Passwort eingeben und OK
6.) Weiterfahren wie gehabt,

> Ich denke ich komme jetzt klar. Muß mir nur noch
überlegen, wie ich jetzt
> alle DOTs einlesen, öffnen,verändern und wieder speichern
kann.

Schau dir die Hilfe zu 'Dir$()'-Funktion an

Jürgen Grabenkasmp

unread,
Jul 30, 2002, 1:29:11 PM7/30/02
to
Hallo,

ich habe immer noch Probleme. Mit folgendem Code öffne ich die Dots und
versuche pro Dot die Sendkeys abzusetzen. Leider "rauscht" VBA durch und
arbeitet nicht die Schritte
1.) Öffnen der DOT
2.) Öffner VBEditor
3.) Verarbeiten Sendkeys
4.) speichern und schließen der Dot
5.) öffnen der nächsten Datei ....

Als Ergebnis werden alle Dots im Verzeichnis geöffnet und anschließend höre
ich noch ein paarmal das "Enter" von Sendkey.

'Code etwas gekürzt
With Application.FileSearch
.NewSearch
.LookIn = Verz
If chkverz.Value = False Then
.SearchSubFolders = False
Else
.SearchSubFolders = True
End If

'Auswerten der Suchbegriffe
If optalle.Value = True Then
.FileType = msoFileTypeAllFiles
suchbegriff = "Alle Dateien"
End If

.Execute
pfad = Verz

AnzahlSätze = .FoundFiles.Count
' On Error Resume Next
For Icounter = 1 To .FoundFiles.Count
Documents.Open (.FoundFiles(Icounter))

ShowVisualBasicEditor = True
SendKeys "^{r}" 'Fokus an Projekt-Explorer.


SendKeys "{home}" 'zum obersten Projekt springen

SendKeys "{down 1}" ' achtung ändern

SendKeys "%{x}" 'Extras, Eigenschaften

' SendKeys "%{x}"


SendKeys "{down 4}"
SendKeys "{Enter}"


'funcSleep (1000)

Next Icounter

End With
Unload Me
Exit Sub
fehler:
MsgBox "Es gibt kein Verzeichnis mit dem Namen " & Verz
Unload Me

End Sub

Habt ihr eine Idee?

Viele Grüße aus dem Norden

Jürgen


Thomas Gahler

unread,
Jul 30, 2002, 2:43:55 PM7/30/02
to
Hallo Jürgen

> ich habe immer noch Probleme. Mit folgendem Code öffne ich
die Dots und
> versuche pro Dot die Sendkeys abzusetzen. Leider "rauscht"
VBA durch und
> arbeitet nicht die Schritte
> 1.) Öffnen der DOT
> 2.) Öffner VBEditor
> 3.) Verarbeiten Sendkeys
> 4.) speichern und schließen der Dot
> 5.) öffnen der nächsten Datei ....
>
> Als Ergebnis werden alle Dots im Verzeichnis geöffnet und
anschließend höre
> ich noch ein paarmal das "Enter" von Sendkey.

Du hast ja ein tolles Makro nur wird dies kaum
funktionieren, denn du willst da ein wenig zuviel in ein
Makro packen. Du musst wissen, dass die Sendkeys-asynchron
'gefeuert' werden. Das bedeutet, es ist dem Makro so
ziemlich egal ist, wenn das Betriebssystem die Datei hergibt
und diese dann endlich mal von Word geöffnet wird. Dein
Makro hat schon lange alle deine Sendkeys losgeschossen,
bevor es was zu tun gibt.

Was ich dir empfehlen kannist folgenendes:
- Mach mal ein Makro welches nur die Sendkey beinhaltet.
Dann öffnest du eine Datei und wechselst in den VBAEditor
und dann hopp. Jetzt sollt es klappen, ansonsten diese
Prozedur verbesseren bis sie läuft.

Jetzt kannst du ja dein schönes Makro verbessern, es sollte
immer schön brav *eine* Datei öffnen, dann eine wenig
warten, dann die Sendkey abfeuern, warten, speichern,
schliessen usw.

Und damit du warten kannst, brauchst du das Sleep-API
'-----------------------------------------------------------
--------------
Private Declare Sub Sleep Lib "kernel32" _
(ByVal dwMilliseconds As Long)

Public Function funcSleep(ByRef LWarteZeit As Long)
Sleep LWarteZeit
End Function
'-----------------------------------------------------------
--------------

--


----------------------------------------------------
Umgebung: Windows XP, Office XP (SP1)

0 new messages