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

Word 2000 Anpassen einer verlinkten Grafik per VBA

Frage Entwicklung VB for Applications

Mitglied: SteffenKuch

SteffenKuch (Level 1) - Jetzt verbinden

09.03.2010 um 10:46 Uhr, 5894 Aufrufe, 14 Kommentare

Hallo!

Ich habe ein VBA-Skript, dass eingefügte Grafiken anpasst und das auch funktioniert.
01.
Sub GrafikEditieren() 
02.
03.
' GrafikEditieren Makro 
04.
' Makro aufgezeichnet am 05.03.2010 von DV 
05.
'Stand: 8.3.2010 
06.
 
07.
    Selection.InlineShapes(1).Fill.Visible = msoFalse 
08.
    Selection.InlineShapes(1).Fill.Transparency = 0# 
09.
    Selection.InlineShapes(1).Line.Weight = 0.75 
10.
    Selection.InlineShapes(1).Line.Transparency = 0# 
11.
    Selection.InlineShapes(1).Line.Visible = msoFalse 
12.
    Selection.InlineShapes(1).LockAspectRatio = msoTrue 
13.
'   Mit .scale... bekomme ich eine Prozentuale Größenveränderung hin. 
14.
    Selection.InlineShapes(1).ScaleHeight = 70 
15.
    Selection.InlineShapes(1).ScaleWidth = 70 
16.
    Selection.InlineShapes(1).PictureFormat.Brightness = 0.5 
17.
    Selection.InlineShapes(1).PictureFormat.Contrast = 0.5 
18.
    Selection.InlineShapes(1).PictureFormat.ColorType = msoPictureAutomatic 
19.
    Selection.InlineShapes(1).PictureFormat.CropLeft = 0# 
20.
    Selection.InlineShapes(1).PictureFormat.CropRight = 0# 
21.
    Selection.InlineShapes(1).PictureFormat.CropTop = 0# 
22.
    Selection.InlineShapes(1).PictureFormat.CropBottom = 0# 
23.
'   In ein 'flexibles' Format bringen 
24.
    Selection.InlineShapes(1).ConvertToShape 
25.
'   Layouttyp festlegen. 
26.
    Selection.ShapeRange.WrapFormat.Type = wdWrapSquare 
27.
'   Nur Umbruch links 
28.
    Selection.ShapeRange.WrapFormat.Side = wdWrapLeft 
29.
'   Abstand links 1 cm, ansonsten 0 cm 
30.
    Selection.ShapeRange.WrapFormat.DistanceLeft = CentimetersToPoints(1) 
31.
    Selection.ShapeRange.WrapFormat.DistanceRight = CentimetersToPoints(0) 
32.
    Selection.ShapeRange.WrapFormat.DistanceTop = CentimetersToPoints(0) 
33.
    Selection.ShapeRange.WrapFormat.DistanceBottom = CentimetersToPoints(0) 
34.
    Selection.ShapeRange.WrapFormat.AllowOverlap = False 
35.
 
36.
End Sub
Der selbe Code funktioniert dann nicht, wenn die Grafik "eingefügt und verknüpft" wird. Ich habe das ein oder andere versucht, aber ich komme nicht weiter.
Hat jemand vielleicht einen Tipp für mich?
Danke!

Gruß
Steffen Kuch
Mitglied: 76109
09.03.2010 um 12:14 Uhr
Hallo Steffen!

Versuchs mal mit diese Zeile am Anfang (Zeile 6):
ActiveDocument.InlineShapes(1).Select

Gruß Dieter
Bitte warten ..
Mitglied: SteffenKuch
09.03.2010 um 12:36 Uhr
Hi!

Danke für den Tipp, aber ich erhalte immer noch bei Zeile 26 die Fehlermeldung "Befehl misslungen".
Ich habe das Makro immer dann gestartet, nachdem ich die Grafik mit der Maus angeklickt hatte. Hätte ich wohl dazuschreiben sollen, sorry.

Gruß
Steffen
Bitte warten ..
Mitglied: 76109
09.03.2010 um 13:54 Uhr
Hallo SteffenKuch!

Also, dass es erst ab Zeile 26 hängen bleibt, ist ja erst mal ein gutes Zeichen. Warum allerdings die Funktionen ab Zeile 26 nicht auf das Object angewendet werden können, kann ich nicht beurteilen. Aber das kannst Du ja per Makroaufzeichnung herausfinden bzw. ob's überhaupt im Document manuell funktioniert...?

Gruß Dieter
Bitte warten ..
Mitglied: SteffenKuch
09.03.2010 um 14:07 Uhr
Hi!

Das, was in dem Makro abläuft habe ich schon zigmal manuell gemacht.
Wie man auch anhand der Kommentare sehen kann, ist das Makro zunächst per Makrorekorder aufgezeichnet.
Ich habe auch schon "eingefügte und verknüpfte" Grafiken manuell genauso bearbeitet. Warum jetzt der aufgezeichnete Makro-Code nicht funktioniert ist mir deshalb auch ein Rätsel.

Gruß
Steffen
Bitte warten ..
Mitglied: SteffenKuch
09.03.2010 um 15:16 Uhr
Hallo!

Was mich gerade total verwirrt ist die Tatsache, dass ich bei eingeschaltetem Makrorekorder das Layout der Grafik gar nicht verändern kann (von Hand).
Ich kapiere nicht, wie ich es dann geschafft habe, das obige Makro aufzunehmen?!

Gruß
Steffen
Bitte warten ..
Mitglied: 76109
09.03.2010 um 15:18 Uhr
Hallo Steffen!

Was für Grafiken sind das, ganz normal Bilder?

Soviel habe ich in der Richtung in Word noch nichts gemacht, daher müsste ich etwas genauer wissen, wie der ganze Ablauf ist. Soweit ich das verstanden habe, fügst Du eine Grafik per <Einfügen><Grafik> ein und verknüpfts diese womit?

Du könntest aber mal probieren, dass Makro zu exportieren und in einem neuen Dokument wieder importieren. Danach mal testen, ob's in einem neuen Dokument funktioniert. Was besseres fällt mir im Moment leider nicht ein.

Gruß Dieter
Bitte warten ..
Mitglied: 76109
09.03.2010 um 15:24 Uhr
Hallo Steffen!

Wie Du das geschafft hast, weiß ich leider auch nicht Am besten Dokument schließen, wieder öffnen und nochmal probieren.

Mir passieren manchmal auch komische Sachen, wo ich denke, häh was ist jetz los

Gruß Dieter
Bitte warten ..
Mitglied: SteffenKuch
09.03.2010 um 15:33 Uhr
Hi!

Ja, das Dateiformat ist gif, das sollte m. E. aber keine Rolle spielen.
In Word 2000 habe ich die Möglichkeit, eine Grafik entweder "einfügen", "Verknüpfen zu Datei" oder "Einfügen und Verknüpfen", s. Bild (wie kann ich hier ein Bild hochladen? In der Formatierungshilfe steht nur dass aber nicht wie...).
Wenn ich ein Bild "Einfüge und Verknüpfe", dann kann ich die ursprüngliche Grafik-Datei verändern und beim nächsten Öffnen von Word 2000 habe ich die aktuelle Grafik im Word-Dokument.

Gruß
Steffen Kuch
Bitte warten ..
Mitglied: 76109
09.03.2010 um 15:48 Uhr
Hallo Steffen!

Was mir natürlich als allererstes auffällt, ist die Tatsache, dass Dein Makro immer nur einmal mit dem gleichen Object funktioniert, da Du das Object in Zeile 24 zu Shape konvertierst. Dann ist das Object anstatt ..InlineShap(1) dann mit ..Shape(1) ansprechbar.

Gruß Dieter

PS. Ich muss jetzt leider weg und werde mich später nochmal damit beschäftigen.
Bitte warten ..
Mitglied: 76109
09.03.2010 um 19:21 Uhr
Hallo Steffen!

Also, wie bereits erwähnt, kann das Makro nur einmal für eine importierte Grafik ausgeführt werden. Dadurch, dass in Deinem Code in Zeile 24 (bei mir 31) das InlineShap in ein Shap konvertiert wird, entsteht ein neues Object. D.h. das InlineShape(1) existiert nicht mehr, sondern nur noch Shape(1). Also, muss bei Bedarf die Grafik gelöscht und neu importiert werden.

Dein Makro habe ich ein wenig angepasst, dass eine Fehlermeldung ausgibt, falls das Object schon per Makro angepasst wurde.
01.
Sub GrafikEditieren() 
02.
    On Error Resume Next    'Fehlerbehandlung deaktivieren 
03.
     
04.
    ActiveDocument.InlineShapes(1).Select 
05.
     
06.
    If Err Then 
07.
        MsgBox "Die Anpassung für das gleiche Object ist nur einmal möglich!", vbExclamation, "Fehler" 
08.
        Exit Sub 
09.
    End If 
10.
     
11.
    On Error GoTo 0         'Fehlerbehandlung wieder aktivieren 
12.
 
13.
    With Selection.InlineShapes(1) 
14.
        .Fill.Visible = msoFalse 
15.
        .Fill.Transparency = 0# 
16.
        .Line.Weight = 0.75 
17.
        .Line.Transparency = 0# 
18.
        .Line.Visible = msoFalse 
19.
        .LockAspectRatio = msoTrue 
20.
        'Mit .scale... bekomme ich eine Prozentuale Größenveränderung hin. 
21.
        .ScaleHeight = 70 
22.
        .ScaleWidth = 70 
23.
        .PictureFormat.Brightness = 0.5 
24.
        .PictureFormat.Contrast = 0.5 
25.
        .PictureFormat.ColorType = msoPictureAutomatic 
26.
        .PictureFormat.CropLeft = 0# 
27.
        .PictureFormat.CropRight = 0# 
28.
        .PictureFormat.CropTop = 0# 
29.
        .PictureFormat.CropBottom = 0# 
30.
        'In ein 'flexibles' Format bringen 
31.
        .ConvertToShape 
32.
        'Layouttyp festlegen. 
33.
    End With 
34.
     
35.
    With Selection.ShapeRange.WrapFormat 
36.
        .Type = wdWrapSquare 
37.
        'Nur Umbruch links 
38.
        .Side = wdWrapLeft 
39.
        'Abstand links 1 cm, ansonsten 0 cm 
40.
        .DistanceLeft = CentimetersToPoints(1) 
41.
        .DistanceRight = CentimetersToPoints(0) 
42.
        .DistanceTop = CentimetersToPoints(0) 
43.
        .DistanceBottom = CentimetersToPoints(0) 
44.
        .AllowOverlap = False 
45.
    End With 
46.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: SteffenKuch
10.03.2010 um 10:07 Uhr
Guten Morgen!

Danke für deine Mühe, aber soweit ich das verstanden habe, löst das nicht mein ursprüngliches Problem.

Gruß
Steffen
Bitte warten ..
Mitglied: 76109
10.03.2010 um 11:55 Uhr
Hallo Steffen!

Verstehe ich nicht. Ich habe keine Probleme mit dem erstellen oder ändern einer Verknüpfung mit der Grafik, sowohl vor als auch nach der Anpassung der Grafik. Allerdings nutze ich die Office-Version 2002 und wenn's in Version 2000 nicht geht, dann kann ich Dir leider nicht weiterhelfen?

Gruß Dieter
Bitte warten ..
Mitglied: SteffenKuch
11.03.2010 um 07:43 Uhr
Hallo!

Ich bin mir nicht sicher, ob ich mich verständlich ausgedrückt habe.
Es geht nicht darum, eine Verknüpfung zu einer Grafik zu erstellen, sondern eine Grafik, die ich per "Einfügen und Verknüpfen" in mein Word 2000-Dokument eingefügt habe, nachträglich per VBA zu verändern.
Wenn ich ein Bild hier veröffentlichen könnte, dann könnte ich das vielleicht besser zeigen.

Gruß
Steffen
Bitte warten ..
Mitglied: 76109
11.03.2010 um 09:05 Uhr
Hallo Steffen!

Vielleicht habe ich mich jetzt missverständlich ausgedrückt. Ich rede ja von einer eingefügten Grafik, ansonsten wäre es kein InlineShap sondern ein Shape und Dein Makro würde niemals funktionen.

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Microsoft Office
gelöst CSV-Datei mit einem VBA Makro in Excel einlesen und leicht anpassen (5)

Frage von JoSiBa zum Thema Microsoft Office ...

Microsoft Office
gelöst SharePoint, Word, Excel. Auslesen mittels VBA und XML (10)

Frage von schwazza zum Thema Microsoft Office ...

Microsoft Office
gelöst VBA Word IBAN zerschneiden (8)

Frage von InSpee zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...