Excel während COM-Eintrag sperren
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Excel während COM-Eintrag sperren
Hi,
ich lese eine größere Menge Daten in ein leere Excel-Datei ein, die noch nirgends gespeichert ist. Deshlab will ich Excel im Vordergrund laufen lassen, sodass der Benutzer beim Schließen gefragt wird, wie er die Datei speichern will.
Jetzt habe ich allerdings ein Problem und zwar wenn der Benutzer während dem Einlesen der Daten (zeilenweise) mit der Maus in irgendeine Zelle klickt, so wird das Einlesen sofort gestoppt und eine Fehlermeldung (s. Anhang) wird erzeugt und das Programm anschließend beendet.
Gibt es eine Möglichkeit Aktionen vom Benutzer in Excel zu unterdrücken und zwar so lange wie die COM Daten einliest?
Google gibt mir leider keine Infos, außer dass ich den PC in der Zeit sperren soll, aber das kann keine Lösung sein, dafür ist die COM zu langsam..
Und noch eine weitere Frage: Hat jemand einen Link für eine Befehlssammlung zu ActiveX - Komponenten zu Word, Excel, Outlook, etc.. ?
Kann mir vorstellen, dass es schon zickmal angesprochen wurde, allerdings finde ich keine wirklichen Links, die das unter den Programmen wirklich aufteilen.
ich lese eine größere Menge Daten in ein leere Excel-Datei ein, die noch nirgends gespeichert ist. Deshlab will ich Excel im Vordergrund laufen lassen, sodass der Benutzer beim Schließen gefragt wird, wie er die Datei speichern will.
Jetzt habe ich allerdings ein Problem und zwar wenn der Benutzer während dem Einlesen der Daten (zeilenweise) mit der Maus in irgendeine Zelle klickt, so wird das Einlesen sofort gestoppt und eine Fehlermeldung (s. Anhang) wird erzeugt und das Programm anschließend beendet.
Gibt es eine Möglichkeit Aktionen vom Benutzer in Excel zu unterdrücken und zwar so lange wie die COM Daten einliest?
Google gibt mir leider keine Infos, außer dass ich den PC in der Zeit sperren soll, aber das kann keine Lösung sein, dafür ist die COM zu langsam..
Und noch eine weitere Frage: Hat jemand einen Link für eine Befehlssammlung zu ActiveX - Komponenten zu Word, Excel, Outlook, etc.. ?
Kann mir vorstellen, dass es schon zickmal angesprochen wurde, allerdings finde ich keine wirklichen Links, die das unter den Programmen wirklich aufteilen.
- Dateianhänge
-
- Fehler.png (26.64 KiB) 14733 mal betrachtet
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Excel während COM-Eintrag sperren
Guten Morgen benz,
versuche es mal mit visible:=.t. und später auf .f. zu setzen. Eine Sammlung der Befehle habe ich nicht und dies wurde hier schon öfters diskutiert. Sovile wie ich weiß, sind diese active-x befehle von mircosoft nicht aussreichend dokumentiert.
versuche es mal mit visible:=.t. und später auf .f. zu setzen. Eine Sammlung der Befehle habe ich nicht und dies wurde hier schon öfters diskutiert. Sovile wie ich weiß, sind diese active-x befehle von mircosoft nicht aussreichend dokumentiert.
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Excel während COM-Eintrag sperren
Ich würde visible auf .f. setzen bis die ganze Aktion durch ist und in Xbase++ z.B. einen Fortschrittsmeldung ...
Erst am Ende dann auf .t. (dann kommt Excel nach vorne und kann bedient werden.).
Du könntest aber auch einfach gleich den kompletten Dateinamen mit Pfad übergeben und automatisch speichern lassen.
Wenn du die Aktionen von Excel aber zeigen willst und die Eingaben sperren, könnte es funktionieren in Xbase++ ein Dialog/control zu erzeugen, der transparent ist und somit unsichtbar.
Dieses Systemmodal anzeigen und hoffen dass keine Benutzereingaben nötig werden
Ein solches Fenster könnte natürlich auch kleiner sein mit "Bitte warten ..." und eventuell einem Abbruch Button. Systemmodal verhindert Eingaben in andere Fenster.
Erst am Ende dann auf .t. (dann kommt Excel nach vorne und kann bedient werden.).
Du könntest aber auch einfach gleich den kompletten Dateinamen mit Pfad übergeben und automatisch speichern lassen.
Wenn du die Aktionen von Excel aber zeigen willst und die Eingaben sperren, könnte es funktionieren in Xbase++ ein Dialog/control zu erzeugen, der transparent ist und somit unsichtbar.
Dieses Systemmodal anzeigen und hoffen dass keine Benutzereingaben nötig werden
Ein solches Fenster könnte natürlich auch kleiner sein mit "Bitte warten ..." und eventuell einem Abbruch Button. Systemmodal verhindert Eingaben in andere Fenster.
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: Excel während COM-Eintrag sperren
Hm ok. Das mit visible := .F. scheint für mich die beste Alternative, weil das schon ziemlich lange dauert und für die Benutzer schwierig wird, wenn sie keine anderen Eingaben mehr machen können. Ein Statusanzeiger wäre schon nicht schlecht, ich denke da immer an eine Progressbar aber ich habe so eine leider noch nie benutzt und weiß auch nicht wo ich die herbekomme. Könnt ihr mir da weiterhelfen?
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Excel während COM-Eintrag sperren
Wenn die User anders arbeiten sollen, dann ist eine Laufanzeige nicht so toll (keine wirkliche Info)
Besser einen kleinen Dialog machen "Erledigt x von nMax" mit Abbrechen button und den ON TOP anzeigen.
Dann kann jeder machen was er will (außer Excel) und sieht doch die Anzeige.
Besser einen kleinen Dialog machen "Erledigt x von nMax" mit Abbrechen button und den ON TOP anzeigen.
Dann kann jeder machen was er will (außer Excel) und sieht doch die Anzeige.
Gruß
Hubert
Hubert
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2945
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel während COM-Eintrag sperren
Also bei meinem Office 2003 findet man die Objectmodelle mit Methoden, Properties etc. als Hilfedateien unter
...\Microsoft Office\Office11\1031.
Wenn diese jemand haben möchte (ca. 5.5MB für Excel, Word,Outlook) so bitte eine Mail an mich (ciriack_at_ciju.de)
...\Microsoft Office\Office11\1031.
Wenn diese jemand haben möchte (ca. 5.5MB für Excel, Word,Outlook) so bitte eine Mail an mich (ciriack_at_ciju.de)
Viele Grüße
Wolfgang
Wolfgang
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel während COM-Eintrag sperren
Wolfgang zeigt ja wo sich bei Office XP 2003 noch die Help Files sind aber ab Office 2007 (mit Ribbonbar)Rolf Ramacher hat geschrieben:Eine Sammlung der Befehle habe ich nicht und dies wurde hier schon öfters diskutiert. Sovile wie ich weiß, sind diese active-x befehle von mircosoft nicht aussreichend dokumentiert.
gibt es Help Files nur noch mit Online Verbindung z.b. "im" Macro-Editor bei F1.
auf der Start Seite http://msdn.microsoft.com/de-de/library ... 62978.aspx muss man auswählen welche Produkt man haben will.
z.b. Excel http://msdn.microsoft.com/de-de/library ... 79694.aspx
und dann rechts auf den Link zur API Referenz ( von Excel ) http://msdn.microsoft.com/en-us/library/ee861528.aspx
jetzt wählt man das "Object model" http://msdn.microsoft.com/en-us/library/ff194068.aspx
und kann sich die Members und deren Properties, Methods und Events ansehen.
wenn du o:visible := .F. hast "sieht" der User es ja gar nicht und es ist auch "schneller" beim befüllen.Benz hat geschrieben:Gibt es eine Möglichkeit Aktionen vom Benutzer in Excel zu unterdrücken und zwar so lange wie die COM Daten einliest?
grundsätzlich ist die activeX Schnittstelle bei Office bidirektional d.h. Excel "sendet" auch Events wenn der User eine Aktion auslöst ( die man dann unterbinden kann )
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: Excel während COM-Eintrag sperren
AUGE_OHR hat geschrieben:Wolfgang zeigt ja wo sich bei Office XP 2003 noch die Help Files sind aber ab Office 2007 (mit Ribbonbar)Rolf Ramacher hat geschrieben:Eine Sammlung der Befehle habe ich nicht und dies wurde hier schon öfters diskutiert. Sovile wie ich weiß, sind diese active-x befehle von mircosoft nicht aussreichend dokumentiert.
gibt es Help Files nur noch mit Online Verbindung z.b. "im" Macro-Editor bei F1.
auf der Start Seite http://msdn.microsoft.com/de-de/library ... 62978.aspx muss man auswählen welche Produkt man haben will.
z.b. Excel http://msdn.microsoft.com/de-de/library ... 79694.aspx
und dann rechts auf den Link zur API Referenz ( von Excel ) http://msdn.microsoft.com/en-us/library/ee861528.aspx
jetzt wählt man das "Object model" http://msdn.microsoft.com/en-us/library/ff194068.aspx
und kann sich die Members und deren Properties, Methods und Events ansehen.
wenn du o:visible := .F. hast "sieht" der User es ja gar nicht und es ist auch "schneller" beim befüllen.Benz hat geschrieben:Gibt es eine Möglichkeit Aktionen vom Benutzer in Excel zu unterdrücken und zwar so lange wie die COM Daten einliest?
grundsätzlich ist die activeX Schnittstelle bei Office bidirektional d.h. Excel "sendet" auch Events wenn der User eine Aktion auslöst ( die man dann unterbinden kann )
Das ist schonmal ein riesen Fortschritt und beinahe das was ich gesucht habe. Leider gibt Microsoft da wohl nicht alles frei oder ich finde das weiterführende nicht.
Jedenfalls wenn ich hier bin http://msdn.microsoft.com/en-us/library/ff839770.aspx dann sehe ich dass "Font" das letzte in der Hierarchie ist, allerdings gehören zu "Font" ja noch weitere Eigenschaften wie z.B. "Name" (s. Beispiel) und "Color" habe ich aus dem Forum. Aber woher bekomme ich die restlichen Eigenschaften von Font? Wie kann ich z.B. den Text einer Zelle fett machen?
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2945
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel während COM-Eintrag sperren
Hier meine Funktion um einen Bereich in Excel mit Daten aus einem Array (bevorzugt, da sehr schnell) zu befüllen und den Font zu setzen:
Einzelne Zellen kannst du mit verschiedenen Eigenschaften versehen, z.B.
Code: Alles auswählen
static FUNCTION SetExcelValue(cRange,oWorkSheet,xValue)
LOCAL oRange
oRange := oWorkSheet:Range(cRange)
oRange:Select()
oRange:Value := xValue
oRange:Font:Name:="Arial"
oRange:Font:Size:=8
oRange := nil
RETURN nil
Code: Alles auswählen
oWorkSheet:Columns( 5 ):NumberFormat := "#.#0,00"
oWorkSheet:Columns( 6 ):NumberFormat := "0 %"
oWorkSheet:Columns( 8 ):AutoFit()
Viele Grüße
Wolfgang
Wolfgang
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Excel während COM-Eintrag sperren
Hi, suche doch mal nach *excel* und du wirst viele Einträge finden, schon in den Überschriften sind dann jede Menge Anregungen.
auch oExcel oder oBook oder oSheet oder oWorksheet sind dankbare Suchbegriffe zu dem Thema
auch oExcel oder oBook oder oSheet oder oWorksheet sind dankbare Suchbegriffe zu dem Thema
Gruß
Hubert
Hubert
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Excel während COM-Eintrag sperren
damit
oExcel:Range("A1"):Font():Bold := .t.
Beispiel:
oExcel:Range("A1:I1"):Value := aHeader //Spaltenüberschriften im Array
oExcel:Range("A1:I1"):Font():Size := 10 //Schriftgrösse ändern
oExcel:Range("A1:I1"):Font():Name := "Times" //Schrift festlegen
oExcel:Range("A1:I1"):Font():Bold := .t.
oExcel:Range("A1"):Font():Bold := .t.
Beispiel:
oExcel:Range("A1:I1"):Value := aHeader //Spaltenüberschriften im Array
oExcel:Range("A1:I1"):Font():Size := 10 //Schriftgrösse ändern
oExcel:Range("A1:I1"):Font():Name := "Times" //Schrift festlegen
oExcel:Range("A1:I1"):Font():Bold := .t.
Gruß
Klaus
Klaus
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel während COM-Eintrag sperren
unter dem Link findest du in Zeile 3 dasBenz hat geschrieben:Jedenfalls wenn ich hier bin http://msdn.microsoft.com/en-us/library/ff839770.aspx dann sehe ich dass "Font" das letzte in der Hierarchie ist, allerdings gehören zu "Font" ja noch weitere Eigenschaften wie z.B. "Name" (s. Beispiel) und "Color" habe ich aus dem Forum. Aber woher bekomme ich die restlichen Eigenschaften von Font? Wie kann ich z.B. den Text einer Zelle fett machen?
das ist ein Link zu http://msdn.microsoft.com/en-us/library/ff840959.aspxReturns a Font object that represents the font of the specified object.
wenn du dann auf Properties gehst bekommst du alle Eigenschaften die ein Font hat.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: Excel während COM-Eintrag sperren
Das war viel zu einfach als dass ich es selbst hätte herausfinden können
Danke!!!
Danke!!!
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel während COM-Eintrag sperren
in der DXE Lib (Wissensbasis) findest du ein "native" Progressbar Control.Benz hat geschrieben:... ich denke da immer an eine Progressbar aber ich habe so eine leider noch nie benutzt und weiß auch nicht wo ich die herbekomme. Könnt ihr mir da weiterhelfen?
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Excel während COM-Eintrag sperren
Alaska hat für Subscriptionskunden einige neue Controls im Quellcode veröffentlicht, darunter auch ein Progressbar.
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel während COM-Eintrag sperren
und der ist sogar "native"brandelh hat geschrieben:Alaska hat für Subscriptionskunden einige neue Controls im Quellcode veröffentlicht, darunter auch ein Progressbar.
Code: Alles auswählen
...
nHWND := CreateWindowExA( 0, PROGRESS_CLASSA, 0, ::nStyles, ;
0,0, aSize[1],aSize[2], ;
::SetParent():GetHWND(), 0, ;
GetModuleHandleA(0), 0 )
...
gruss by OHR
Jimmy
Jimmy