Automation Error EXCEL

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Automation Error EXCEL

Beitrag von Rudolf »

Hallo,
wenn ich bei der Erstellung einer EXCEL Tabelle währendessen in die Tabelle clicke, bekomme ich den folgenden Fehler. Wie kann ich das vermeiden ?
Grüsse
Rudolf


------------------------------------------------------------------------------
ERROR LOG of "V:\gastdebit\WWS.EXE" Date: 29-08-2007 14:26:04

Xbase++ version : Xbase++ (R) Version 1.90.331
Operating system : Windows XP 05.01 Build 02600 Service Pack 2
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: Value
-> VALTYPE: N VALUE: 6
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : 0
oError:filename : NIL
oError:genCode : NIL
oError:operation : Value
oError:osCode : -2146777998
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 4
oError:tries : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from AUTOMATIONOBJECT:ONERROR(1037)
Called from ASCOMERROR:RAISE(308)
Called from ASCOMERROR:RAISEERROR(505)
Called from ASCOMERROR:RAISEONERROR(530)
Called from AUTOMATIONOBJECT:SETNOIVAR(913)
Called from UMSATZ_EXCEL(143)
Called from (B)SYSSTART(0)

DBE Component Data :DBFDBE
DBE Component Order:CDXDBE
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Rudolf,

mach doch Excel erst Visible wenn alles fertig ist.

Gruß
Alfred
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Alfred,
danke für den Tip, wäre aber schöner wenn der Kunde sieht was vorgeht, ist sehr langsam der Ganze Aufbau.
Grüsse
Rudolf
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Rudolf,

wie viele Seiten werden denn da angelegt?
Alter Rechner?
Auf einem modernen Rechner gibt es eigentlich keine großen Performanceprobleme.

Ansonsten normale Oberfläche mit Progressbar und dann erst öffnen.

Wenn es schnell gehen muß, würde ich Turbo Delphi 2006 für den
Excelzugriff zum Vergleich probieren. Der Kunde sieht davon ja nichts.

Gruß
Alfred
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Alfred,
das mit der Geschwindikeit geht schon ok, notfalls nehm ich SQLEXPRESS dazu her, da geht es schneller
Grüsse
Rudolf
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo allerseits,
Excel ist beim Aufbau immer langsam, wenn es sichtbar ist - ist bei den eigenen Makros auch nicht anders!
Ich habe früher beim Programmieren unter Excel die Aktualisierung am Anfang meiner Makros/Programme immer abgeschaltet, dann alles berechnet und akkumuliert und zum Schluß die Anzeige wieder angeschaltet. Unterschied:
Beim Laufen mit Anzeige ca. 5 Minuten, beim Laufen ohne ca. 15 Sekunden!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Rudolf,

habe einiges verändert. Bei mir läuft das Programm.

Code: Alles auswählen

#include "activex.ch"
#include "excel.ch"
PROCEDURE MAIN()
LOCAL oExcel, oWorkbook, oSheet, oChart
                     //oExcel besser(siehe auch Fehler am Ende)
oExcel := CreateObject( "Excel.Application" )
                                      // mir fehlt wmeld  
//IF NIL == oApp                                 
//wmeld("EXCEL konnte nicht geöffnet werden",4) 
//* ? "Error: ", ComLastError()
//* ? "Description:"
//* ? ComLastMessage()
//ELSE
oExcel:visible := .T.               // siehe auch Hinweis von Martin 
oWorkbook = oExcel:Workbooks:Add()  //oWorkbook besser zum Suchen
oSheet := oWorkbook:Worksheets(1)  //Referenz auf das 1. Worksheet
oSheet:name := 'Spartenumsaetze'  //Name erst nach Referenz gesetzt
oSheet:Columns('A'):ColumnWidth := 14
oSheet:Columns('B'):ColumnWidth := 7
oSheet:Columns('C'):ColumnWidth := 7
oSheet:Columns('D'):ColumnWidth := 7
oSheet:Columns('E'):ColumnWidth := 7
oSheet:Columns('F'):ColumnWidth := 7
oSheet:Columns('G'):ColumnWidth := 7
oSheet:RANGE('A1:H1'):Font:Bold := .T.
oSheet:Columns('B'):NumberFormat := "#0,00"
oSheet:Columns('D'):NumberFormat := "#0,00"
oSheet:Columns('D'):NumberFormat := "#0,00"
oSheet:Columns('E'):NumberFormat := "#0,00"
oSheet:Columns('F'):NumberFormat := "#0,00"
oSheet:Columns('G'):NumberFormat := "#0,00"
oSheet:Range( "A1:G1" ):Interior:ColorIndex := 15
oSheet:Cells(1,1):Value := 'Sparte '  //bei mir funktioniert nur cells oSheet:Cells(1,2):Value := 'Anzahl '
oSheet:Cells(1,3):Value := 'Storno'
oSheet:Cells(1,4):Value := 'Guts.'
oSheet:Cells(1,5):Value := 'Verk.'
oSheet:Cells(1,6):Value := 'Preis'
oSheet:Cells(1,7):Value := 'Umsatz'
for x := 1 to 5
//oSheet:cells(x+1,1):Value := aSparten[x,1]
//oSheet:Cells(x+1,2):Value := aSparten[x,2]
//oSheet:Cells(x+1,3):Value := aSparten[x,3]
//oSheet:Cells(x+1,4):Value := aSparten[x,4]
//oSheet:Cells(x+1,5):Value := aSparten[x,5]
//oSheet:Cells(x+1,6):Value := aSparten[x,6]
oSheet:Cells(x+1,7):Value := 1000*x          // für Testzwecke  
next x
//Add(Left,Top,Height,Width)
oChart := oSheet:ChartObjects:Add(350,50,320,190) 
ochart:Activate
oExcel:ActiveChart:SetSourceData(oSheet:Range('G2:G21')) //oExcel!!!!!
RETURN
Bitte zu bedenken, dass ist alles try and error.

Gruß
Alfred
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hallo Alfred,

kurze Frage was macht dieser Programmteil in Excel? Stellt dies eine
Grafik mit x+y gerade dar ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Rolf,

ich habe Rudolfs Wunsch:

Standardgraphik(Säulen) im Zahlenworksheet neben der Zahlenreihe

realisiert.

Du kannst das Programm selbst ausprobieren. Ich habe es für Testzwecke
angepasst.

Gruß
Alfred
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Alfred,
vielen Dank, läuft super !
Ich hätte die komplette Beschreibung für EXCEL aus JAZZE, da wäre alles detailliert aufgeführt was möglich ist, wenn es jemand braucht, kann ich es per Email schicken.
Grüsse
Rudolf
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Rudolf,

ich wäre an der kompletten Beschreibung für Excel interessiert.

Gruß
Alfred
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Alfred
habs auf meinem Server gestellt unter
www.c-tec-at/xbase/excel.prg
www.c-tec-at/xbase/excel.ch

leider geht nur das Beispiel, in meinem Code muss noch ein Fehler sein, Chartobjects wird nicht erkannt.
Grüsse
Rudolf
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Rudolf,

ich habe deinen Code genommen und diesen an mehreren Stellen ab-
geändert. Hast du diese Änderungen schon nachvollzogen? Siehe auch
meine Randbemerkungen. Habe morgen eine längere Reise vor mir. Würde
dann die Änderungen noch dokumentieren. Hatte dazu leider heute keine
Zeit mehr.

Gruß
Alfred
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Alfred,
waren nur ein paar Kleinigkeinigkeiten, aber für mich unverständlich. Hier der Code der funktioniert bei mir:

Code: Alles auswählen

IF cXls2Open == NIL
  // Start Excel
  oExcel := CreateObject( "Excel.Application" )

  IF NIL == oExcel
    wmeld("EXCEL konnte nicht geöffnet werden",4)
  ELSE

    oExcel:visible := .T.                         // i want to see something
    // If there is a problem, don't let excel pop up messages
    oExcel:Application:DisplayAlerts := .F.
    // Create a workbook from scratch
    oExcel:Application:Workbooks:new()
    oWorkbook = oExcel:Workbooks:Add()  //oWorkbook besser zum Suchen
    oSheet := oWorkbook:Worksheets(1)  //Referenz auf das 1. Worksheet
    // Office 97 Excel creates 3 worksheets by default
    // Delete 2 of them
    // Make the first one active
    oExcel:Application:Worksheets(1):name:='Spartenumsätze'
    //oSheet := oExcel:Worksheets(1):cells

    oSheet:Columns('A'):ColumnWidth  := 14
    oSheet:Columns('B'):ColumnWidth  :=  7
    oSheet:Columns('C'):ColumnWidth  :=  7
    oSheet:Columns('D'):ColumnWidth  :=  7
    oSheet:Columns('E'):ColumnWidth  :=  7
    oSheet:Columns('F'):ColumnWidth  :=  7
    oSheet:Columns('G'):ColumnWidth  :=  7

    oSheet:RANGE('A1:H1'):Font:Bold      := .T.

    oSheet:Columns('B'):NumberFormat := "#0,00"
    oSheet:Columns('D'):NumberFormat := "#0,00"
    oSheet:Columns('D'):NumberFormat := "#0,00"
    oSheet:Columns('E'):NumberFormat := "#0,00"
    oSheet:Columns('F'):NumberFormat := "#0,00"
    oSheet:Columns('G'):NumberFormat := "#0,00"

    oSheet:Range( "A1:G1" ):Interior:ColorIndex := 15

    oSheet:cells(1,1):Value  := 'Sparte'
    oSheet:cells(1,2):Value  := 'Anzahl '
    oSheet:cells(1,3):Value  := 'Storno'
    oSheet:cells(1,4):Value  := 'Guts.'
    oSheet:cells(1,5):Value  := 'Verk.'
    oSheet:cells(1,6):Value  := 'Preis'
    oSheet:cells(1,7):Value  := 'Umsatz'
    for x := 1 to len(aSparten)
          oSheet:cells(x+1,1):Value  := aSparten[x,1]
          oSheet:cells(x+1,2):Value  := aSparten[x,2]
          oSheet:cells(x+1,3):Value  := aSparten[x,3]
          oSheet:cells(x+1,4):Value  := aSparten[x,4]
          oSheet:cells(x+1,5):Value  := aSparten[x,5]
          oSheet:cells(x+1,6):Value  := aSparten[x,6]
          oSheet:cells(x+1,7):Value  := aSparten[x,7]
    next x
    oChart := oSheet:ChartObjects:Add(350,50,320,190)
    ochart:Activate
    oExcel:ActiveChart:SetSourceData(oSheet:Range('G2:G21'))
    oExcel:application:workbooks(1):saveas(addpath(al_path,'export\umsatz.xls'))
    oExcel:Application:Quit()
    oExcel:Quit()
    oExcel:destroy()
  ENDIF
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Beitrag von Hans Zethofer »

Hallo Rudolf,

ich wäre an der kompletten Beschreibung für Excel interessiert.
Kannst du Sie mir zumailen

Danke

Mein Problem
Suche eine Möglichkeit aus einer Excel-Tabelle eine speziell farbig markierte Zelle
herauszufinden und die Info wegzuschreiben. Diese Zelle dient als Wert, es ist aber keinerlei Wert enthalten (eben nur die Farbmarkierung)

Unter VB soll es mit Range("A1").Interior.ColorIndex gehen.
Wie könnte man das in xbase lösen?
hat irgendjemand so ein Problem schon mal gelöst?

Lg
Hans
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Hans,
im Prinzip solltest Du das komplett 1 zu 1 so umsetzen können:
Aus

Code: Alles auswählen

Range("A1").Interior.ColorIndex
wird dann

Code: Alles auswählen

oSheet:Range( "A1" ):Interior:ColorIndex
- wie im übrigen auch Rudolf in seinem Codebeispiel stehen hat.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Beitrag von Hans Zethofer »

Hallo
xRet:=oSheet:Range( "A1" ):Interior:ColorIndex
bringt zwar keine Fehlermeldung aber auch keinen Rückgabewert
ich hätte mir erwartet einen Nummerncode oder die Farbe der Zelle im Klartext

wer hat eine Beschreibung aller möglichen Functionen die man ausführen kann die er mir auch zukommen lassen kann?

lg
Hans
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Wenn du Office 2003 komplett installiert hast, so findest du Hilfe zu allen Objekten, Methoden und Eigenschaften unter

C:\Programme\Microsoft Office\OFFICE11\1031

so z.B. für Excel die Datei VBAXL10.CHM
Viele Grüße
Wolfgang
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Beitrag von Hans Zethofer »

danke, für die Info zum Hilfe-File

war zwar nicht bei mir installiert (nur andere Hilfen zu Office), habe es aber im WEB gefunden

mit
oSheet:Range( "A1" ):Interior:ColorIndex = 3
kann man die Zellenfarbe zwar setzen (Rot), aber wie kann man die aktuelle Zellenfarbe auslesen. Hat jemand einen Tipp?

lg
Hans
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

die Hilfe habe ich bei mir gefunden, allerdings nur für Excel.
Gibt es die auch für Word ?
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Ja gibt es, die Datei heißt VBAWD10.CHM
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

die Installation der VBA Hilfen stehen standardmäßig auf 'Installieren bei erster Benutzung', somit wird diese im Prinzip über den Macroeditor des jeweiligen Programmes installiert, oder

1. man ruft selbst SETUP auf und
2. wählt 'Features hinzufügen'
3. Klick in 'Erweiterte Anpassungen von Anwendungen'
4. 'Gemeinsam genutzte Office Features'
5. 'Visual Basic für Applikationen'
6. 'Visual Basic Hilfe' auf immer installieren setzen
7. 'Aktualisieren' ... und fertig.

Ich habe es gerade mal bei Office 2003 gemacht ;-)
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Hubert, bloß manchmal funktionieren die Sachen vom Recorder nicht so.
Das mit der Hilfe hat sich aber schon erledigt, wollte erreichen das eine Datei schreibgeschützt geöffnet wird.
Est ist der dritte Parameter
also open(cFile,,.t.) öffnet die Datei schreibgeschützt
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Koverhage hat geschrieben: bloß manchmal funktionieren die Sachen vom Recorder nicht so.
Ich meinte jetzt nicht den MacroRecorder, sondern den VBA Editor und dort mit F1 auf Hilfe - zumindest vermute ich, dass dann die CD zur Installation der Hilfedatei angefordert wird. Ich habe diese wie oben beschrieben aber auch direkt installiert.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Hubert,

habe die gefunden, war schon installiert
Antworten