Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Fehler bei automatischer erzeugung eines Worddokumentes aus Excel heraus

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Fehler bei automatischer erzeugung eines Worddokumentes aus Excel heraus (878 mal gelesen)
Mario Wipf
Mitglied
Dipl. Ing. FH, MAS FHO BAE


Sehen Sie sich das Profil von Mario Wipf an!   Senden Sie eine Private Message an Mario Wipf  Schreiben Sie einen Gästebucheintrag für Mario Wipf

Beiträge: 535
Registriert: 07.10.2003

AIS 9 SP3, AIS 10 WINDOWS XP Pro
Fujitsu Siemens CELSIUS M430
Nvidia Quadro FX 1400 128 MB

erstellt am: 15. Sep. 2005 09:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Fehlermeldung.jpg

 
Hallo zusammen !!

Mit der gleichen Anwendung, Die ich unten geschildert habe, kriege ich folgendes Problem.

Die Excel DAten können nur in ein WorkDokument ausgelesen werden, wenn word schon offen ist.

Wenn ich nun während dem Programmlauf (VBA in Excel) sämtliche Worddokumente schliesse, ein neues öffne, und dann über excel wieder Daten nach Word auslesen möchte, kriege ich die angehängte Fehlermeldung...

Kann mir jemand vieleicht einen Tip geben ?

Gruss Mario

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BloodyMess
Mitglied
Applicationingenieur


Sehen Sie sich das Profil von BloodyMess an!   Senden Sie eine Private Message an BloodyMess  Schreiben Sie einen Gästebucheintrag für BloodyMess

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 15. Sep. 2005 22:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mario Wipf 10 Unities + Antwort hilfreich

Hallo Mario,

Zitat:
Die Excel DAten können nur in ein WorkDokument ausgelesen werden, wenn word schon offen ist.

.. wo soll er Sie sonst hinschreiben, wenn Du dem Rechner sagst: "Schreibe nach Word" und es gibt keine vorhandene Instanz und Du hast auch keine angelegt. Dann gibt es natürlich auch einen Fehler. Schau Dir die Funktionen 'GetObject' und 'CreateObject' an. (siehe Beitrag von Nepomuk) Das wird dein Problem lösen.

Zitat:
Wenn ich nun während dem Programmlauf (VBA in Excel) sämtliche Worddokumente schliesse, ein neues öffne, und dann über excel wieder Daten nach Word auslesen möchte, kriege ich die angehängte Fehlermeldung...

Dazu müsste man nun nen bissle deinen Code kennen. Aber ich gehe davon aus, dass Du irgendwo ein Objekt hast, das auf DAS eine WordObjekt verweisst. (entweder dein angelegtes oder vorhandenes) Da Du ja nun hergehst und alle Instanzen von Word schliesst, unter anderem auch dieses Eine aus deinem Code, ist es weg. Da nützt es Dir auch nichts, wenn Du netter Weise noch ein neues Dokument aufmachst ..  .. Der Verweis auf das alte Objekt existiert noch, aber DAS Objekt ist weg und somit bekommst auch die Fehlermeldung zurück.

Hoffe das hilft Dir für´s Verständnis nen bissle weiter.

Grüssle TP

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mario Wipf
Mitglied
Dipl. Ing. FH, MAS FHO BAE


Sehen Sie sich das Profil von Mario Wipf an!   Senden Sie eine Private Message an Mario Wipf  Schreiben Sie einen Gästebucheintrag für Mario Wipf

Beiträge: 535
Registriert: 07.10.2003

AIS 9 SP3, AIS 10 WINDOWS XP Pro
Fujitsu Siemens CELSIUS M430
Nvidia Quadro FX 1400 128 MB

erstellt am: 16. Sep. 2005 09:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo TP !!

Vielen Dank für Deine Antwort !!

Ja das hat schon was, wie soll denn excel gescheit ins word schreiben, wenn keine Instanz existiert...wie ungeschickt von mir :-)

Daraus ergibt sich für mich folgende Fragen:

1.Wie kann ich von Excel aus so eine Instanz erzguen, damit mir Excel nicht abstürzt

2. Fehlermeldungen kann man ja mit "on error resume next" abfangen, wie steht es aber umd Laufzeitfehler ? ich krieg dann meistens einen Laufzeitfehler '429' und wenn ich aber nach 429 abfrage mit:
if err = "429", dann klappt das nicht so ganz... wo liegt das Problem ?

Komischer weise ist es so, dass ich ein userform frmhaupt habe und von dort aus das wordokument über die Routine (siehe unten) erstellen lasse, sobald ich den entsprechenden button betätige. Ich war irgendwie der meinung, dass ich bis zu dem Zeitpunkt, wo ich den button betätige word so oft öffnen und schliessen kann wie ich möchte, dem ist aber nicht so, owohl da das wordobjekt erst nach betätigung des buttons erstellt wird... hmmm was mach ich denn da schon wieder für einen Denkfehler ? :-)


Hier noch der Code:


Private Sub erstellenwordangebot()
 
Dim intzeile As Integer
Dim rngusedrange As Range
Dim wksworksheet As Worksheet
Dim lngrows As Long

Dim wdapp As Word.Application
Dim wdDatei As Word.Document
Dim intZeilen As Integer
Dim intZähler As Integer
Dim xlZelle As Range
Dim strpfadmerker As String
Dim pseudomerker As Integer
           
           
                ' ermitteln des letzten Eintrags zur Bestimmung der neuen Angebotsnummer
                Set wksworksheet = ThisWorkbook.Worksheets("Angebotsnummern")
                Set rngusedrange = wksworksheet.UsedRange
                lngrows = rngusedrange.Rows.Count
           
'                On Error Resume Next
                Set wdapp = Word.Application
                wdapp.Visible = True
                           
                           
                            strpfadmerker = wdapp.Options.DefaultFilePath(Path:=wdUserTemplatesPath)
                            'Festlegen des Vorlagenordners
                            wdapp.Options.DefaultFilePath(Path:=wdUserTemplatesPath) = _
                            Worksheets("Allgemein").Range("A31").Value
                           
                            If Worksheets("Angebotsnummern").Range("AA" & lngrows) = "fax" Then
                           
                                Set wdDatei = Word.Documents.Add("Vorlage_Angebot.dot")
                               
                            ElseIf Worksheets("Angebotsnummern").Range("AA" & lngrows) = "mail" Then
                           
                                Set wdDatei = Word.Documents.Add("Vorlage_Angebot-email.dot")
                           
                            Else
                           
                                MsgBox ("Es wurde für die Angeobtsausgabe weder Fax noch mail definiert" & Chr(10) & "Standardauswahl: FAX")
                                Set wdDatei = Word.Documents.Add("Vorlage_Angebot.dot")
                               
                            End If
                           
       
                              With wdapp
                                With .Selection
                               
                                .Goto what:=wdGoToBookmark, Name:="firma"
                                .TypeText Text:=txtfirma
                               
                                .Goto what:=wdGoToBookmark, Name:="plz"
                                .TypeText Text:=txtplz
                               
                                .Goto what:=wdGoToBookmark, Name:="ort"
                                .TypeText Text:=txtort
                               
                                .Goto what:=wdGoToBookmark, Name:="name"
                                .TypeText Text:=txtname
                               
                                .Goto what:=wdGoToBookmark, Name:="vorname"
                                .TypeText Text:=txtvorname
                               
                                .Goto what:=wdGoToBookmark, Name:="anrede"
                                .TypeText Text:=cboanrede.Value
                               
                                .Goto what:=wdGoToBookmark, Name:="namecoolson"
                                .TypeText Text:=txtname_coolson
                               
                                .Goto what:=wdGoToBookmark, Name:="mail"
                                .TypeText Text:=txtmail
                                         
                                .Goto what:=wdGoToBookmark, Name:="seiten"
                                .TypeText Text:=txtseitenzahl
                               
                                .Goto what:=wdGoToBookmark, Name:="datum"
                                .TypeText Text:=txtdatum
                               
                                .Goto what:=wdGoToBookmark, Name:="zeit"
                                .TypeText Text:=txtzeit
                               
                                .Goto what:=wdGoToBookmark, Name:="projektname"
                                .TypeText Text:=txtbetreff
                               
                                .Goto what:=wdGoToBookmark, Name:="angebotsnummer"
                                .TypeText Text:=txtangebotsnummer
                                             
                                .Goto what:=wdGoToBookmark, Name:="kopfanrede"
                                .TypeText Text:=cboanrede.Value
                                     
                                .Goto what:=wdGoToBookmark, Name:="kopfname"
                                .TypeText Text:=txtname
                               
                                .Goto what:=wdGoToBookmark, Name:="kurs"
                                .TypeText Text:=txtkurs
                               
                                .Goto what:=wdGoToBookmark, Name:="lieferzeit"
                                .TypeText Text:=cbolieferzeit.Value
                       
                                .Goto what:=wdGoToBookmark, Name:="lieferung"
                                .TypeText Text:=cbolieferung.Value
                               
                                .Goto what:=wdGoToBookmark, Name:="angebotsgueltigkeit"
                                .TypeText Text:=cboangeobtsgültigkeit.Value
                               
                                .Goto what:=wdGoToBookmark, Name:="verfassername"
                                .TypeText Text:=txtname_coolson
                       
                            End With
                        End With
                       
                   
                            wdapp.ChangeFileOpenDirectory (Worksheets("Allgemein").Range("A32").Value)
                            wdDatei.SaveAs (txtangebotsnummer)
                            wdapp.Options.DefaultFilePath(Path:=wdUserTemplatesPath) = strpfadmerker

                           
                           
                          Set wdapp = Nothing
                          Set wdDatei = Nothing
                          Set xlZelle = Nothing
                         
                            ' ermitteln des letzten Eintrags zur Bestimmung der neuen Angebotsnummer
                            Set wksworksheet = ThisWorkbook.Worksheets("Angebotsnummern")
                            Set rngusedrange = wksworksheet.UsedRange
                            lngrows = rngusedrange.Rows.Count
                         
                         
                            Worksheets("Angebotsnummern").Range("Z" & CStr(lngrows)) = "erstellt"
                            pseudomerker = MsgBox("Worddokument erstellt. Bitte Sowohl Anwendung als auch Excel schliessen", vbInformation + vbOKOnly, "Mitteilung")
           
End Sub

Gruss vom VBA-Neuling

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 16. Sep. 2005 10:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mario Wipf 10 Unities + Antwort hilfreich

Hallo Mario,

eine Objektvariable die auf eine Objektbibliothek verweist:

Dim wdapp As Word.Application
Dim wdDatei As Word.Document

kannst du mit der Anweisung:

Set wdapp = Nothing

nicht freigeben. Also, deklariere diese Variablen als Object und erstelle mit CreateObject eine Instanz von Word. Dann hast du auch keine Probleme beim Versionswechsel.

------------------
Gruß
Nepumuk

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BloodyMess
Mitglied
Applicationingenieur


Sehen Sie sich das Profil von BloodyMess an!   Senden Sie eine Private Message an BloodyMess  Schreiben Sie einen Gästebucheintrag für BloodyMess

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 19. Sep. 2005 07:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mario Wipf 10 Unities + Antwort hilfreich

Moin,

probier mal 'Err.Number' ...

Grüssle

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz