vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
VB: Word Templates umziehen 
Autor: chris_lalala
Datum: 02.07.08 15:42

Hallo ers ma,

da ich der wahnsinns programierer bin brauch ich eure hilfe!

wir haben fast alle word dateien mit einer vorlage erstellt hat.
diese vorlagen liegen auf serverA.

ServerA gibt es aber nicht mehr! die vorlagen liegen jetzt auf serverB.

jetzt brauch ich ein makro welches jede word datei öffnet, reinschaut ob pfad zu serverA angegben ist und diesen mit serverB ersetzt.

ich hab hier auch ein skript gefunden welches die dateien öffnet und den neuen template pfad reinschreibt. jedoch gibt es unterverzeichnisse bei serverA und serverB.

mein riesiger programierverstand sagt mir wie ich vorgehen muss:
schneide die zeichen "\\serverA\" ab und ersetze sie mit "\\serverB\"

wie ich das umsetzte ist mir allerdings nicht so ganz klar.

ich zähle die zeichen von "\\serverA\" schneide diese ab und ersetze das.
aber wie geht das in VB syntax??


hier das bisherige skript:

  Sub AlleDateienimVerzeichnisAendern()
  ' Allen Dateien eines Verzeichnisses eine andere Dokumentvorlage zuweisen
 
  With Application.FileSearch
    .NewSearch
    .FileName = "*.doc"
    .LookIn = "\\blablab\"
    .SearchSubFolders = True
    If .Execute() > 0 Then
      ReDim strdateien(.FoundFiles.Count)
      ReDim strZugehOrdner(.FoundFiles.Count)
 
      'Durchläuft alle Dateien, die in dem obigen Verzeichnis vorhanden sind.
      For i = 1 To .FoundFiles.Count
 
        strdateien(i) = .FoundFiles(i)
        strZugehOrdner(i) = .FoundFiles(i)
        Do
          strdateien(i) = Right(strdateien(i), (Len(strdateien(i)) - InStr( _
            strdateien(i), "\")))
        Loop While InStr(strdateien(i), "\") > 0
 
        Documents.Open FileName:=strZugehOrdner(i)
        With ActiveDocument
          .AttachedTemplate = "\\ServerB\Templates\Letter.dot" 'ordnet die 
          ' Vorlage "Letter" zu
          .Save 'verhindert, dass Speichernachfrage kommt
          .Close
        End With
 
      Next i
    End If
  End With
End Sub
in einem anderen forum wurde mir geraten, das mit der replace funktion zu lösen.

jedoch nimmt er mir immer die lokale normal.dot datei


ich hoffe ihr habt eine gute lösung für mich denn ich bin sicher nicht der einzigste der soetwas braucht oder?

Beitrag wurde zuletzt am 02.07.08 um 15:43:54 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB: Word Templates umziehen 
Autor: VBMichi
Datum: 02.07.08 16:45

Hallo chris,

die Jungs und Mädels aus dem anderen Forum hatten schon recht.
Du musst mit der Replace-Methode ran.

Öffne jede Word-Datei (mit einer Schleife), lese deren Inhalt in einen String (z.B. strInhalt) ein und lass Replace drüberlaufen:

strInhalt = Replace$(strInhalt, "\\serverA\", "\\serverB\")
Anschließend das File speichern.

Müsste hinhauen!

Viele Grüße,
Michi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB: Word Templates umziehen 
Autor: chris_lalala
Datum: 02.07.08 16:52

ich hab die schleife so gemacht


 If Left(LCase(ActiveDocument.AttachedTemplate.FullName), Len(strServerAlt)) = _
   LCase(strServerAlt) Then
                  With ActiveDocument
                        .AttachedTemplate.FullName = Replace( _
                          .AttachedTemplate.FullName, strServerAlt, _
                          strServerNeu)
                        .Save 'verhindert, dass Speichernachfrage kommt
                        .Close
                  End With
              Else
                  ActiveDocument.Close
das problem hierbei ist aber, dass ActiveDocument.AttachedTemplate.FullName den wert c:\dokumente\blabla\normal.dot

keine ahnung warum
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB: Word Templates umziehen 
Autor: VBMichi
Datum: 02.07.08 17:10

"das problem hierbei ist aber, dass ActiveDocument.AttachedTemplate.FullName den wert c:\dokumente\blabla\normal.dot"

Den Satz verstehe ich von der Grammatik her nicht, da fehlt was.
Erklär nochmal etwas genauer bitte.

Steht in ActiveDocument.AttachedTemplate.FullName nur der Pfad zur .dot-Datei drin?

Viele Grüße,
Michi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB: Word Templates umziehen 
Autor: chris_lalala
Datum: 03.07.08 08:19

sorry war gestern kurz vor feierabend.

was ich sagen wollte ist, das in ActiveDocument.AttachedTemplate.FullName der pfad zur lokalen normal.dot drin steht. das kann aber nicht sein, denn da sollte der pfad \\serverA\templates\blabl.dot drin stehen. wenn ich die datei öffne steht nämlich der pfad \\serverA\templates\blabl.dot drin.

deshalb funktioniert die replace funktion nicht, weil er \\serverA\ nicht findet und dadurch nicht mit \\serverB\ ersetzen kann.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB: Word Templates umziehen 
Autor: chris_lalala
Datum: 03.07.08 09:32

damit es ganz klar wird.

ich möchte diese feld editieren.




statt z.b. \\ServerA\Vorlagen\GL\blablabl\vorlage.dot soll das skript einfach "\\ServerA\Vorlagen\" abschneiden und durch \\ServerB\vorlagen\ ersetzen. ganz ganz wichtig ist das der restliche pfad bestehen bleibt!!!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB: Word Templates umziehen 
Autor: Lisa (NR)
Datum: 06.07.08 22:59

Hallo Chris,

ich habe hier ausführlich geantwortet:

Dokumentenvorlage aus Datei entfernen

Für Deine Schleife kann das nur bedeuten, dass Du eine Abfrage vorschalten musst, in etwa:

    If InStr(1, ActiveDocument.AttachedTemplate.Name, "normal", vbTextCompare) _
      > 0 Then
        ....
Gruß
Lisa

VBA in Word

Beitrag wurde zuletzt am 06.07.08 um 23:02:12 editiert.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB: Word Templates umziehen 
Autor: chris_lalala
Datum: 11.07.08 08:10

das problem war dabei den alten template pfad zu öffnen.

---> das funktioniert so

' Dialog "Tools -> Templates and Addins" öffnen und "Document Template" auslesen
Set dlgTemplate = Dialogs(wdDialogToolsTemplates)
strPath = dlgTemplate.Template
msgbox strPath

wen das ganze skript interessiert:

Sub AlleDateienimVerzeichnisAendern() 
' Allen Dateien eines Verzeichnisses eine andere Dokumentvorlage zuweisen 
 
    'Variablen declaration 
    strServerAlt = "\\SERVERA\" 
    strServerNeu = "\\SERVERB\" 
    strVerzeichnis = "C:\blabla\" 
 
    With Application.FileSearch 
         .NewSearch 
         .FileName = "*.doc" 
         .LookIn = strVerzeichnis 
         .SearchSubFolders = True 
 
        If .Execute() > 0 Then 
            ReDim strDateien(.FoundFiles.Count) 
            ReDim strZugehOrdner(.FoundFiles.Count) 
 
            'Durchläuft alle Dateien, die in dem obigen Verzeichnis vorhanden 
            ' sind. 
            For i = 1 To .FoundFiles.Count 
                strDateien(i) = .FoundFiles(i) 
                strZugehOrdner(i) = .FoundFiles(i) 
 
                Do 
                    strDateien(i) = Right(strDateien(i), (Len(strDateien(i)) - _
                      InStr(strDateien(i), "\"))) 
                Loop While InStr(strDateien(i), "\") > 0 
 
                Documents.Open FileName:=strZugehOrdner(i) 
 
                'Dialog "Tools -> Templates and Addins" öffnen und "Document" & _
                  "Template" auslesen 
                Set dlgTemplate = Dialogs(wdDialogToolsTemplates) 
                strPath = dlgTemplate.Template 
 
 
                If strPath = "Normal" Then 
                    ActiveDocument.Close 
                ElseIf Left(strPath, 3) = "C:\" Then 
                    ActiveDocument.Close 
                ElseIf Left(strPath, 9) = "\\SERVERB" Then 
                    ActiveDocument.Close 
                Else 
                    strPath = Right(strPath, Len(strPath) - Len(strServerAlt)) _
                      'hier wird die angegebene Anzahl der Zeichen 
                    ' abgeschnitten!!!! 
                    strPath = strServerNeu + strPath 
 
 
                    With ActiveDocument 
                         .AttachedTemplate = strPath 
                         .Save 'verhindert, dass Speichernachfrage kommt 
                         .Close 
                    End With 
                End If 
            Next i 
        End If 
    End With 
End Sub


Beitrag wurde zuletzt am 11.07.08 um 08:13:28 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB: Word Templates umziehen 
Autor: joseph
Datum: 22.10.08 22:14

Juhuuu endlich habe ich jemanden gefunden der dieses Problem mit den Vorlagen gelöst hat

ABER

Also ich habe es gestestet und es funzt klasse bis auf...

Es wird ja nun jedes Worddoc geöffnet und denn erst die vorlage geändert.
Da ich aber ca 2000 Docs habe und er jedesmal ca. 40 Sec braucht um zu kapieren das die alte Vorlage nicht mehr da ist und dann erst weiter macht dauert das . . . naja 12 Jahre

Wer hat denn mal eine idee wie mann das abstellen kann.
Kann man das öffnen der alten vorlage nicht irgendwie beim öffnen deaktivieren?

Bitte HILFE
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel