Discussion:
Länge eines Strings in Pixel / mm berechnen
(zu alt für eine Antwort)
Peter Haider
vor 19 Jahren
Permalink
Hallo Newsgroup,

gibt es die Möglichkeit, dass ich per VBA einen String samt Fontname, -größe
und -stil angebe und ich per ??-Eigenschaft die Größe in pixel / mm (so wie
wenn es am Drucker ausgedruckt werden würde) zurückerhalte? Der String kann
auch über mehrere Zeilen gehen und mehrere CR/LF enthalten.

Für Tips oder Samplelinks wäre ich dankbar

Grüsse

Peter
Hartwig Constien
vor 19 Jahren
Permalink
Post by Peter Haider
gibt es die Möglichkeit, dass ich per VBA einen String samt Fontname, -größe
und -stil angebe und ich per ??-Eigenschaft die Größe in pixel / mm (so wie
wenn es am Drucker ausgedruckt werden würde) zurückerhalte? Der String kann
auch über mehrere Zeilen gehen und mehrere CR/LF enthalten.
Für Tips oder Samplelinks wäre ich dankbar
Hi Peter,
scheint keiner der Profis zu wissen oder ist einfach zu profan, dass die
sich einschalten (;-)
In meinen eigenen VBA-Entwicklungen habe ich überhaupt keine Notwendigkeit,
die Pixelbreiten der Druckausgabe zu ermitteln. Daher die Frage: wozu
brauchst Du das?

Unter VB6 kannst Du mit Printer.TextWidth die Breite ermitteln. Ich benutzte
das z.B. dazu, die Spalten einer ListView in voller Breite passend auf die
Seiten zu verteilen.
Du könntest Dir eine ActiveX-DLL schreiben, die Dir via Printer-Objekt die
gewünschte Pixelzahl zurückliefert.

Hang loose, hacosoft
Helmut Weber
vor 19 Jahren
Permalink
Hallo Peter,

es war "String", was mich zuerst zögern ließ.
Denn ein String ist was Abstraktes, was weder
Font noch Zeilen kennt.

Ohne größeren Werkzeugkasten, wie Hartwig sagt,
geht sowas ohne Nutzung der Word-Oberfläche,
also eines Dokumentes wohl nicht.

Vermutlich willst Du aber doch nur wissen,
wie breit Dein Text wohl sein wird.

Ziemlich ungenau wohl, aber immerhin,
und nur im Prinzip:

Dim x1 As Single
Dim x2 As Single
With selection
.ExtendMode = False
.HomeKey unit:=wdLine
x1 = .Information(wdHorizontalPositionRelativeToPage)
.EndKey unit:=wdLine
x2 = .Information(wdHorizontalPositionRelativeToPage)
MsgBox PointsToCentimeters(x2 - x1)
End With

Wenn sich der Text über mehrere Zeilen erstreckt,
ist es wohl nur sinnvoll,
die Länge der längsten Zeile zu ermitteln,
es sei denn, Du willst alles längs des Papiers
auf einem Endlosdrucker ausdrucken. ;-)
--
Gruß

Helmut Weber, MVP WordVBA

"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003 (US-Versions)
Loading...