Problem mit Excel Vba nach Office Wechsel

Hallo,

ich habe in Excel Vba eine Anwendung programmiert, die auf Knopfdruck ein Wordformular öffnet und die Daten in das Word überträgt.

Die Programmierung sieht so aus:

Sub FahrkostenBKKoelnnachWord()
Rem variablen vereinbaren
Dim worddatei As Object
Dim testdatei As Object
Rem physische datei zuordnen
Set worddatei = CreateObject(„word.application“)
Set testdatei = worddatei.documents.Add("\s1000fs001\BG_AG\BG_AG_BGSYS\Dateien\fahrtkosten1.dot")
Rem datei öffnen
worddatei.Visible = True
testdatei.Activate
Rem zellinhalte übertragen
testdatei.bookmarks(„Textmarke2“).Range.Text = Range(„a13“)
testdatei.bookmarks(„Textmarke3“).Range.Text = Range(„a14“)
testdatei.bookmarks(„Textmarke4“).Range.Text = Range(„a15“)
testdatei.bookmarks(„Textmarke5“).Range.Text = Range(„b18“)
testdatei.bookmarks(„Textmarke6“).Range.Text = Range(„b21“)
testdatei.bookmarks(„Textmarke7“).Range.Text = Range(„b33“)
testdatei.bookmarks(„Textmarke8“).Range.Text = Range(„b32“)
testdatei.bookmarks(„Textmarke9“).Range.Text = Range(„a13“)

Rem zu übertragenden wert verarbeiten
wert = Str(Round(Range(„b35“), 2))
If InStr(wert, „.“) = 0 Then
wert = wert + „,00 EUR“
Else
If InStr(wert, „.“) = Len(wert) - 1 Then
wert = wert + „0 EUR“
Else
wert = wert + „EUR“
End If
End If
testdatei.bookmarks(„textmarke10“).Range = wert

Rem wert übertragen
wert = Str(Round(Range(„b37“), 2))
If InStr(wert, „.“) = 0 Then
wert = wert + „,00 EUR“
Else
If InStr(wert, „.“) = Len(wert) - 1 Then
wert = wert + „0 EUR“
Else
wert = wert + „EUR“
End If
End If
testdatei.bookmarks(„textmarke11“).Range = wert

Rem wert übertragen
wert = Str(Round(Range(„b38“), 2))
If InStr(wert, „.“) = 0 Then
wert = wert + „,00 EUR“
Else
If InStr(wert, „.“) = Len(wert) - 1 Then
wert = wert + „0 EUR“
Else
wert = wert + „EUR“
End If
End If
testdatei.bookmarks(„textmarke12“).Range = wert

Rem wert übertragen
wert = Str(Round(Range(„b40“), 2))
If InStr(wert, „.“) = 0 Then
wert = wert + „,00 EUR“
Else
If InStr(wert, „.“) = Len(wert) - 1 Then
wert = wert + „0 EUR“
Else
wert = wert + „EUR“
End If
End If
testdatei.bookmarks(„textmarke13“).Range = wert

testdatei.bookmarks(„Textmarke14“).Range.Text = Range(„b23“)
testdatei.bookmarks(„Textmarke15“).Range.Text = Range(„b27“)
testdatei.bookmarks(„Textmarke16“).Range.Text = Range(„b24“)

End Sub

Nach dem Umstieg auf Office 2010 funktioniert diese Übertragung nicht mehr.

Ich habe bereits gegoogelt und gesehen, dass irgendwo eine Verzögerung eingebaut werden soll, aber ich bekomme es nicht hin.

Wie und an welcher Stelle müsste das eingefügt werden?

Vielen lieben Dank

Andreas Scherber

Hallo Herr Scherber,

das ist ja sehr beeindruckend. aber da muss ich leider passen. In unserem Betrieb wurde gerade Office2010 eingeführt und glücklicher weise auch nicht geschult.
Damit muss ich selnst erst einmal zurecht kommen.

Gruß Hugo

Ok, trotzdem danke :smile:

Hallo Andreas,

ich hab dein Makro unter Excel 2010 getestet. Wobei ich meine Testdateien natürlich dann auch unter Excel/Word 2010 erstellt habe.
Das Makro funktioniert.

Der Fehler könnte jetzt noch durch fehlende oder falsche Verweise im VBA-Projekt der Excel-Datei verursacht werden.
Im VBA-Editor sollten unter Extras–Verweise die folgenden Verweise gesetzt sein:

  • Visual Basic for Applications
  • Microsoft Excel 14.0 Object Library
  • OLE Automation
  • Microsoft Office 14.0 Object Library

Die gewünschte Formatierung der Zahlen in der Worddatei kann man etwas einfacher realisieren.

Wenn die Zahlen in der Exceldatei schon die korrekte Darstellung haben, dann kann man die Text-Eigenschaft der Zellen übernehmen.
Beispiel:

 testdatei.bookmarks("textmarke10").Range = Range("b35").Text

Ansonsten kann man mit der Format-Methode die Zahlen ins gewünschte Format. bringen.

 wert = Format(Round(Range("b35").Value, 2), "#,##0.00 EUR")
 testdatei.bookmarks("textmarke10").Range = wert

Gruß
Franz

Grüezi Andreas

Gibt es denn Fehlermeldungen oder wo/wie genau äussert sich der Fehler?

…vielleicht wäre die Frage bei WORD besser aufgehoben…?

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Sorry - da kann ich Dir leider nicht weiterhelfen, aber schau doch mal auf der Website www.herber.de nach. Ein echt supergutes Excelforum.
Gruß,
Ptonka

Hallo Franz,

vielen Dank für den Tipp zur Vereinfachung.

In den Optionen sind die 4 Häkchen gesetzt - bei Ausführen des Makros kommt die Fehlermeldung:

Laufzeitfehler 424, Objekt erforderlich und bei Debuggen verweist er auf die Zeile

Set testdatei = worddatei.documents.Add("\s1000fs001\BG_AG\BG_AG_BGSYS\Dateien\fahrtkosten1.dot")

Die Datei ist aber hinterlegt an der Stelle *seufz*

Sorry Andreas, aber ohne das dot File geht da gar nichts zum testen. Ich kann Dir den aufhänger somit nicht ausfindig machen.
Grüsse Sebastian