Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
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
Inhaltsverzeichnis

Tabelle Kopieren Objekt nicht festgelegt

Tabelle Kopieren Objekt nicht festgelegt
05.02.2015 08:29:17
Marcus
Hallo,
ich erzeuge aus CorelDraw eine Tabelle in Excel und kopiere diese.
Zunächst mein Code:

'Hier wird die Tabelle zum Kopieren in CorelDraw erstellt
Sub Tabelle()
Dim xlApp As Object
'Excel festlegen
Set xlApp = CreateObject("Excel.Application")
'Vorlage öffnen
xlApp.Application.Workbooks.Open FileName:="C:\Users\M. Kempf\Desktop\vorlage.xlsx"
'Test Beschriftung
xlApp.Application.ActiveWorkbook.ActiveSheet.Cells(1, 1) = "Hallo"
'Zellen auswählen
xlApp.Application.ActiveWorkbook.ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet. _
Cells(2, 2)).Select
'Kopieren
xlApp.Application.Selection.Copy
'Einfügen
ActivePage.ActiveLayer.Paste
'Ohne Speichern schließen
xlApp.Application.DisplayAlerts = False
xlApp.Application.ActiveWorkbook.Close
End Sub
Der erste durchlauf funktioniert tadellos.
Versuche ich das Ganze jedoch ein zweites mal, stoppt der Code in der kursiven Zeile und mir wird die Meldung:
"Laufzeitfehler '91':
Objektvariable oder with-Blockvariable nicht festgelegt"
angezeigt.
Ich bin etwas ratlos.
Danke im Voraus.
Marcus

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle Kopieren Objekt nicht festgelegt
05.02.2015 09:19:25
Ralf
Hallo,
probiere mal (ungetestet, da ich nix nachbauen mag):
'Vorlage öffnen
with xlApp.Application
.Workbooks.Open FileName:="C:\Users\M. Kempf\Desktop\vorlage.xlsx"
'Test Beschriftung
.ActiveWorkbook.ActiveSheet.Cells(1, 1) = "Hallo"
'Zellen auswählen
.ActiveWorkbook.ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(2, 2)).copy  _
destination:=ActivePage.ActiveLayer.Paste
end with

AW: Tabelle Kopieren Objekt nicht festgelegt
05.02.2015 09:28:34
Tino
Hallo,
nicht getestet, aber ich denke in der Zeile bezieht sich ActiveSheet.Cells(1, 1)
nicht auf xlApp.Application.ActiveWorkbook sondern auf eine andere Application.ActiveWorkbook.
PS:
Bei deinem Level sollte ein Code auch ohne Select machbar sein u. der ist auch ausbaufähig. ;-)
Gruß Tino

Anzeige
AW: Tabelle Kopieren Objekt nicht festgelegt
05.02.2015 10:13:42
Marcus
Hallo,
@ Ralf:
Der von dir gegebene Vorschlag endet leider im Laufzeitfehler 1004: "Die Copy-Methode des Range-Objektes konnte nicht ausgeführt werden."
@Tino:
Diese Vermutung hatte ich auch, jedoch stellte sich mir dann die Frage, warum der erste Durchgang anstandslos funktioniert.
Bezüglich des Levels lässt "Gut" immernoch Luft nach oben zu Profi ;-)
Wenn ich mir angucke wo ich vor 3 Monaten stand, als ich mit VBA begann, komme ich mittlerweile recht "Gut" voran .
Eine Sache noch die mir im Vorfeld auffiel, anfänglich habe ich Excel am Ende per application.quit geschlossen.
Dies resultierte aber darin, dass Excel als Prozess weiter ausgeführt wurde, bis ich die Makroausführung im CD-VBA-Editor per Stop beendete.
Auch war nachverlassen des Subs die Bearbeitung scheinbar immernoch aktiv, ich konnte sie nämlich über Unterbrechen anhalten.
vielleicht ist dies ja ein Anhaltspunkt.
Kann es etwas mit der Zwischenablage zu tun haben?
Gruß Marcus.

Anzeige
AW: Tabelle Kopieren Objekt nicht festgelegt
05.02.2015 10:22:21
Tino
Hallo,
teste es einfach und referenziere alle auf die richtige Applikation, Arbeitsmappe und Sheet.
Am Ende sollte unbedingt noch xlApp.quit rein, mit On Error Resume Next abfangen.
Sonst kann es vorkommen das du jede Menge unsichtbare Applikation hast.
Gruß Tino

AW: Tabelle Kopieren Objekt nicht festgelegt
05.02.2015 11:21:18
Marcus
Hallo,
Das mit dem Durchreferenzieren hat geklappt, ist ja ziemlich langwierig.
Mit dem Quit hatte ich anscheinend ein Verständnisproblem.
Ich dachte Excel wird als Gesamtanwendung beendet, womit eventuelle anderen gerade bearbeitete Arbeitsmappen ja auch geschlossen worden wären.
Habe deine Version gerade getestet und diese funktioniert ebenfalls wie erwartet tadellos.
Ich werde mein Level im nächsten Post wieder anpassen.
Gruß

Anzeige
AW: Tabelle Kopieren Objekt nicht festgelegt
05.02.2015 11:47:13
Tino
Hallo,
Das mit dem Durchreferenzieren hat geklappt, ist ja ziemlich langwierig.
Wenn man geschickt die With Anweisung anwendet, hält es sich in Grenzen.
Ich dachte Excel wird als Gesamtanwendung beendet
Ja normal ist es auch so.
Aber was ist wenn Excel das anders sieht, z. Bsp. durch Persönliche Arbeitsmappe, Add-In's usw.
Gruß Tino

versuch mal so...
05.02.2015 11:01:35
Tino
Hallo,
ist halt so ne Sache mit dem Level.
Wenn der Level zu hoch angesetzt ist geht man von einem gewissen Wissensstand aus u.
entsprechend fallen auch die Antworten aus.
Versuch mal so, habe ich jetzt nicht getestet.
(ActivePage.ActiveLayer weiß ich nicht was das bei dir ist)
Sub Tabelle()
Dim xlApp As Excel.Application
On Error GoTo ErrorHandler:
'Excel festlegen
Set xlApp = New Excel.Application
'Vorlage öffnen schreibgeschützt
With xlApp.Workbooks.Open("C:\Users\M. Kempf\Desktop\vorlage.xlsx", ReadOnly:=True)
'antelle von ActiveSheet würde ich die richtige Tabelle verwenden .Sheets("Tabelle1")
.ActiveSheet.Cells(1, 1) = "Hallo"
.ActiveSheet.Range(.ActiveSheet.Cells(1, 1), .ActiveSheet.Cells(2, 2)).Copy
'    .ActiveSheet.Range("A1:B2").Copy 'oder
'    .ActiveSheet.Cells(1, 1).Resize(2, 2).Copy 'oder
ActivePage.ActiveLayer.Paste '? Variable nicht deklariert
.Close False
End With
ErrorHandler:
If Err.Number  0 Then
MsgBox Err.Number & vbCr & vbCr & Err.Description, vbCritical
End If
On Error Resume Next
xlApp.Quit
End Sub
Gruß Tino

Anzeige
AW: versuch mal so...
05.02.2015 12:28:10
Ralf
Hallo Marcus,
mit
Set xlApp = New Excel.Application
erzeugst du eine neue Instanz von Excel, wie man schön im Task-Manager sehen kann.
Im Moment der Erzeugung ist diese embedded.
Diese musst du auch wieder mit dem gleichen Objekt beenden:
xlapp.quit
Mittels:
Application.Quit
sprichst du die App an, in der das Makro läuft.
Wenn du die beendest, beendet sich auch die Makroabarbeitung, was im allg. unerwünscht ist.
Das Makro sägt sich selbst den Ast ab ;-).
Ich verwende grundsätzlich beim Arbeiten mit mehreren Dateien/Apps/Tabellen Objekte, auf die man immer referenzieren kann. Dort ist aber dann auch wichtig diese auf Nothing zu setzen.
kleines Bsp:

dim quellbook as workbook
dim zielbook as workbook
dim quellsht as worksheet
dim zielsht as worksheet
set quellbook=workbooks("book1.xls")
set quellsht = quellbook.worksheets(1)
set zielbook=workbooks("book2.xls")
set zeielsht=zielbook.worksheets("blatt5")
code
Jetzt funktioniert auch intellisense und du brauchst nur auf die sheets und nicht immer auf die books&sheets verweisen.
Gruß
Ralf

Anzeige
warum schreibst Du mir das? ;-) oT.
05.02.2015 12:29:58
Tino

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige