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
> 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
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...
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
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...
> 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
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
> 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)