| |
Visual-Basic EinsteigerVB: 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. | |
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 | |
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 | |
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 | |
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. | |
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!!! | |
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. | |
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. | |
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 | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|