Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBA Dokumentenschutz aufheben Suchen Ersetzen Dokument schützen

Frage Microsoft Microsoft Office

Mitglied: cico77778

cico77778 (Level 1) - Jetzt verbinden

18.11.2010, aktualisiert 23:35 Uhr, 12030 Aufrufe, 8 Kommentare

Hi,

das Problem gab es 99% noch nicht im deutschsprachigen Internet bzw. wurde gelöst. Habe alles durchsucht.

Also folgendes:

1.) Mehrere Dateien in Unterverzeichnissen
2.) Dokumentenschutz aufheben (EDIT: Es ist kein Passwort vergeben)
3.) Suchen / Ersetzen (z.B. yyyyyyy mit XXXXXXX ersetzen)
4.) Dokument schützen (aber nur die Dokumente, die auch einen Dokumentenschutz hatten)
5.) Speichern unter Word 97 bis 2003 .doc

Wie gesagt, bin schon seit ein paar Tagen am Suchen und konnte nichts finden. Mittlerweile bin ich der Meinung dass das gar nicht geht... Naja, vielleicht gibt es ja einen Profi der das hibekommt. Habe Office 2007 und 2003 zur Verfügung

Vielen Dank im Voraus
Gruß Mo
Mitglied: Biber
18.11.2010 um 20:28 Uhr
Moin cico77778,

willkommen im Forum.

Eines versteh ich nicht ganz - wenn du tagelang "am Suchen" warst, dann musst du doch zumindest Teil-Lösungen gefunden haben.
Oder eine Idee, ob du es mit mit VBA/word-Makros angehen willst oder als VBS-Schnipsel.
Wenn du aus welchen Gründen auch immer deine bereits vorhandenen Ansätze nicht mit einbringen magst, dann benenne doch die Punkte, an denen es jetzt klemmt.

Hast du denn die Suchen-Ersetzen-Mimik für ein Dokument fertig und die Dokumentenschutz-Deaktivier/Wieder-Aktiviermimik für ein Einzeldokument auch und es fehlt noch das rekursive Abklappern der Unterverzeichnisse oder umgekehrt...?

Oder hast du noch nie im Leben einen Makro aus der Nähe gesehen, aber gerade heute mittag nach dem Essen spontan die Idee gehabt, dir einen zum Copy&Pasten zu bestellen?

Oder wie sind die Rahmenbedingungen?

Grüße
Biber
Bitte warten ..
Mitglied: TheEternalPhenom
18.11.2010 um 20:38 Uhr
Hallo cico77778,
ein Willkommen auch von mir.

Mal abgesehen von erstens sollte alles machbar sein sofern du keine utopischen Vorstellungen hast. Bei erstens muss ich sagen hab ich im mom keinen Plan was du damit meinst.
Es wäre blos sehr gut, wenn du uns wie Biber schon sagte mehr Infos geben könntest.

Wird zum Beispiel das Dokument nach einem bestimmten Wort durchsucht oder nach variablen Wörtern. Und ähnliche Dinge wären sehr interessant zu wissen, es würde eine Menge Zeit ersparen.

Zum Thema Internet suche kann ich nur sagen, dass zwei nicht gerade unbekannte Suchmaschinen herliche Ergebnise für alle gennanten Bereiche ausspucken. Mit etwas geschick kann man dann ohne Probleme alles zu einem Makro zusammen basteln.

Gruß

duffman521
Bitte warten ..
Mitglied: cico77778
18.11.2010 um 21:00 Uhr
Hi,

ich habe so gut wie keine Ahnung von Makros. Im netz habe ich "nur" Schnipsel gefunden, aber zusammensetzen kann ich sie nicht.
Da gibt es ettliche Beispiele. Mal funktioniert eins mit einer Datei, aber nicht über ein Verzeichnis mit Unterverzeichnissen. Meine Punkte 4 und 5 habe ich nirgends gefunden wie ich sie brauche. Es ist halt nicht so ohne, wenn man keine Zeile im Code versteht.
Vielleicht bringt der folgende Code Abhilfe.

Gruß Mo

Z.B.
01.
Sub FormularschutzDynamischAufheben() 
02.
     If ActiveDocument.ProtectionType >= 0 Then 
03.
       ActiveDocument.Unprotect 
04.
   Else 
05.
       ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True 
06.
      End If 
07.
    End Sub 
08.
_________________________________________________________________ 
09.
 
10.
' **** Anpassbare Werte **** 
11.
Private Const Verzeichnis = "C:Eigene Dateien" 
12.
Private Const Filter = "*.doc" 
13.
Private Const UnterverzeichnisseDurchsuchen = 0 
14.
Private Const Suche = "XXXXXXXXX" 
15.
Private Const ErsetzeMit = "YYYYYYYYYYY" 
16.
' **** Ende der Anpassung **** 
17.
 
18.
Private Teil As Range 
19.
 
20.
Sub SuchenErsetzenGanzesVerzeichnis() 
21.
  Dim oDoc As Document 
22.
  tmp = UnterverzeichnisseDurchsuchen 
23.
  If tmp = 1 Then UVD = True Else UVD = False 
24.
  If Documents.Count > 0 Then Dokument = ActiveDocument.FullName 
25.
  With Application.FileSearch 
26.
    .LookIn = Verzeichnis 
27.
    .FileName = Filter 
28.
    .SearchSubFolders = UVD 
29.
    .Execute SortBy:=msoSortByFileName 
30.
    Anzahl = .FoundFiles.Count 
31.
    Application.ScreenUpdating = False 
32.
    For Each aDok In .FoundFiles 
33.
      If aDok <> Dokument Then 
34.
        On Error Resume Next 
35.
        Documents.Open aDok 
36.
        Fehler = Err.Number 
37.
        On Error GoTo 0 
38.
        If Fehler = 0 Then 
39.
          Set oDoc = ActiveDocument 
40.
          If oDoc.ProtectionType = wdNoProtection Then 
41.
            If oDoc.ReadOnly = False Then 
42.
              StatusBar = "Durchsuche Dokument " + aDok + "." 
43.
              DoEvents 
44.
              SuchenErsetzenSchleife 
45.
              oDoc.Close SaveChanges:=wdSaveChanges 
46.
            Else 
47.
              oDoc.Close SaveChanges:=wdDoNotSaveChanges 
48.
            End If 
49.
            Else 
50.
            oDoc.Close SaveChanges:=wdDoNotSaveChanges 
51.
          End If 
52.
        End If 
53.
      End If 
54.
    Next 
55.
  End With 
56.
  StatusBar = CStr(Anzahl) + " Dokumente durchsucht." 
57.
  DoEvents 
58.
  Application.ScreenUpdating = True 
59.
End Sub 
60.
 
61.
Private Sub SuchenErsetzenSchleife() 
62.
  Application.ScreenUpdating = False 
63.
  For Each Teil In ActiveDocument.StoryRanges 
64.
    SuchenErsetzen 
65.
    While Not (Teil.NextStoryRange Is Nothing) 
66.
      Set Teil = Teil.NextStoryRange 
67.
      SuchenErsetzen 
68.
    Wend 
69.
  Next 
70.
End Sub 
71.
 
72.
Private Sub SuchenErsetzen() 
73.
  Teil.Find.Execute FindText:=Suche, _ 
74.
    ReplaceWith:=ErsetzeMit, _ 
75.
    MatchCase:=GrossUndKleinSchreibung, _ 
76.
    MatchWholeWord:=GanzesWort, _ 
77.
    MatchWildcards:=Jocker, _ 
78.
    Replace:=wdReplaceAll 
79.
End Sub 
80.
 
81.
Sub SpeichernAufruf() 
82.
 
83.
    With Dialogs(wdDialogFileSaveAs) 
84.
 
85.
    End With 
86.
 
87.
End Sub

[Edit Biber] Codeformatierung [/Edit]
Bitte warten ..
Mitglied: cico77778
18.11.2010 um 23:22 Uhr
Zitat von TheEternalPhenom:
Hallo cico77778,
ein Willkommen auch von mir.

Mal abgesehen von erstens sollte alles machbar sein sofern du keine utopischen Vorstellungen hast. Bei erstens muss ich sagen hab
ich im mom keinen Plan was du damit meinst.
Es wäre blos sehr gut, wenn du uns wie Biber schon sagte mehr Infos geben könntest.

Wird zum Beispiel das Dokument nach einem bestimmten Wort durchsucht oder nach variablen Wörtern. Und ähnliche Dinge
wären sehr interessant zu wissen, es würde eine Menge Zeit ersparen.

Zum Thema Internet suche kann ich nur sagen, dass zwei nicht gerade unbekannte Suchmaschinen herliche Ergebnise für alle
gennanten Bereiche ausspucken. Mit etwas geschick kann man dann ohne Probleme alles zu einem Makro zusammen basteln.

Gruß

duffman521

Hi,
habe eben erst Deine Nachricht gelesen. Du fragst nach dem Punkt 1.). Damit meine ich, dass in mehreren Dateien mit Unterverzeichnissen gesucht werden soll.

In der Suche sollen Wörter mit Wörtern ersetzt werden. also z.b. xxxxxx, yyyyyyy mit aaaaaaa, bbbbbbb.

Ich kam jetzt auch auf eine andere Idee wie man die Problematik aus Punkt 4.) (Dokument schützen (aber nur die Dokumente, die auch einen Dokumentenschutz hatten). Es wäre vielleicht mit 4 Makros möglich. Habe ein paar Makros per aufzeichnen erstellt. Ich weis nicht ob sie brauchbar sind. Folgende Schritte wären dann nötig:

1.) Erstes Makro hebt den Dokumentenschutz auf.
01.
Sub Dokumentenschutz_aufheben() 
02.
    Documents.Open FileName:="XXXXX.doc", ConfirmConversions:= _ 
03.
        False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _ 
04.
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _ 
05.
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="" 
06.
End Sub
2.) Danach versschiebe ich alle neueren/veränderten Dateien samt Verzeichnisbaum in einen anderes Verzeichnis (mit totalcommander und Plugin Treecopy). Dadurch könnten die doc´s ohne Schutz und mit Schutz getrennt behandelt werden.

3.) In beiden Verzeichnis das Makro Suchen/Ersetzen starten:
01.
Sub suchen_ersetzen() 
02.
    Selection.Find.ClearFormatting 
03.
    Selection.Find.Replacement.ClearFormatting 
04.
    With Selection.Find 
05.
        .Text = "xxxxx" 
06.
        .Replacement.Text = "yyyyy" 
07.
        .Forward = True 
08.
        .Wrap = wdFindContinue 
09.
        .Format = False 
10.
        .MatchCase = False 
11.
        .MatchWholeWord = False 
12.
        .MatchWildcards = False 
13.
        .MatchSoundsLike = False 
14.
        .MatchAllWordForms = False 
15.
    End With 
16.
    Selection.Find.Execute Replace:=wdReplaceAll 
17.
End Sub
4.) Nur in das Verzeichnis ein neues Makro starten wo die Dokumente sind, die Dokumentenschutz hatten, damit der Dokumentenschutz wieder eingebaut wird. (dieses Makro konnte ich bei mir nicht erstellen, weil die Aufzeichnung jedes mal bei klick auf Dokument schützen abgebrochen ist)

5.) Diese Dokumente dann wieder in das Anfangsverzeichnis kopieren

6.) Speichern unter... hier ist das Problem, dass die Datei überschrieben werden muss, aber als Word 97-2003. Es muss also kein Zielordner angegeben werden und Dateiname geändert werden:
01.
Sub speichern_unter_97_2003() 
02.
    ChangeFileOpenDirectory "D:	est" 
03.
    ActiveDocument.SaveAs FileName:="XXXXX.doc", FileFormat:=100, _ 
04.
        LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ 
05.
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ 
06.
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ 
07.
        False 
08.
End Sub
Das ist vielleicht gar keine Schlechte Idee oder?
Jetzt sind eigentlich nur noch Fragen offen, wie man ein komplettes Verzeichnis mit Unterordnung anspricht, und wie man wieder Dokumente schützt (aber ohne Passwort).

Hoffe das jetzt verständlicher ist was ich meine.

Gruß Mo
Bitte warten ..
Mitglied: cico77778
19.11.2010 um 10:35 Uhr
Hi,

also ich habe jetzt weiter ausprobiert im Word 2007. Gestern der Code war vom Word 2003. im W2007 hat das mit dem Dokumentenschutz geklappt. Am Ende ist noch ein Code, der mehrere Dateien gleichzeitig abarbeitet. Das klappt aber noch nicht richtig. Vielleicht hilft das ja weiter:

01.
Sub Dokumentenschutz_aufheben_word2003() 
02.
    Documents.Open FileName:="XXXXX.doc", ConfirmConversions:= _ 
03.
        False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _ 
04.
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _ 
05.
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="" 
06.
End Sub
01.
Sub Dokumentenschutz_aufheben_word2007() 
02.
    ActiveDocument.Unprotect 
03.
End Sub
01.
Sub suchen_ersetzen_word2003_2007_identisch() 
02.
    Selection.Find.ClearFormatting 
03.
    Selection.Find.Replacement.ClearFormatting 
04.
    With Selection.Find 
05.
        .Text = "xxxxx" 
06.
        .Replacement.Text = "yyyyy" 
07.
        .Forward = True 
08.
        .Wrap = wdFindContinue 
09.
        .Format = False 
10.
        .MatchCase = False 
11.
        .MatchWholeWord = False 
12.
        .MatchWildcards = False 
13.
        .MatchSoundsLike = False 
14.
        .MatchAllWordForms = False 
15.
    End With 
16.
    Selection.Find.Execute Replace:=wdReplaceAll 
17.
End Sub
01.
Sub Dokument_schützen_word2007() 
02.
    ActiveDocument.Protect Password:="", NoReset:=False, Type:= _ 
03.
        wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False 
04.
End Sub
01.
Sub speichern_unter_97_2003_inW2003() 
02.
    ChangeFileOpenDirectory "D:	est" 
03.
    ActiveDocument.SaveAs FileName:="XXXXX.doc", FileFormat:=100, _ 
04.
        LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ 
05.
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ 
06.
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ 
07.
        False 
08.
End Sub
01.
Sub speichern_unter_97_2003_inW2007() 
02.
    ActiveDocument.SaveAs FileName:="Dok2.doc", FileFormat:=wdFormatDocument, _ 
03.
        LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ 
04.
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ 
05.
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ 
06.
        False 
07.
End Sub
Verzeichnisübergreifend formatieren (Das habe ich aus einem Excel-Makro)
01.
Sub Alle_Dateien_formatieren() 
02.
Dim objFileSystemObject As Object 
03.
Dim objAnzDateien As Object 
04.
Dim objDatei As Object 
05.
 
06.
Set objFileSystemObject = CreateObject("Scripting.FileSystemObject") 
07.
Set objAnzDateien = objFileSystemObject.getfolder("C:Eigene Dateien") 
08.
 
09.
For Each objDatei In objAnzDateien.Files 
10.
   If Right(objDatei.Name, 4) = ".doc" Then 
11.
         
12.
        With  
13.
 
14.
Hier kommen jetzt die eigentlichen Befehle von oben. 
15.
 
16.
        End With 
17.
   End If 
18.
Next 
19.
 
20.
Set objFileSystemObject = Nothing 
21.
Set objAnzDateien = Nothing 
22.
End Sub
Bitte warten ..
Mitglied: 76109
21.11.2010 um 19:39 Uhr
Hallo Mo!

Mit Word-VBA beschäftige ich mich eher weniger, aber die Punkte 1-5 sollten mit diesem Code funktionieren:
01.
Option Explicit 
02.
 
03.
Const StartFolder = "E:\Test\Docs\"  'Dialog-Startverzeichnis 
04.
 
05.
Const SaveFormat = 107  'DateiFormat W97-W2002 (W97-W2003 = ???) 
06.
 
07.
Const Inp1 = "Bitte Such- und Ersetzenbegriffe eingeben:" 
08.
 
09.
Const Mld1 = "Suchen und Ersetzen..." 
10.
 
11.
Const Msg1 = "Bei dieser Aktion dürfen keine Dokumente geöffnet sein!" 
12.
Const Msg2 = "Der Vorgang wurde wegen fehlender Eingabe abgebrochen!" 
13.
Const Msg3 = "Die Bearbeitung der Dokumente ist abgeschlossen." 
14.
Const Msg4 = "Die Datei: %1" & vbCr & "ist schreibgeschützt und kann nicht bearbeitet werden!" 
15.
 
16.
Dim Fso As Object, ReplaceList As Variant 
17.
 
18.
Sub SearchAndReplace() 
19.
    Dim Path As String 
20.
     
21.
    If Documents.Count Then MsgBox Msg1, vbExclamation, "Fehler":  Exit Sub 
22.
     
23.
    With Application.FileDialog(msoFileDialogFolderPicker) 
24.
        .Title = "Verzeichnis auswählen..." 
25.
        .InitialFileName = StartFolder 
26.
         If .Show = False Then Exit Sub 
27.
         Path = .SelectedItems(1) 
28.
    End With 
29.
     
30.
    ReplaceList = Split(InputBox(Inp1, Mld1, "Suchen1,Ersetzen1;Suchen2,Ersetzen2"), ";") 
31.
     
32.
    If UBound(ReplaceList) < 0 Then MsgBox Msg2, vbInformation, Mld1:  Exit Sub 
33.
     
34.
    Set Fso = CreateObject("Scripting.FileSystemObject") 
35.
     
36.
    Call SearchDocFiles(Fso.GetFolder(Path)) 
37.
     
38.
    MsgBox Msg3, vbInformation, Mld1 
39.
End Sub 
40.
 
41.
Private Sub SearchDocFiles(ByRef Folder) 
42.
    Dim File As Object, SubFolder As Object 
43.
     
44.
    For Each File In Folder.Files 
45.
        If LCase(Fso.GetExtensionName(File.Name)) = "doc" Then 
46.
            Call EditAndSaveDocFile(File.Path) 
47.
        End If 
48.
    Next 
49.
     
50.
    For Each SubFolder In Folder.SubFolders 
51.
        Call SearchDocFiles(SubFolder) 
52.
    Next 
53.
End Sub 
54.
 
55.
Private Sub EditAndSaveDocFile(ByRef File) 
56.
    Dim ProtectType As Long, Text As Variant, i As Integer 
57.
 
58.
    With Documents.Open(File) 
59.
        If .ReadOnly = True Then 
60.
            MsgBox Replace(Msg4, "%1", .FullName), vbExclamation, "Fehler":  .Close:  Exit Sub 
61.
        End If 
62.
         
63.
        ProtectType = .ProtectionType 
64.
         
65.
        If ProtectType <> wdNoProtection Then .Unprotect 
66.
         
67.
        For i = 0 To UBound(ReplaceList) 
68.
            Text = Split(ReplaceList(i), ",") 
69.
            If UBound(Text) = 1 Then 
70.
                With .Range(Start:=0, End:=0).Find 
71.
                    .ClearFormatting 
72.
                    .Text = Text(0) 
73.
                    .Replacement.ClearFormatting 
74.
                    .Replacement.Text = Text(1) 
75.
                    .Execute Replace:=wdReplaceAll 
76.
                End With 
77.
            End If 
78.
        Next 
79.
         
80.
        If ProtectType <> wdNoProtection Then .Protect Type:=ProtectType, NoReset:=True 
81.
         
82.
        Application.DisplayAlerts = wdAlertsNone 
83.
       .SaveAs FileName:=File, FileFormat:=SaveFormat, AddToRecentFiles:=False:  .Close 
84.
        Application.DisplayAlerts = wdAlertsAll 
85.
    End With 
86.
End Sub
Schritt1: Alle Dokumente schließen und den Quellcode im VB-Editor in ein Modul kopieren (Normal)
Schritt2: Die Konstante StartFolder entsprechend anpassen
Schritt3: Die Konstante SaveFormat entsprechend anpassen

Ablauf:
1. Wird geprüft, ob Documente geöffnet sind. Wenn ja, wird eine Fehlermeldung ausgegeben und die Aktion abgebrochen.

2. Wird ein Dialog zum auswählen des Start-Ordners angezeigt. Bei Abbruch wird die Aktion abgebrochen.

3. Wird eine Eingabe der Such- und Ersetzenbegriffe gefordert, wobei der Such- und Ersetzenbegriff durch ein Komma getrennt und weitere Such- und Ersetzenbegriffe durch ein Semikolon getrennt werden z.B. "Suchen1,Ersetzen1;Suchen2,Ersetzen2;..." (Beispiel wird per Default angezeigt). Bei Leer oder Abbruch, wird die Aktion abgebrochen.

4. Wird die Word-SearchFile-Funktion durch eine andere Such-Funktion ersetzt, da diese in den neueren Word-Versionen nicht mehr zur Verfügung steht.

5. Sind Dokumente schreibgeschützt, wird eine Fehlermeldung mit Pfad-Angabe der jeweiligen Datei ausgegeben.

6. Ist unerheblich, ob sich Dateien mit/ohne Dokument-Schutz in einem Verzeichnis befinden. Gechützte Dateien werden mit dem gleichen Schutz gespeichert, der beim Öffnen vorhanden war.

Das ganze sollte natürlich erst in einem Test-Verzeichnis getetet werden

Gruß Dieter
Bitte warten ..
Mitglied: aseyfarth
10.08.2016 um 18:08 Uhr
Hallo Dieter (@76109)
funktioniert das auch unter Word 2013?
Ich habe da nämlich auch ein paar Unterordner mit Dateien, die einen Dokumentenschutz haben,
ich bin aber nicht der große Makroheld und traue mir nicht zu, das ohne Unterstützung zu ändern.
Das Programm, mit dem ich arbeite, ist wie gesagt Word 2013, die vorliegenden Dateien sind aber Word 2003 (*.dot) und ganz wenige Word 2007 und neuer (*.dotx) um es genau zu sagen, weil die Branchensoftware stabil die *.dot aufrufen kann, während die *.dotx nicht getestet ist, bzw. nur zum Teil.
Die Dateien, die vorher *.dot waren, müssen hinterher auch wieder *.dot Dateien sein und die *.dotx-Dateien müssen hinterher wieder dotx-Dateien sein.
Grund für die Aktion: wir müssen in gefühlten 300 bis 500 Vorlagen Einträge suchen und z. Teil löschen (Hinweis auf Jobbörse.) und zum Teil ersetzen (Revisionsstand in Fußzeile und Änderung des Brandings (Ein Unternehmen der <Firmenname>. wird a brand of <Firmenname>).
Einen großen Teil können wir zwar in den Filial- und Mandantendaten unserer Branchensoftware anpassen, dann bleibt aber immer noch der Hinweis auf die Jobbörse und die Anpassung des Revisonsstandes in der Word-Fußzeile.

Ich würde gern dein Makro testen, weiß aber nicht, wie ich es anpasse, damit auch das herauskommt, was ich haben will.

Ich habe hier noch einen Code, der zwar ohne Fehler durchläuft, aber den Dokumentenschutz nicht aufhebt.

Sub SetPassword()
Const AktPasswd = "test" 'das Originalpasswort ist mir bekannt
Dim varVerzeichnis As String
Dim strDatei As String
Dim wdDoc As Word.Document

With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False 'evt. rausnehmen, oder kann ich das auf True setzen, damit ich die Ordner auswählen kann, die es betrifft? Eine Kopie der Dateien habe ich gemacht
If .Show = -1 Then
Application.ScreenUpdating = False
varVerzeichnis = .SelectedItems(1)
strDatei = Dir(varVerzeichnis & Application.PathSeparator & "*.doc") 'hier müsste ich dot oder dotx auswählen können
While strDatei <> ""
If LCase(strDatei) <> LCase(ThisDocument.Name) Then
Set wdDoc = Documents.Open(varVerzeichnis & "\" & strDatei)
With wdDoc
If .ProtectionType <> wdNoProtection Then
'wenn geschützt, dann Schutz aufheben
.Unprotect Password:=AktPasswd
End If
.ReadOnlyRecommended = False
.Password = "" 'Passwort zurücksetzen
.WritePassword = "" 'Passwort zurücksetzen. Reicht einmal zurücksetzen?
.RemovePersonalInformation = False
.RemoveDateAndTime = False
.Close savechanges:=wdSaveChanges 'Datei speichern und schließen
End With
End If
strDatei = Dir
Wend
Application.ScreenUpdating = True
End If
End With
MsgBox "Fertig"
Set wdDoc = Nothing
End Sub

Das würde mir bereits genügen, ich habe ein Tool für suchen und ersetzen.

Wenn die Version von dir allerdings auch unter Word 2013 funktionieren würde, wäre das auch nicht schlecht. Ich würde das Makro dann sowieso mehrfach durchlaufen lassen, damit ich alle Bereiche erfasse.

Kann man auch eine Ergebnisliste erstellen, was gefunden wurde, bevor man ersetzt? bzw. kann man wählen, zwischen suchen und ersetzen?

Für eine Hilfe wäre ich sehr dankbar.

Mit freundlichen Grüßen

Andrea
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
Aus VBA E-Mail und HTML Dokument erstellen lassen (3)

Frage von Pago159 zum Thema VB for Applications ...

Microsoft Office
gelöst Excel VBA Letzte Zelle Suchen dann rechnen und Wert in Zelle Übertragen (3)

Frage von Addi089 zum Thema Microsoft Office ...

Batch & Shell
Suchen, Ersetzen und Entfernen von Dateiinhalten auf Textbasis (1)

Frage von DanteManor zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell - In Textdatei suchen und ersetzen (5)

Frage von Raaja89 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...