Hallo zusammen,
ich möchte gerne in ein Word Dokument unser Firmenlogo einfügen.
Grundsätzlich ist das eigentlich auch kein Problem. Jetzt kommt aber der Knackpunkt: Es gibt auch Dokumente, die der Benutzer selbst erstellen kann bzw. aus vorhanden Möglichkeiten selbst zusammenstellen kann. Aktuell habe ich ein Brief, da ist an dem ersten Zeichen ein Positionsrahmen angedockt. Wenn ich jetzt an den Anfang des Dokumentes gehe und mein Makro ausführe, dann wird das Logo innerhalb des Rahmens eingefügt und ist aufgrund seiner Positionsdaten nicht mehr sichtbar.
Ich füge einmal ein Screenshot der jetzigen Situation ein (Bild1). Hinter den schwarzen Stellen sind die grauen Textformularfelder versteckt bzw. die Absendeadresse (die in der Kopfzeile liegt).
(Der Code ist natürlich in Word, habe hier nur wegen der besseren Darstellung die VB.Net Darstellung genommen).
Habt Ihr vielleicht eine Lösung für mein Problem?
Wie kann ich z. Bsp. die zweite Zeile, erster Buchstabe ansteuern? Dann könnte ich damit versuchen, das Logo an die zweite Zeile zu binden. Oder kann man auch Grafiken ohne Bindung an eine Bestimmt Zeile einfügen?
Bin mal auf die Antworten gespannt?
Vielen Dank
Volker
ich möchte gerne in ein Word Dokument unser Firmenlogo einfügen.
Grundsätzlich ist das eigentlich auch kein Problem. Jetzt kommt aber der Knackpunkt: Es gibt auch Dokumente, die der Benutzer selbst erstellen kann bzw. aus vorhanden Möglichkeiten selbst zusammenstellen kann. Aktuell habe ich ein Brief, da ist an dem ersten Zeichen ein Positionsrahmen angedockt. Wenn ich jetzt an den Anfang des Dokumentes gehe und mein Makro ausführe, dann wird das Logo innerhalb des Rahmens eingefügt und ist aufgrund seiner Positionsdaten nicht mehr sichtbar.
Ich füge einmal ein Screenshot der jetzigen Situation ein (Bild1). Hinter den schwarzen Stellen sind die grauen Textformularfelder versteckt bzw. die Absendeadresse (die in der Kopfzeile liegt).
Visual Basic-Quellcode
- Sub Logo_einfügen()
- Const dlgSchliessen As Integer = -2
- Const dlgOK As Integer = -1
- Const dlgAbbrechen As Integer = 0
- Dim doc As Word.Document
- Dim shp As Word.Shape
- Dim dlg As Word.Dialog
- Dim bild As InlineShape
- Dim intButton As Integer
- Dim strGrafikdatei As String
- Call Schreibschutz_Ein_Aus(Aus)
- ' Aktualisierungsanzeige ausschalten
- Application.ScreenUpdating = False
- Call Grafiken_Löschen("Logo")
- strGrafikdatei = "C:\Logo.jpg"
- 'Grafik im Dokument einfügen
- 'If intButton = dlgOK Then
- Set doc = ActiveDocument
- With doc
- Set shp = .Shapes.AddPicture(FileName:=strGrafikdatei, Anchor:=doc.Paragraphs(1).Range)
- With shp
- 'Verankern
- .LockAnchor = True
- 'Seitenverhältnis fixieren
- .LockAspectRatio = msoTrue
- 'Ausrichtung am Seitenrand
- .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
- .RelativeVerticalPosition = wdRelativeVerticalPositionPage
- 'Obere Linke Ecke
- .Left = CentimetersToPoints(6.7)
- .Top = CentimetersToPoints(1.3)
- .Height = CentimetersToPoints(2.1)
- .Width = CentimetersToPoints(3.2)
- 'Hinter den Text setzen
- .ZOrder msoBringInFrontOfText ' msoSendBehindText
- .name = "Logo" & Replace(Time, ":", "")
- End With
- End With
- 'End If
- DoEvents
- ' Aktualisierungsanzeige ausschalten
- Application.ScreenUpdating = True
- Call Schreibschutz_Ein_Aus(Ein)
- End Sub
- Sub Schreibschutz_Ein_Aus(Optional Status As SchreibschutzStatus_ENUM = 0)
- Select Case Status
- Case 0 '"Umschalten"
- If ActiveDocument.ProtectionType <> wdNoProtection Then
- Call Abschnitt_Schützen(False)
- ActiveDocument.Unprotect
- Geschützt = 1
- Else
- If ActiveDocument.Bookmarks.Exists("NichtSchützen") = False Then
- Selection.EndKey Unit:=wdStory ' Ende des Dokumentens
- Selection.HomeKey Unit:=wdStory ' Anfang des Dokumentes
- Call Abschnitt_Schützen(True)
- ActiveDocument.Protect wdAllowOnlyFormFields, NoReset:=True
- End If
- End If
- Case 1 ' Aus
- If ActiveDocument.ProtectionType <> wdNoProtection Then
- On Error Resume Next
- Call Abschnitt_Schützen(False)
- ActiveDocument.Unprotect
- On Error GoTo 0
- Geschützt = 1
- End If
- Case 2 ' Ein
- If ActiveDocument.Bookmarks.Exists("NichtSchützen") = False Then
- Selection.EndKey Unit:=wdStory ' Ende des Dokumentens
- Selection.HomeKey Unit:=wdStory ' Anfang des Dokumentes
- If ActiveDocument.ProtectionType <> 2 Then
- On Error Resume Next
- Call Abschnitt_Schützen(True)
- ActiveDocument.Protect wdAllowOnlyFormFields, NoReset:=True
- On Error GoTo 0
- End If
- End If
- End Select
- End Sub
- Public Function Grafiken_Löschen(Welche As String)
- Select Case Welche
- Case "Es_Schreibt_Ihnen"
- On Error Resume Next
- For z = 1 To ActiveDocument.Shapes.count
- If InStr(1, ActiveDocument.Shapes(z).name, "Logo") > 0 Or InStr(1, ActiveDocument.Shapes(z).name, "Unterschrift") > 0 Then
- Else
- ActiveDocument.Shapes(z).Select
- ActiveDocument.Shapes(z).Delete
- End If
- Next z
- For z = 1 To ActiveDocument.Frames.count
- ActiveDocument.Frames(z).Select ' Frame markieren
- ActiveDocument.Frames(z).Delete ' und löschen (aber nur der Rahmen)
- Selection.Delete Unit:=wdCharacter, count:=1 ' daher Inhalt des Frames auch löschen
- Next z
- On Error GoTo 0
- Case "Es_Schreibt_Ihnen_Kundenservice"
- On Error Resume Next
- For z = 1 To ActiveDocument.Shapes.count
- If InStr(1, ActiveDocument.Shapes(z).name, "Logo") > 0 Or InStr(1, ActiveDocument.Shapes(z).name, "Unterschrift") > 0 Then
- Else
- ActiveDocument.Shapes(z).Select
- ActiveDocument.Shapes(z).Delete
- End If
- Next z
- For z = 1 To ActiveDocument.Frames.count
- ActiveDocument.Frames(z).Select ' Frame markieren
- ActiveDocument.Frames(z).Delete ' und löschen (aber nur der Rahmen)
- Selection.Delete Unit:=wdCharacter, count:=1 ' daher Inhalt des Frames auch löschen
- Next z
- On Error GoTo 0
- Case "Barcode_2_of_5_Interleaved"
- On Error Resume Next
- For z = 1 To ActiveDocument.Shapes.count
- If InStr(1, ActiveDocument.Shapes(z).name, "Logo") > 0 Or InStr(1, ActiveDocument.Shapes(z).name, "Unterschrift") > 0 Then
- Else
- ActiveDocument.Shapes(z).Select
- ActiveDocument.Shapes(z).Delete
- End If
- Next z
- For z = 1 To ActiveDocument.Frames.count
- ActiveDocument.Frames(z).Select ' Frame markieren
- ActiveDocument.Frames(z).Delete ' und löschen (aber nur der Rahmen)
- Selection.Delete Unit:=wdCharacter, count:=1 ' daher Inhalt des Frames auch löschen
- Next z
- On Error GoTo 0
- Case "Logo"
- On Error Resume Next
- For z = 1 To ActiveDocument.Shapes.count
- ' MsgBox z & " " & ActiveDocument.Shapes(z).Name
- If InStr(1, ActiveDocument.Shapes(z).name, "Logo") > 0 Then
- ActiveDocument.Shapes(z).Select
- ActiveDocument.Shapes(z).Delete
- End If
- Next z
- On Error GoTo 0
- Case "Unterschrift"
- On Error Resume Next
- For z = 1 To ActiveDocument.Shapes.count
- If InStr(1, ActiveDocument.Shapes(z).name, "Unterschrift") > 0 Then
- ActiveDocument.Shapes(z).Select
- ActiveDocument.Shapes(z).Delete
- End If
- Next z
- On Error GoTo 0
- End Select
- End Function
(Der Code ist natürlich in Word, habe hier nur wegen der besseren Darstellung die VB.Net Darstellung genommen).
Habt Ihr vielleicht eine Lösung für mein Problem?
Wie kann ich z. Bsp. die zweite Zeile, erster Buchstabe ansteuern? Dann könnte ich damit versuchen, das Logo an die zweite Zeile zu binden. Oder kann man auch Grafiken ohne Bindung an eine Bestimmt Zeile einfügen?
Bin mal auf die Antworten gespannt?
Vielen Dank
Volker
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()