Wie kann ich Word Textmarken mit einem Excel Makro befüllen?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

dein hauptproblem:

ActiveCell.SpecialCells(xlLastCell).Select

- damit wählst du immer die zuletzt benutzte zelle, die angeklickte zelle wird übersprungen, also die ursprüngliche ActiveCell auf irgendwas festes gesetzt.

ausserdem:

1. Set xlZelle
das xl als prefix solltest du nicht nehmen: MS verwendet das für Excel-spezifische vordefinierte numerische konstanten (z.b. xlLastCell) - xl=excel
damit verwirrst du dich nur selbst.

2. die offset schreibweise ist schwierig zu lesen. mit den anklicken einer zelle willst du doch eigentlich nur die aktuelle zeile feststellen.

also einfach statt Set xlZelle=...
currentrow = ActiveCell.Row

und dann mit
cells(currentrow, "G") etc. auf die einzelnen zellen zugreifen.

3. Set objDocx = objWDApp.Documents.Open(strFileName, ReadOnly:=False)
heisst, dass er NICHT (false) schreibgeschützt öffnet. sinnvoll wäre also ReadOnly:=true
würdest das aber erst merken, wenn du das fileattribut der docx auf readonly setzt - vermute ich.  

4. die neue worddatei schreibst du wohl mit objDocx.saveAs ... 


ChrisFragtGern 
Beitragsersteller
 08.03.2016, 15:07

Hey @maximilianus7

Ich habe versucht deine Tipps zu beherzigen. Aktuell sieht mein Programm so aus.

https://paste2.org/gI32HeBz


Im Prinzip möchte ich Excel starten, eine Zeile anklicken und dann das Makro ausführen, und VBA soll das Makro dann nur für die zuvor angeklickte Zeile durchführen.

Leider funktioniert es immernoch nicht. Der Fehler wird in der Zeile

" Set objDocx = objWDApp.Documents.Open(strFileName, ReadOnly:=True) "

markiert.


Liebe Grüße



0
ChrisFragtGern 
Beitragsersteller
 04.03.2016, 10:22

vielen dank für deine Hilfe! Ich habe gerade kein Excel zur Hand, aber ich werde deine Tipps die Tage mal befolgen ;)

0

... und mit Serienbrief in Word kommst du nicht weiter?


ChrisFragtGern 
Beitragsersteller
 03.03.2016, 18:50

Ne Sorry, das soll über ein Excel Makro funktionieren.

0

grundsätzlich code nicht im GF-editor posten, nimm z.b. paste2.org


ChrisFragtGern 
Beitragsersteller
 03.03.2016, 18:51

Oh tut mir leid, habs editiert.

0
Britzcontrol  04.03.2016, 08:04
@ChrisFragtGern

Einspruch, Euer Gnaden.

Ich, und auch viele Andere, öffne unter keinen Umständen irgendwelche Links zu irgendwelchen Clouds, fremden Webseiten, ...

Die Chance auf qualifizierte Hilfe in GF ist größer, wenn das Problem hier beschrieben wird (Codebeispiel, Bildschirmkopie, ...).

Was spricht gegen die Veröffentlichung des VBA-Codes hier im Forum?

Gruß aus Berlin

0
ChrisFragtGern 
Beitragsersteller
 04.03.2016, 10:23
@Britzcontrol
Sub AnschreibenGutachtenNeu()
Dim strFileName As String

Dim

objWDApp

As

Object

'Word.Application

Dim

objDocx

As

Object

'Word.Document

Dim

xlZelle

As

Range

'Referenzzelle in Excel

strFileName

=

"C:\Users\CG\Documents\Spaces\Bea und Chris\Projekt Makro\tester.docx"

If

Dir

(

strFileName

)

=

""

Then

MsgBox

"Datei """

&

strFileName

&

""" nicht gefunden!"

Exit

Sub

End

If

'Excel-Referenzzelle für Auftrag setzen

ActiveCell

.

SpecialCells

(

xlLastCell

).

Select

With

ActiveSheet

Set

xlZelle

=

.

Cells

(

ActiveCell

.

Row

,

1

)

' Zelle in aktiver Zeile, Spalte A

End

With

Application

.

ScreenUpdating

=

False

'Word-Anwendung sichtbar starten

Set

objWDApp

=

CreateObject

(

"Word.Application"

)

objWDApp

.

Visible

=

True

'Vorlage öffnen - schreibgeschützt

Set

objDocx

=

objWDApp

.

Documents

.

Open

(

strFileName

,

ReadOnly

:

=

False

)

'Werte aus Zellen in Excel an Textmarken im Worddokument einfügen

objDocx

.

Bookmarks

(

"Aktenzeichen"

).

Range

.

Text

=

xlZelle

.

Offset

(

0

,

6

).

Text

'aus Spalte G funktioniert nicht

objDocx

.

Bookmarks

(

"Anrede"

).

Range

.

Text

=

xlZelle

.

Offset

(

0

,

4

).

Text

'aus Spalte E funktioniert nicht

objDocx

.

Bookmarks

(

"Ansprechpartner"

).

Range

.

Text

=

xlZelle

.

Offset

(

0

,

5

).

Text

'aus Spalte F funktioniert nicht

objDocx

.

Bookmarks

(

"Aktenzeichen"

).

Range

.

Text

=

"Hallo"

'Funktioniert komischer weise

'Hier müsste dann noch irgendwie die Speicherung erfolgen

Application

.

ScreenUpdating

=

True

End

Sub



0
ChrisFragtGern 
Beitragsersteller
 04.03.2016, 10:29
@ChrisFragtGern

Oh Sorry, das ist sehr unübersichtlich :D Ich Versuchs später nochmal richtig hochzuladen

0
maximilianus7  04.03.2016, 13:42
@Britzcontrol

was dagegen spricht, hat der fragesteller als antwort auf deinen kommentar gerade demonstriert.

und es spricht nichts dagegen, die paar bekannten plattformen für das ablegen von source code zu benutzen.

dort ist der code übersichtlich (teilweise mit syntaxhighlighting) dargestellt und kann man mit copy & paste arbeiten.

0