Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
280to284
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
280to284
280to284
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler in VBA

Fehler in VBA
21.07.2003 11:03:57
Wolfgang
Hallo,
ich versuche mit einem Wordmakro Daten in ein Excelsheet zu übertragen. Der Vorgang funktioniert beim ersten Mal ganz toll. auch weitere Übertragungen der Daten sind erfolgreich, solange ich das Workbook, in das ich schreibe nicht schließe. Wird das Workbook von Word jedoch ein weiteres Mal geöffnet, da es in Excel bereits geschlossen wurde, dann wird mein Eintrag in die erste Zeile geschrieben, und nicht in die letzte Zeile, in der noch kein Eintrag steht.
Kann mir bitte jemand helfen.

Danke
Wolfgang

Hier meinen Code:
strPath = ActiveDocument.Path
If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"

strFileName = "Quality_check.xls"
PathName = strPath & strFileName

On Error Resume Next
Err.Clear
Set xl = GetObject(, "Excel.Application")
If Err.Number > 0 Then
Set xl = CreateObject("Excel.Application")
Set wb = xl.Workbooks.Open(PathName)
Else
On Error Resume Next
Err.Clear
xl.Workbooks(strFileName).Activate
If Err.Number > 0 Then
Set wb = xl.Workbooks.Open(PathName)
End If
End If

xl.Visible = True

'Zeilen werden gezählt, in denen ein Eintrag steht.
'Nächster Eintrag wird nach dem letzten Eintrag angefügt
LastRow = xl.Cells(Rows.Count, 4).End(xlUp).Row
'MsgBox "Zeilen: " & LastRow
actualRow = LastRow + 1

xl.Cells(actualRow, 1).EntireRow.Insert
xl.Cells(actualRow, 2) = dnamevalue
xl.Cells(actualRow, 3) = productvalue
xl.Cells(actualRow, 4) = deldatevalue
xl.Cells(actualRow, 5) = percent & "%"
If avA1 = False Then
If avB1 = False Then
xl.Cells(actualRow, 6) = resC1
Else
xl.Cells(actualRow, 6) = resB1
End If
Else
xl.Cells(actualRow, 6) = resA1
End If

If avA = False Then
If avB = False Then
xl.Cells(actualRow, 7) = ergC
Else
xl.Cells(actualRow, 7) = ergB
End If
Else
xl.Cells(actualRow, 7) = ergA
End If
xl.Cells(actualRow, 8).FormulaR1C1 = "=AVERAGE(IF(RC[-2]>0.66,1+1.5*(RC[-2]-1),0),IF(RC[-1]>0.66,1+1.5*(RC[-1]-1),0))"
xl.Cells(actualRow, 9).FormulaR1C1 = "=IF(RC[-4]="""","""",RC[-4]*RC[-1])"
xl.Cells(actualRow + 3, 9).FormulaLocal = "=Sum(I7:I" & actualRow & ")"

Set wb = Nothing
Set xl = Nothing


End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler in VBA
21.07.2003 16:37:18
Michael Scheffler
Hi,

ich würde vorschlagen, Du schaust Dir erst mal die "GetObject"-Funktions-Hilfe unter Excel an.

Die macht eigentlich genau das, was Du willst. Aus Deinen gesamte Error-Anweisungen werde ich nicht schlau.

Und dann schauen wir mal weiter.

Gruß

Micha


AW: Fehler in VBA
22.07.2003 08:56:41
Wolfgang
Hallo Michael,
die getObject Funktion weist xl eine Excel Applikation zu, falls Excel bereits zuvor, oder mit einer anderen Datei gestartet wurd. Läuft die Instanz Excel noch nicht, dann muss ich doch createobject machen, oder?
Wolfgang


AW: Fehler in VBA
22.07.2003 09:50:23
Michael Scheffler
Hallo Wofgang,

dann hast Du ein anderes Word oder Excel als ich, bei mir in der Hilfe steht:
"Gibt einen Verweis auf ein ActiveX-Objekt aus einer Datei zurück...." Usw. usf.

Wenn es so einfach wäre, laufende Excel-Instanzen zu entdecken, gebe es den Hinweis auf die API-Funktionen nicht. Deshalb ja mein Hinweis, schau Dir bitte das "GetObject" in der Excel-Hilfe an und dann sehen wir weiter.

Was Du programmiert hast, liefert Die eine Verweis auf Excel zurück (weol Excel die .XLS-Datei erstellt hat, mehr aber nicht), öffnet eine neue Instanz und legt einen NEUE Datei an, öffnet aber nicht die alte! Das willst Du aber nicht.


Gruß

Micha


Anzeige
AW: Fehler in VBA
22.07.2003 12:20:57
Wolfgang
Hallo Michael,

Ich habe folgendes gefunden. Die GetObject FUnktion instanziert Objekte aus einer bereits laufenden Anwendung oder aus einer Datei.

Hast du aber eine Idee, wie man das anders lösen kann, so dass in jedem Fall die richtige Datei geöffnet und bearbeitet wird?
Danke
Wolfgang


AW: Fehler in VBA
22.07.2003 12:55:38
Michael Scheffler
Ich hatte Dir schon den Hinweis mit API gegeben, das ist in der Excel-Hilfe unter GetObject ausgezeichnet dokumetiert.

Ansosnte: Excel sagt das Gleiche wie Word:

Anmerkung Verwenden Sie die GetObject-Funktion, wenn eine aktuelle Instanz des Objekts existiert oder wenn Sie das Objekt mit einer bereits geladenen Datei erstellen wollen. Wenn keine aktuelle Instanz existiert und Sie das Objekt nicht mit einer geladenen Datei starten wollen, verwenden Sie die CreateObject-Funktion.

Wenn ein Objekt sich selbst als ein Objekt mit nur einer Instanz registriert hat, wird nur eine Instanz des Objekts erstellt, ungeachtet dessen, wie oft CreateObject ausgeführt wird. Bei einem Objekt mit nur einer Instanz gibt GetObject bei einem Aufruf mit einer Null-Zeichenfolge ("") immer die gleiche Instanz zurück. Ein Fehler tritt auf, wenn das Argument pathname nicht angegeben wird. Sie können GetObject nicht verwenden, um einen Verweis auf eine mit Visual Basic erstellte Klasse zu erhalten.


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige