Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Makro um Text in Word zu formatieren
zurück: Datei und Tabellenblatt über Userform importieren weiter: Exelabfrage ob gespeichert werden soll ändern Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
maik--
Gast


Verfasst am:
02. Sep 2007, 18:30
Rufname:

Makro um Text in Word zu formatieren - Makro um Text in Word zu formatieren

Nach oben
       Version: Office 2003

HI,

kann mir evtl. jemand weiter helfen, mein Problem besteht darim das ich per Makro aus einer bestehenden Excel Mappe mir die Werte in VAriablen einlese, danach ein neues Word Dokument öffnen lasse und die Werte wieder ausgebe. Das Problem dabei ist das ich keine Lösung dafür habe wie ich nun diese Werte rechtsbündig ausrichten lassen kann, da es sich hierbei um Beträge handelt müssen diese unbedingt rechtsbündig sein. Bitte um schnelle Hilfe.
Bisher habe ich es mit folgenden Code ergebnislos probiert:
Code:
Dim wdAnw As Object
Set wdAnw = CreateObject("Word.Application")
wdAnw.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter: Einschub = "center"
bzw.
Code:
Dim wdAnw As Object
Set wdAnw = CreateObject("Word.Application")
wdAnw.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight


mfg
chef
steffen0815
VBA-Programmierer


Verfasst am:
02. Sep 2007, 21:00
Rufname:


AW: Makro um Text in Word zu formatieren - AW: Makro um Text in Word zu formatieren

Nach oben
       Version: Office 2003

Hallo Maik,
steht bei dir ein "Option Explicit" am Modulanfang?

_________________
Gruß Steffen
r.mueller
Gast


Verfasst am:
03. Sep 2007, 02:03
Rufname:

AW: Makro um Text in Word zu formatieren - AW: Makro um Text in Word zu formatieren

Nach oben
       Version: Office 2003

Hallo

wenn du von anderen Anwendungen auf Word zugreifst kein "Selection" benutzen
sondern das Range Object.

so gehts richtig:
Code:


Option Explicit
'verweis auf : 'Microsoft Word .... Object Library
'Zur Weitergabe an andere Rechner:
'  Nach dem Testen Verweis entfernen und alle Word Objecte: As Object declarieren
'  und alle Word Konstanten durch deren Werte ersetzen.
Dim wrdApp As Word.Application 'As Object  'Unterscheide diese Objecte!
Dim wrdDoc As Word.Document 'As Object  'Unterscheide diese Objecte!
Dim wrdRng As Word.Range 'As Object   'Unterscheide diese Objecte!

Sub DatenInNeuesWordDocEintragen()
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True 'später ggf.: False
Set wrdDoc = wrdApp.Documents.Add
Set wrdRng = wrdDoc.Range
wrdRng.Text = "Dein Text für die erste Zeile"
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Alignment = 1 ' 1 = wdAlignParagraphCenter
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Font.Name = "Arial"
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Font.Size = 16

'ggf. mit For .... To ... alle deine Werte eintragen
wrdRng.Paragraphs.Add
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Text = "7423,99 €"  'Beispiel text für die weitere Zeile
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Alignment = 2 '2 =wdAlignParagraphRight
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Font.Name = "Courier New"
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Font.Size = 12
'ggf.: Next

wrdRng.Paragraphs.Add
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Text = vbTab & vbTab & vbTab
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Alignment = 2
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Font.Strikethrough = True

wrdRng.Paragraphs.Add
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Text = "Summe:  " & vbTab & vbTab & "1141399,99 €"  ' " Beispiel text
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Alignment = 2
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Font.Strikethrough = False
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Font.Name = "Courier New"

wrdRng.Paragraphs.Add
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Text = vbTab & vbTab & vbTab
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Alignment = 2
wrdRng.Paragraphs(wrdRng.Paragraphs.Count).Range.Font.DoubleStrikeThrough = True

wrdDoc.SaveAs FileName:="D:\Test\test.doc"
wrdDoc.Close False
wrdApp.Quit          'nie vergessen
Set wrdRng = Nothing 'nie vergessen
Set wrdDoc = Nothing 'nie vergessen
Set wrdApp = Nothing 'nie vergessen

End Sub

 

Gruß
r.mueller
<c0bRa> Emailadresse entfernt, Siehe Punkt 12 Forenregeln
steffen0815
VBA-Programmierer


Verfasst am:
03. Sep 2007, 08:16
Rufname:

AW: Makro um Text in Word zu formatieren - AW: Makro um Text in Word zu formatieren

Nach oben
       Version: Office 2003

@r.mueller,
r.mueller hat folgendes geschrieben:
wenn du von anderen Anwendungen auf Word zugreifst kein "Selection" benutzen
Das halte ich aber für ein Gerücht Rolling Eyes .
Man kann auch in der "Fernsteuerung die gesamte "Bandbreite" der Wordbefehle inklusive Selection nutzen, muss diese jedoch auch auf ein Word-Objekt beziehen.

In Word gibt es sogar Fälle da geht es nicht ohne Selection.
Darüber hinaus habe ich in den letzten Tagen gelernt, dass es in Ausnahmefällen bei Word sogar besser ist Selection statt Range zu benutzen.

... und wenn wir gerade dabei sind.
Meiner Meinung nach ist fast in allen Fällen Late-Binding zu bevorzugen. Dein Code fährt in einer heterogenen Systemumgebung (verschiedene Officeversionen) vor allem auch bei Nutzung einer MDE "gegen die Wand".

_________________
Gruß Steffen
r.mueller
Gast


Verfasst am:
03. Sep 2007, 10:26
Rufname:

AW: Makro um Text in Word zu formatieren - AW: Makro um Text in Word zu formatieren

Nach oben
       Version: Office 2003

Hallo steffen0815

> Man kann auch in der "Fernsteuerung die gesamte "Bandbreite"
> der Wordbefehle inklusive Selection nutzen
Nicht wahr! Dann versuchs mal mit der Word.Application.Visible = False

> In Word gibt es sogar Fälle da geht es nicht ohne Selection.
Nicht wahr. Da gibt es nur Fälle der Unfähigket des Programmierers das Range Object zu nutzen.

> Darüber hinaus habe ich in den letzten Tagen gelernt,
> dass es in Ausnahmefällen bei Word sogar besser ist Selection statt Range zu benutzen.
Niiiieet Möööööööööglich mit Selection kannst den Code nur zum Erbrechen verlangsamen.

... und wenn wir gerade dabei sind.
> Meiner Meinung nach ist fast in allen Fällen Late-Binding zu bevorzugen.
> Dein Code fährt in einer heterogenen heterogenen Systemumgebung
>(verschiedene Officeversionen) vor allem auch bei Nutzung einer MDE "
> gegen die Wand".

Leseschwäche????????
Siehe Text in meinem Code:

Code:
'
verweis auf : 'Microsoft Word .... Object Library
'Zur Weitergabe an andere Rechner:
'  Nach dem Testen Verweis entfernen und alle Word Objecte: As Object declarieren
'  und alle Word Konstanten durch deren Werte ersetzen.
 

Gruß
r.mueller
steffen0815
VBA-Programmierer


Verfasst am:
03. Sep 2007, 10:38
Rufname:

AW: Makro um Text in Word zu formatieren - AW: Makro um Text in Word zu formatieren

Nach oben
       Version: Office 2003

@r.mueller:
ich bin nicht bereit irgendetwas von meinen Aussagen zurückzunehmen Wink.

Meine Behauptungen beruhen auf:
Es geht nicht ohne Selection: Tabelle auswählen
Selection schneller als range: Tabellen mit VBA in Word


Wo siehst du den Unterschied zwischen:
Word.Application.Visible = False
und
wrdApp.Visible = True Confused


Die Leseschwäche beim Latebinding gebe ich zu, aber warum nicht gleich den "richtigen" Code poste Wink



Btw: Alles nicht persönlich nehmen. Dies ist ein Fachforum und da müssen fachliche Fragen nunmal geklärt werden Wink

_________________
Gruß Steffen
r.mueller
Gast


Verfasst am:
03. Sep 2007, 14:14
Rufname:

AW: Makro um Text in Word zu formatieren - AW: Makro um Text in Word zu formatieren

Nach oben
       Version: Office 2003

Hallo Steffen

> ich bin nicht bereit irgendetwas von meinen Aussagen zurückzunehmen .
Woz uauc

> Meine Behauptungen beruhen auf:
> Es geht nicht ohne Selection: Tabelle auswählen
> Selection schneller als range: Tabellen mit VBA in Word
Hab mir beides mal angesehen und mußte feststellen das beides
auf Unkenntnis beruht.
Das Word Range Object benutzt teiweise andere Methoden und Egenschaften als die Selectio. Wer also über die Macro-Aufzeichnen programmierung nicht hinaus kommt steigt nie dahinter.
Auch das mit der Zeit stimmt nicht. es ist sehr wohl möglich mit einem einzigen String und den Objecten der Tabelle gleich eine ganze Zeile oder gar eine ganze Tabelle zu füllen.

> Wo siehst du den Unterschied zwischen:
> Word.Application.Visible = False
> und
> wrdApp.Visible = True
Hir gimg es nicht um das Object sondern um dessen ... Visible = False
Eigenschaft dann is nix mehr mit "Selection".

> aber warum nicht gleich den "richtigen" Code poste

Das hat einen guten Grund
Setz mal bei Late-Binding oder bei Earlay-Binding den Punkt hinter eine Objectvariable.
Ich kann deshalb nur empfehlen erst mit Earlay-Binding zu entwicklen.
Und erst wenn dies läuft umzustellen.

Gruß
r.mueller
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
04. Sep 2007, 12:41
Rufname:
Wohnort: Leipzig


AW: Makro um Text in Word zu formatieren - AW: Makro um Text in Word zu formatieren

Nach oben
       Version: Office 2003

Hallo zusammen,

damit wir nicht zu weit vom Ursprungs-Post abkommen, versuch ich's auch kurz:
  • In Word gibt es Situationen, in denen man zwar mit Ranges arbeiten kann, mit Selection jedoch weitaus schneller, z. B. bei der fehlenden Range-Eigenschaft von Spalten in Word-Tabellen. Natürlich kann man auch durch die Zellen der Spalte schleifen und jeweils den Range jeder Zelle einzeln ansprechen. Es liegt auf der Hand, dass das je nach Länge der Tabelle im Vergleich zur Selection deutlich langsamer ist. Besonders wenn bloß die Ausrichtung der Zellen in dieser einen Spalte auf rechtsbündig geändert werden soll!
    Code:
        ActiveDocument.Tables(1).Columns(3).Select
        Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
        Selection.Collapse wdCollapseEnd

    Nimm eine Tabelle mit 300 Zeilen und vergleich es einfach mal mit:
    Code:
        Dim i As Long

        For i = 1 To ActiveDocument.Tables(1).Rows.Count
            ActiveDocument.Tables(1).Rows(i).Cells(3).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
        Next i

  • Zum Early/Late Binding stimme ich zu. Ich mach das auch so, erst mit Early Bindung um die Intellisense zu haben. Wenn alles läuft, auf Late umstellen, klar. Aber das war ja hier gar nicht das Thema.

Wäre schön, wenn sich maik nochmal meldet, ob er unterdessen klar kommt. Worauf bezieht sich die Selection denn? Was soll rechtsbündig werden? Eine Spalte? Die ganze Tabelle?

Gruß
Lisa
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Sverweis: #NV in einen Text umwandeln 2 Johannes2005 3717 11. Okt 2005, 17:33
Johannes2005 Sverweis: #NV in einen Text umwandeln
Keine neuen Beiträge Excel Formeln: Exel Problem **Daten->Text in Spalten**editiert ae 2 monsoon 979 22. Sep 2005, 16:49
monsoon Exel Problem **Daten->Text in Spalten**editiert ae
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Excel Formeln: Makro HILFE !!! BITTE ;D 3 folter 681 03. Sep 2005, 13:32
fl618 Makro HILFE !!! BITTE ;D
Keine neuen Beiträge Excel Formeln: Text durchsuchen 3 Gast 682 12. Aug 2005, 16:06
Gast Text durchsuchen
Keine neuen Beiträge Excel Formeln: Text in einer anderen Zelle ausgeben 2 Olaf 979 21. Jul 2005, 16:59
fl618 Text in einer anderen Zelle ausgeben
Keine neuen Beiträge Excel Formeln: Wenn Dann Funktion einer dritten (Text-)Spalte 6 Gucci 1814 19. Apr 2005, 16:19
Hübi Wenn Dann Funktion einer dritten (Text-)Spalte
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Excel Formeln: Tabelle im Text als Kopie einer Tabelle im Anhang 2 Gast 673 16. Apr 2005, 22:42
ae Tabelle im Text als Kopie einer Tabelle im Anhang
Keine neuen Beiträge Excel Formeln: Text aus Zelle (Tabellenblattname) als Formelbestandteil ? 4 Sid 2003 03. März 2005, 17:28
Gast Text aus Zelle (Tabellenblattname) als Formelbestandteil ?
Keine neuen Beiträge Excel Formeln: Text in Zelle ergibt #WERT beim Additionieren 2 Aloha 2091 19. Feb 2005, 10:36
Aloha Text in Zelle ergibt #WERT beim Additionieren
Keine neuen Beiträge Excel Formeln: text zählen 4 roli 1885 28. Jan 2005, 12:34
Kuwe text zählen
Keine neuen Beiträge Excel Formeln: Text vergleichen 1 miss_jacy 1490 23. Okt 2004, 19:14
Reinhard Text vergleichen
Keine neuen Beiträge Excel Formeln: Variables Datum (HEUTE()) in Text konvertieren? 4 Chillieout 3008 04. Okt 2004, 17:04
michi795 Variables Datum (HEUTE()) in Text konvertieren?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Project