2017-12-27 46 views
1

Ich muss ein Makro in Word 2010 erstellen, das eine Fußzeile mit dem Dateinamen ohne die Erweiterung hinzufügen wird.Fußzeile mit einem Dateinamen hinzufügen, vor dem Drucken und ohne bestehende Fußzeile/n zu löschen

fand ich einen Code, der den Dateinamen ohne die Erweiterung anzeigt, wenn Sie ein DocVariable-Feld verwenden:

Sub autofilenamefooter() 

Dim fname As String 
fname = ActiveDocument.Name 
fname = Left(fname, InStr(fname, ".") - 1) 

With ActiveDocument 

    .Variables("fname").Value = fname 

    .PrintPreview 
    .ClosePrintPreview 

End With 

End Sub 

Wie kann ich diese verwenden, um einen Makro zu erstellen, dass:

  1. Foots den Dokument mit dem Dateinamen vor dem Drucken (so dass das Feld jedes Mal aktualisiert wird, wenn Sie das Dokument drucken).

  2. Darüber hinaus wird die neue Fußzeile (mit dem Dateinamen) vorhandene Fußzeilen, wenn vorhanden, nicht löschen. Diese Anforderung ist darauf zurückzuführen, dass das Makro auf alle Dokumente in unserem Dokumentenverwaltungssystem angewendet werden sollte und einige der Dokumente bereits Fußzeilen (wie z. B. Firmenpapiere mit Logos) haben, die ich behalten möchte.

Vielen Dank im Voraus!

Antwort

0

Der Code, den Sie haben, benötigt keinen weiteren Code für die Implementierung. Platzieren Sie einfach ein Referenzfeld in der Fußzeile an der Stelle, an der der Dateiname angezeigt werden soll. Wählen Sie auf der Registerkarte Einfügen die Option Schnelle Teile> Felder und fügen Sie ein Feld DocVariable ein. Benennen Sie das Feld "Fname" (oder einen anderen Namen, der mit dem Namen im Code übereinstimmt). Führen Sie dann den folgenden Code aus, während das Dokument, an dem der Dateiname aktiv sein soll, aktiv ist.

Sub SetDocVariable() 
    ' 28 Dec 2017 

    Dim Sp() As String 
    Dim Test As String 
    Dim VarName As String 
    Dim VarValue As String 

    VarName = "Fname" 
    With ActiveDocument 
     Sp = Split(.Name, ".") 
     ReDim Preserve Sp(UBound(Sp) - 1) 
     VarValue = Join(Sp, ".") 
'  VarValue = ""     ' Use this line to show nothing 
     On Error Resume Next 
     Test = .Variables(VarName).Value 
     If Err Then 
      .Variables.Add VarName 
      Err.Clear 
     End If 
     If .Variables(VarName).Value <> VarValue Then .Variables(VarName).Value = VarValue 
    End With 
End Sub 

Dieser Code schreibt den Dateinamen in die Dokumentvariable und fügt die Variable dem Dokument hinzu, falls sie nicht existiert. Das Feld, das Sie eingefügt haben, zeigt nichts an, solange die Variable leer ist. Wenn die Variable nicht existiert, wird ein Fehler angezeigt. Setzen Sie die Dokumentvariable auf "", um keinen Fehler und keinen Dateinamen zu haben.

Ein vielleicht noch besserer Weg wäre die Verwendung einer der integrierten Dokumenteigenschaften (oder einer benutzerdefinierten Dokumenteigenschaft, wenn keine der integrierten Dokumente zu diesem Zweck umgeleitet werden kann) anstelle der Dokumentvariablen mit dem entsprechenden Referenzfeld (Quick Parts> Dokumenteigenschaften). Sie müssten den Dateinamen in das Eigenschaftsdialogfeld eingeben, würden aber überhaupt keinen Code benötigen.

BTW, das Referenzfeld 'FileName' (Quick Parts> Felder> Dateiname) zeigt den Dateinamen in dem gewünschten Format an, aber es kann nicht leer gemacht werden.

Verwandte Themen