Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  ExcelApp oeffnen/zugreifen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  ExcelApp oeffnen/zugreifen (2002 mal gelesen)
JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 04. Dez. 2013 14:37    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 liebe Experten,

Ich habe in meinem Programm einen Teil der mir ueberpruefen soll ob, Excel schon geoeffnet ist. Wenn ja, soll es mir eine bestimmte Tabelle laden, aus der ich dann Daten auslese. Wenn Excel noch nicht geoeffnet ist, soll es Excel erst oeffnen und dann die Tabelle laden.
Folgenden Code habe ich hierzu verwendet:

Code:
On Error Resume Next
Err.Clear
Set excelApp = GetObject(, "Excel.Application")
If Err <> 0 Then
    Err.Clear
    Set excelApp = CreateObject("Excel.Application")
    If Err <> 0 Then
        MsgBox "Could not start Excel! Make sure it is already installed on your system.", vbExclamation
        End
    End If
End If
Set excelWbk = Workbooks.Open(FileName:="Pfad:\was_auch_immer.xlsx")
'quit program if Excel file cannot be found in right location
If Err <> 0 Then
    MsgBox "Could not find the "was_auch_immer"!" & vbCr & "Please make sure that it is already saved in the right location.", vbExclamation
    excelApp.Quit
    End
End If
Set excelSht = excelApp.Worksheets(1)

Solange Excel vor dem Ausfuehren des Codes geschlossen ist, funktioniert die ganze Sache einwandfrei. Wenn aber Excel schon geoeffnet ist und ich mein Programm laufen lasse, bringt es mir einen Fehler, dass der angegebene Pfad nicht gefunden werden kann, es oeffnet sozusagen das Workbook nicht. Dann bricht mein Programm ab und schliesst auch Excel. Schaue ich dann aber in den Task Manager, sehe ich, dass Excel noch als Prozess ausgefuehrt wird.
Was mache ich falsch und wie kann ich es loesen? Ich hoffe ihr koennt mir weiterhelfen.

MfG & vDiV
JoKurt87

------------------
shit's getting real:

(sqrt(-shit))^2

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 04. Dez. 2013 17:57    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 JoKurt87 10 Unities + Antwort hilfreich

Hallo,

wo kommt denn das Objekt WORKBOOKS her?

Zitat:
Set excelWbk = Workbooks.Open(FileName:="Pfad:\was_auch_immer.xlsx")


Müsste es nicht excelapp.workbooks sein?
Und sollte nicht erst mal geschaut werden ob die Datei schon geöffnet ist (Workbooks Auflistung durchlaufen)?

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht. 
www.ib-stelberg.de

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

JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 04. Dez. 2013 18:09    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

Zitat:
Müsste es nicht excelapp.workbooks sein?

Sry, ich hatte die dims vergessen zu posten:

Code:
Dim excelApp As Excel.Application
Dim excelWbk As Workbook
Dim excelSht As Worksheet

Ist es wichtig, dass es "workbooks" heisst und nicht wie bei mir "workbook"?

Zitat:
Und sollte nicht erst mal geschaut werden ob die Datei schon geöffnet ist (Workbooks Auflistung durchlaufen)?

Das kann man noch hinzufuegen, allerdings loest das nicht mein Problem, denn selbst wenn die Datei nicht offen ist, sondern nur eine neue, bringt es mir den oben beschriebenen Fehler.

------------------
shit's getting real:

(sqrt(-shit))^2

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 05. Dez. 2013 14:36    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 JoKurt87 10 Unities + Antwort hilfreich

Hallo,

was ich meinte ist, du benutzt ein Objekt WORKBOOKS ohne das es vorher zugewiesen wurde.
Wenn du mal deine "Fehlerbehandlung" ON ERROR RESUME NEXT abschaltest und deinen Code Zeilenweise abarbeitest wirst du sehen das hier der Fehler ist.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 05. Dez. 2013 16:06    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

Ich habe jetzt folgende Zeile:

Code:
Set excelWbk = Workbooks.Open(FileName:="Pfad:\was_auch_immer.xlsx")

geaendert zu:

Code:
Set excelWbk = excelApp.Workbooks.Open(FileName:="Pfad:\was_auch_immer.xlsx")

Jetzt funktioniert es ohne weiteres, danke dafuer!  
Allerdings verstehe ich nicht, wieso das ganze funktioniert hat, solange Excel geschlossen war. Dann war das Objekt "Workbooks" ja schliesslich auch nicht zugewiesen.  

------------------
shit's getting real:

(sqrt(-shit))^2

[Diese Nachricht wurde von JoKurt87 am 05. Dez. 2013 editiert.]

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 11. Dez. 2013 23:17    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 JoKurt87 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von JoKurt87:

Allerdings verstehe ich nicht, wieso das ganze funktioniert hat, solange Excel geschlossen war. Dann war das Objekt "Workbooks" ja schliesslich auch nicht zugewiesen.   

Hallo,

schwer zu sagen, ich sag mal so, die fehlende Referenz auf Workbooks.open führt eigentlich immer zu einem Fehler,
ist nur die Frage inwieweit Du ihn mitbekommen hast;-)

Hast du nach dem Durchlauf der Sub im 'CreateObject-Modus' also mit geschlossenem Excel, mal im Nachgang im Taskmanager die Instanzen überprüft?
Oder andre Idee, setz mal ExcelApp.visible = 1 und geh' mal das Ganze im Einzelschritt (F8) durch,
da gibts ganz sicher irgendwo nen Fehler, weil das fehlende 'ExcelApp' vor dem exceleigenen Open-Kommando fehlt.
Auch wenn es erstmal den Anschein hat, auf diese&jene Art funktioniert es aber doch, warum?

Solche 'unsauberen' Zeilen können ganz schön heimtückisch werden,
deswegen immer brav die App davorschreiben, mit der man kommunizieren will.


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

JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 13. Dez. 2013 15:57    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

Zitat:
Hast du nach dem Durchlauf der Sub im 'CreateObject-Modus' also mit geschlossenem Excel, mal im Nachgang im Taskmanager die Instanzen überprüft?

Ja, auf die Idee war ich auch schon gekommen, aber da war nix, alles ganz normal. Genau das hat ja dazu gefuehrt, dass ich den Fehler nicht bemerkt habe.

Solche Fehler zu finden ist schwer, wenn sie nur sporadisch und uneinsichtig auftreten.
Ausserdem ist er mir nicht aufgefallen, weil ich von VBA eigentlich null Ahnung habe und schon stolz bin, dass mein komplettes Programm das macht, was es soll. 

Danke nochmal!

------------------
shit's getting real:

(sqrt(-shit))^2

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

JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 03. Jan. 2014 13:41    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

Ich habe noch eine bln-Variable eingefuegt, um das Schliessen von Excel zu veraendern, damit schon geoeffnete Exceldateien nicht mit geschlossen werden.
Hier der komplette Code:

Code:
On Error Resume Next
Err.Clear
Set excelApp = GetObject(, "Excel.Application")
blnNewApp = False
If Err <> 0 Then
    blnNewApp = True
    Err.Clear
    Set excelApp = CreateObject("Excel.Application")
    If Err <> 0 Then
        MsgBox "Could not start Excel! Make sure it is already installed on your system.", vbExclamation
        End
    End If
End If
Set excelWbk = excelApp.Workbooks.Open(FileName:="Pfad:\was_auch_immer.xlsx")
'quit program if Excel file cannot be found in right location
If Err <> 0 Then
    MsgBox "Could not find "was_auch_immer"!" & vbCr & "Please make sure that it is already saved in the right location.", vbExclamation
    If blnNewApp = True Then
        excelApp.Quit
    Else
        excelWbk.Close
    End If
    End
End If
Set excelSht = excelApp.Worksheets(1)

Wer dies benutzen kann, soll gluecklich damit werden. 

MfG JoKurt87

------------------
shit's getting real:

(sqrt(-shit))^2

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