Ausgabe in EXCEL-Mappen [Erledigt]
Moderator: Moderatoren
Ausgabe in EXCEL-Mappen [Erledigt]
Hallo im Forum,
als wirklicher Gelegenheitsprogrammierer (weshalb ich auch schon lange nicht mehr aktiv im Forum war) stehe ich vor einem für mich fast schon unlösbarem Problem: statt viel Papier möchten meine Kunden monatliche Reports in Form einer EXCEL-Arbeitsmappe per e-mail geliefert haben. Als "schnelle" Lösung könnte ich natürlich meine Druckausgaben in eine Datei umleiten und die Daten händisch in EXCEL einfügen und die entsprechenden Zellen der Mappen mit diesem Arbeitsblatt verknüpfen. Somit müsste ich aber jeden Monat einiges an "Handarbeit" investieren.
Soweit ich aber bisher gelesen habe, sollte es mit Active-x auch eleganter und ohne Handeingriff machbar sein. Nur wie ich dazu den Einstieg finde, ist mir bisher noch nicht ganz klar:
dazu meine Bitte ans Forum:
- kennt ihr weiterführende links
- könnt ihr mir den Weg beschreiben, wie ich vorgehen muss
- habt ihr "Schnipsel" Programmcode der mir weiterhilft
vielen Dank im Voraus
wolfgang
als wirklicher Gelegenheitsprogrammierer (weshalb ich auch schon lange nicht mehr aktiv im Forum war) stehe ich vor einem für mich fast schon unlösbarem Problem: statt viel Papier möchten meine Kunden monatliche Reports in Form einer EXCEL-Arbeitsmappe per e-mail geliefert haben. Als "schnelle" Lösung könnte ich natürlich meine Druckausgaben in eine Datei umleiten und die Daten händisch in EXCEL einfügen und die entsprechenden Zellen der Mappen mit diesem Arbeitsblatt verknüpfen. Somit müsste ich aber jeden Monat einiges an "Handarbeit" investieren.
Soweit ich aber bisher gelesen habe, sollte es mit Active-x auch eleganter und ohne Handeingriff machbar sein. Nur wie ich dazu den Einstieg finde, ist mir bisher noch nicht ganz klar:
dazu meine Bitte ans Forum:
- kennt ihr weiterführende links
- könnt ihr mir den Weg beschreiben, wie ich vorgehen muss
- habt ihr "Schnipsel" Programmcode der mir weiterhilft
vielen Dank im Voraus
wolfgang
Zuletzt geändert von wolfgang am Di, 09. Jun 2009 7:36, insgesamt 1-mal geändert.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Hi,
ich meine es gibt hier oder im neuen Excel Forum einiges. Auch im Source Verzeichnis von Xbase++ ab 1.90.xxx (ActiveX)
Eine andere Möglichkeit wurde hier auch beschrieben, einfach eine HTML Tabelle erstellen und als XLS abspeichern.
Das geht gut solange nur eine Tabelle (also ein Worksheet je Workbook) benötigt wird.
Wenn man dann etwas mehr Optik will, rate ich eine Mustervorlage mit Überschrift und Zeilenformatierung in Excel zu erstellen
und im HTML Format abzuspeichern. Die Überschriften stimmen ja schon, die Formatierung ist OK, somit muss man mit einem Texteditor nur noch die <TR><TD>... mit den Daten suchen.
Diese ersetzt man z.B. mit {{DATEN}} im Text und speichert das ganze als TXT Vorlage.
In deinem Programm liest du dann mit memoread() die Datei ein,
StrTran() die Daten einsetzen (Formatierung wie vorher)
und speicher als XLS
ich meine es gibt hier oder im neuen Excel Forum einiges. Auch im Source Verzeichnis von Xbase++ ab 1.90.xxx (ActiveX)
Eine andere Möglichkeit wurde hier auch beschrieben, einfach eine HTML Tabelle erstellen und als XLS abspeichern.
Das geht gut solange nur eine Tabelle (also ein Worksheet je Workbook) benötigt wird.
Wenn man dann etwas mehr Optik will, rate ich eine Mustervorlage mit Überschrift und Zeilenformatierung in Excel zu erstellen
und im HTML Format abzuspeichern. Die Überschriften stimmen ja schon, die Formatierung ist OK, somit muss man mit einem Texteditor nur noch die <TR><TD>... mit den Daten suchen.
Diese ersetzt man z.B. mit {{DATEN}} im Text und speichert das ganze als TXT Vorlage.
In deinem Programm liest du dann mit memoread() die Datei ein,
StrTran() die Daten einsetzen (Formatierung wie vorher)
und speicher als XLS
Gruß
Hubert
Hubert
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Hallo Namensvetter,
der einfachste Weg, mit dem du allerdings nichts formatieren etc. kannst, ist die Ergebnisse in eine DBF-Datei zu schreiben und die DBF-Datei in XLS umbenennen, dann wird die Datei problemlos mit Excel geöffnet.
der einfachste Weg, mit dem du allerdings nichts formatieren etc. kannst, ist die Ergebnisse in eine DBF-Datei zu schreiben und die DBF-Datei in XLS umbenennen, dann wird die Datei problemlos mit Excel geöffnet.
Viele Grüße
Wolfgang
Wolfgang
Re: Ausgabe in EXCEL-Mappen
Hallo Hubert und Wolfgang,
Danke für eure schnellen Antworten.
Ich habe eine EXCEL-Datei mit einer Anzahl von 28 zu füllenden,formatierten Mappen verschiedenen Namens, an denen ich nichts ändern möchte.
Die entscheidende Frage: wie kommen die Daten in die richtige Zelle ?
Gruss wolfgang
Danke für eure schnellen Antworten.
Ich habe eine EXCEL-Datei mit einer Anzahl von 28 zu füllenden,formatierten Mappen verschiedenen Namens, an denen ich nichts ändern möchte.
Die entscheidende Frage: wie kommen die Daten in die richtige Zelle ?
Gruss wolfgang
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Hallo,
wenn du 1 Excel Datei mit 28 "Mappen" hast, geht nur der Weg über ActiveX.
Bei HTML hättest du zig Dateien in Unterverzeichnissen.
Allerdings lautet wenn ich es recht weiß der Excel Name genau umgehrt.
Ein XLS ist ein WorkBook (Arbeitsmappe) mit mehreren Tabellen (TAB-Seiten).
Wie man einzelne Zellen ausfüllt zeigt dir das Beispiel:
\xppw32\source\samples\activex\msexcel\excel2.prg
Bei einigen Zellen geht das ganz gut, wenn es mehr werden,
sollte man die Daten in ein Array laden und dieses auf einmal eintragen.
TOM hat das mal hier beschrieben, es ginge auch über die Zwischenablage.
Auch Formatieren ist kein Problem, aber es ist einfacher immer eine leere XLS Datei mit richtigen Formatierungen
als Grundlage zu nehmen. Beim Formatieren sollte man auch immer einen Bereich auf einmal formatieren.
Es dauert in etwa genausolang das gesamte Arbeitsblatt zu wählen und auf einen Schlag zu formatiren wie
eine Zelle einzeln zu formatieren. Wenn es aber hundert werden, wird es lahm.
Wenn die Zeit (1 bis 2 Minuten) keine Rolle spielt, kann man es machen wie man will.
Bei Datumswerten muss man noch aufpassen, wenn man in Excel nicht damit rechnen will, sollte man
diese als Text formatieren.
wenn du 1 Excel Datei mit 28 "Mappen" hast, geht nur der Weg über ActiveX.
Bei HTML hättest du zig Dateien in Unterverzeichnissen.
Allerdings lautet wenn ich es recht weiß der Excel Name genau umgehrt.
Ein XLS ist ein WorkBook (Arbeitsmappe) mit mehreren Tabellen (TAB-Seiten).
Wie man einzelne Zellen ausfüllt zeigt dir das Beispiel:
\xppw32\source\samples\activex\msexcel\excel2.prg
Bei einigen Zellen geht das ganz gut, wenn es mehr werden,
sollte man die Daten in ein Array laden und dieses auf einmal eintragen.
TOM hat das mal hier beschrieben, es ginge auch über die Zwischenablage.
Auch Formatieren ist kein Problem, aber es ist einfacher immer eine leere XLS Datei mit richtigen Formatierungen
als Grundlage zu nehmen. Beim Formatieren sollte man auch immer einen Bereich auf einmal formatieren.
Es dauert in etwa genausolang das gesamte Arbeitsblatt zu wählen und auf einen Schlag zu formatiren wie
eine Zelle einzeln zu formatieren. Wenn es aber hundert werden, wird es lahm.
Wenn die Zeit (1 bis 2 Minuten) keine Rolle spielt, kann man es machen wie man will.
Bei Datumswerten muss man noch aufpassen, wenn man in Excel nicht damit rechnen will, sollte man
diese als Text formatieren.
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Hi,
so ich habe hier mal einige Überschriften aus dem Forum ActiveX und ActiveX/MS Office zusammen getragen.
Über die Suche habe ich nicht viel gefunden, aber allein die Überschriften sind schon aussagekräftig :
1. dbf-Datei schnell in Excel-Blatt kopieren
http://www.xbaseforum.de/viewtopic.php?f=28&t=2214
2. Excel (2007) und das Datum ...
http://www.xbaseforum.de/viewtopic.php?f=28&t=2476
3. excel copy und paste
http://www.xbaseforum.de/viewtopic.php?f=50&t=2715
und schon werden aus einem unlösbaren Problem mehrere Lösungswege
so ich habe hier mal einige Überschriften aus dem Forum ActiveX und ActiveX/MS Office zusammen getragen.
Über die Suche habe ich nicht viel gefunden, aber allein die Überschriften sind schon aussagekräftig :
1. dbf-Datei schnell in Excel-Blatt kopieren
http://www.xbaseforum.de/viewtopic.php?f=28&t=2214
2. Excel (2007) und das Datum ...
http://www.xbaseforum.de/viewtopic.php?f=28&t=2476
3. excel copy und paste
http://www.xbaseforum.de/viewtopic.php?f=50&t=2715
und schon werden aus einem unlösbaren Problem mehrere Lösungswege
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9362
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Hallo, Wolfgang.
Die verschiedenen Worksheets (Arbeitsmappen) werden über "Select" angewählt. Die Lösung für Deine Problem geht nur über ActiveX:
und jetzt die Daten setzen. Ich mache das über Range, und zwar mit der Zelladresse. Diese sei z.B. C15, und ich will den Wert "17,50" setzen:
SetExcelValue("C15",oWorkSheet,"17.50")
Und das ist die Funktion:
Die verschiedenen Worksheets (Arbeitsmappen) werden über "Select" angewählt. Die Lösung für Deine Problem geht nur über ActiveX:
Code: Alles auswählen
oApplication := CreateObject("Excel.Application")
oApplication:Visible:=.T.
oBook := oApplication:Workbooks:Open(cExcelFile)
oWorkSheet := oBook:Sheets(cFirstWorkSheet) // z.B. "Erste Mappe"
oWorkSheet:Select()
SetExcelValue("C15",oWorkSheet,"17.50")
Und das ist die Funktion:
Code: Alles auswählen
FUNCTION SetExcelValue(cRange,oWorkSheet,cValue)
LOCAL oRange
oRange := oWorkSheet:Range(cRange)
oRange:Select()
oRange:Value := cValue
oRange := nil
RETURN nil
Herzlich,
Tom
Tom
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
mal ne direkte Frage: Wenn ich per Odbcde von xls in dbf komme, geht das dann nicht auch umgedreht?
Viele Grüße
Stevie
Stevie
Ausgabe in EXCEL-Mappen Fortsetzung
Hallo im Forum,
habe hier mal meinen Code eingefügt, mit dem ich die Zwischenablage mit Daten füllen möchte, welche anschließend in ein entsprechendes Sheet des Workbooks einkopiert werden sollen .
Bekomme folgende Fehlermeldung:
[/color]
auf folgenden Programmcode:
[/color]
Wie muss der Code zum Einfügen aus der Zwischenablage richtig lauten ? Bin für jeden Hinweis dankbar.
Gruss Wolfgang
habe hier mal meinen Code eingefügt, mit dem ich die Zwischenablage mit Daten füllen möchte, welche anschließend in ein entsprechendes Sheet des Workbooks einkopiert werden sollen .
Bekomme folgende Fehlermeldung:
Code: Alles auswählen
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "F:\BD\BDV.EXE" Datum: 27.05.2009 11:32:28
Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 2
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: Paste
-> VALTYPE: A VALUE: {{359}, {360}, {0}, {1}, {0}, {0}, {0}, {0}, {0}, {1}, {7}, {7}, {7}}
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Die Paste-Methode des Worksheet-Objektes konnte nicht ausgefhrt werden.
oError:filename : NIL
oError:genCode : NIL
oError:operation : Paste
oError:osCode : -2146827284
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from EXCELARRAY(1991)
Called from EXCELTEXT(1806)
Called from DR_MBDT(107)
Called from BERICHTE(51)
Called from MAIN(113)
auf folgenden Programmcode:
Code: Alles auswählen
m_ausgabe := {{m_lstd}, {m_bstd}, {m_wi}, {m_inst}, {m_az}, {m_mod}, {m_ko}, {m_wt}, {m_ag}, {m_n}, {m_sa}, {m_se}, {m_start}}
m_range = "B" + LTRIM(STR(R))+ ":N" + LTRIM(STR(R))
oSheet:Range("&m_Range"):Select
oSheet:Paste(m_ausgabe)
Sleep(10)
Wie muss der Code zum Einfügen aus der Zwischenablage richtig lauten ? Bin für jeden Hinweis dankbar.
Gruss Wolfgang
Zuletzt geändert von wolfgang am Mi, 27. Mai 2009 11:42, insgesamt 2-mal geändert.
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1015
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Hallo Wolfgang,
damit man Deinen Code besser lesen kann, solltest Du den Code formatieren.
Beispiel:
Was meinst Du genau mit
damit man Deinen Code besser lesen kann, solltest Du den Code formatieren.
Beispiel:
Code: Alles auswählen
Function blabla()
return nil
wolfgang hat geschrieben:Allerdings meldet der Compiler Fehler beim Aufsuchen des Feldes im Sheet, ab dem Eingefügt werden soll.
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Re: Ausgabe in EXCEL-Mappen
Sorry, ich weiss nicht wie das funktioniert.Bertram Hansen hat geschrieben:Hallo Wolfgang,
damit man Deinen Code besser lesen kann, solltest Du den Code formatieren.
Beispiel:Was meinst Du genau mitCode: Alles auswählen
Function blabla() return nil
wolfgang hat geschrieben:Allerdings meldet der Compiler Fehler beim Aufsuchen des Feldes im Sheet, ab dem Eingefügt werden soll.
In der Zeile Range("B5"), wo im Sheet das Ergebnis eingefügt werden soll, meldet der Compiler "SYNTAX-Fehler". Auch bei anderer Schreibweise,
wie z.B. Range("B5").select oder Range("B5").select().
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Der Compiler kennt kein Range.wolfgang hat geschrieben:Sorry, ich weiss nicht wie das funktioniert.Bertram Hansen hat geschrieben:Hallo Wolfgang,
damit man Deinen Code besser lesen kann, solltest Du den Code formatieren.
Beispiel:Was meinst Du genau mitCode: Alles auswählen
Function blabla() return nil
wolfgang hat geschrieben:Allerdings meldet der Compiler Fehler beim Aufsuchen des Feldes im Sheet, ab dem Eingefügt werden soll.
In der Zeile Range("B5"), wo im Sheet das Ergebnis eingefügt werden soll, meldet der Compiler "SYNTAX-Fehler". Auch bei anderer Schreibweise,
wie z.B. Range("B5").select oder Range("B5").select().
Range ist eine Eigenschaft von oWorksheet muss darin per oWorksheet:Range aufgerufen werden.
Viele Grüße
Stevie
Stevie
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1015
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Hallo Manfred,
Einfach den Code markieren und auf das IconManfred hat geschrieben:Sorry, ich weiss nicht wie das funktioniert.
Code: Alles auswählen
klicken (oberer Bereich), dann wird der markierte Text als Code dargestellt.
Die Lösung hat Stevie schon beschrieben. Unter Xbase++ musst Du mit dem Doppelpunkt arbeiten.
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
- Manfred
- Foren-Administrator
- Beiträge: 21193
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Ausgabe in EXCEL-Mappen
Hi Bertram,
dass mußt Du mir jetzt mal erklären, wie Du das gemacht hast.
dass mußt Du mir jetzt mal erklären, wie Du das gemacht hast.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14654
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Ist doch ganz einfach: Manfred und Wolfgang verwechselt. Ist doch nix neues für Dich: Du wirst halt gerne verwechselt.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Re: Ausgabe in EXCEL-Mappen
Code: Alles auswählen
oSheet:Range("B5"):Select
&& Bearbeiten:Kopieren:Inhalte einfügen:Werte
oSheet:Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection:Copy(m_ausgabe)
Jetzt wird noch ein Syntayfehler im Befehl für Einfügen der Werte angezeigt. Hast du eine Idee, wie hier die Schreibweise sein muss ?
Danke
Wolfgang
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1015
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: Ausgabe in EXCEL-Mappen
Sorry Manfred
Hallo Wolfgang,
schaue Dir mal das Beispiel von Christof an (hat Hubert auch schon geschrieben)
http://www.xbaseforum.de/viewtopic.php?f=28&t=2214
Das steht eigentlich alles drin. Christof fügt alle Daten auf einmal in das Excelsheet. Also zuerst alle Daten sammeln und dann über die Zwischenablage einfügen.
Hallo Wolfgang,
schaue Dir mal das Beispiel von Christof an (hat Hubert auch schon geschrieben)
http://www.xbaseforum.de/viewtopic.php?f=28&t=2214
Das steht eigentlich alles drin. Christof fügt alle Daten auf einmal in das Excelsheet. Also zuerst alle Daten sammeln und dann über die Zwischenablage einfügen.
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Re: Ausgabe in EXCEL-Mappen
Ich glaube du siehst da etwas falsch. Meine errechnete Tabelle habe ich als Array in der Speichervariablen m_ausgabe stehen. Diesen Inhalt will ich jetzt in einer Aktion in eine ausgewählte Mappe meiner EXCEL-Datei über "Einfügen - Werte" - damit mir die Formatierung erhalten bleibt, hineinkopieren.Bertram Hansen hat geschrieben:Sorry Manfred
Hallo Wolfgang,
schaue Dir mal das Beispiel von Christof an (hat Hubert auch schon geschrieben)
http://www.xbaseforum.de/viewtopic.php?f=28&t=2214
Das steht eigentlich alles drin. Christof fügt alle Daten auf einmal in das Excelsheet. Also zuerst alle Daten sammeln und dann über die Zwischenablage einfügen.
Ich stelle meine Codierung nochmal übersichtlich ein; vielleicht sieht ja dann jemand, wo meine Fehler liegen.
Wolfgang
- AUGE_OHR
- Marvin
- Beiträge: 12908
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Ausgabe in EXCEL-Mappen
du musst mal weiter runter gehen da ist wohl das was du suchstwolfgang hat geschrieben:Ich glaube du siehst da etwas falsch. Meine errechnete Tabelle habe ich als Array in der Speichervariablen m_ausgabe stehen. Diesen Inhalt will ich jetzt in einer Aktion in eine ausgewählte Mappe meiner EXCEL-Datei über "Einfügen - Werte" - damit mir die Formatierung erhalten bleibt, hineinkopieren.Bertram Hansen hat geschrieben:schaue Dir mal das Beispiel von Christof an (hat Hubert auch schon geschrieben)http://www.xbaseforum.de/viewtopic.php?f=28&t=2214
Code: Alles auswählen
oSheet:range( "A6:F" + LTRIM( STR( 6 + nTreff ) ) ) :value := aData
gruss by OHR
Jimmy
Jimmy
Re: Ausgabe in EXCEL-Mappen
[aData ist dein Array und in diesem Fall wäre der "Datenbereich" von A6:Fxxx.[/quote]
Danke für deine Hinweise. Das Problem im Moment ist das Finden der "richtigen" Mappe. Zum Einfügen von Werten in EXCEL reicht es, wenn man die linke oberste Zelle eines Bereiches anspringt und ab da einfügt.
Wenn ich alles richtig gemacht habe, was ich allerdings noch bezweifle, dann steht meine Tabelle ja schon in der Zwischenablage.
Code: Alles auswählen
oSheet:range( "A6:F" + LTRIM( STR( 6 + nTreff ) ) ) :value := aData
Danke für deine Hinweise. Das Problem im Moment ist das Finden der "richtigen" Mappe. Zum Einfügen von Werten in EXCEL reicht es, wenn man die linke oberste Zelle eines Bereiches anspringt und ab da einfügt.
Wenn ich alles richtig gemacht habe, was ich allerdings noch bezweifle, dann steht meine Tabelle ja schon in der Zwischenablage.
Re: Ausgabe in EXCEL-Mappen
Mein Code sieht jetzt so aus:wolfgang hat geschrieben:[aData ist dein Array und in diesem Fall wäre der "Datenbereich" von A6:Fxxx.Code: Alles auswählen
oSheet:range( "A6:F" + LTRIM( STR( 6 + nTreff ) ) ) :value := aData
Code: Alles auswählen
m_ausgabe := {{m_slstd}, {m_sbstd}, {m_swi}, {m_sinst}, {m_saz}, {m_smod}, {m_sko}, {m_swt}, {m_sag}, {m_sn}, {m_ssa}, {m_sse}, {m_sstart}}
m_range = "B" + LTRIM(STR(R)) + ":N" + LTRIM(STR(R))
oSheet:Range("&m_Range"):Value := m_ausgabe
Sleep(40)
In EXCEL wird jetzt aber nur der Inhalt des ersten ARRAY-Feldes bis zum Ende eingefügt. Was mache in denn jetzt falsch ?
- AUGE_OHR
- Marvin
- Beiträge: 12908
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Ausgabe in EXCEL-Mappen
ich denke die m_range ist falsch aufbaut.wolfgang hat geschrieben:Mein Code sieht jetzt so aus:
[/color]Code: Alles auswählen
m_ausgabe := {{m_slstd}, {m_sbstd}, {m_swi}, {m_sinst}, {m_saz}, {m_smod}, {m_sko}, {m_swt}, {m_sag}, {m_sn}, {m_ssa}, {m_sse}, {m_sstart}} m_range = "B" + LTRIM(STR(R)) + ":N" + LTRIM(STR(R)) oSheet:Range("&m_Range"):Value := m_ausgabe Sleep(40)
In EXCEL wird jetzt aber nur der Inhalt des ersten ARRAY-Feldes bis zum Ende eingefügt. Was mache in denn jetzt falsch ?
müsste nachsehen, aber ich denke es ist pro/Datensatz ein Item Array.
Code: Alles auswählen
oSheet:range( "A6:F" + LTRIM( STR( 6 + nTreff ) ) ) :value := aData
gruss by OHR
Jimmy
Jimmy
Re: Ausgabe in EXCEL-Mappen
Hallo Auge_Ohr,
ich möchte den Range von links oben bis rechts unten mit den Daten füllen. Wenn ich den Code kennen würde, am liebsten immer drei Zeilen
pro Zyklus. Wenn du eine Idee hast . . . . bin dankbar für jeden Hinweis, der mich zum Ziel führt.
Schöne Pfingsttage
Wolfgang
ich möchte den Range von links oben bis rechts unten mit den Daten füllen. Wenn ich den Code kennen würde, am liebsten immer drei Zeilen
pro Zyklus. Wenn du eine Idee hast . . . . bin dankbar für jeden Hinweis, der mich zum Ziel führt.
Schöne Pfingsttage
Wolfgang
- AUGE_OHR
- Marvin
- Beiträge: 12908
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Ausgabe in EXCEL-Mappen
wolfgang hat geschrieben: Wenn du eine Idee hast . . . . bin dankbar für jeden Hinweis, der mich zum Ziel führt.
Code: Alles auswählen
SELECT UMSATZ // ist immer Umsatz
OLDREC := RECNO() // alte position
//
UMSATZ->( DBSEEK( cKDNR ) ) // suche anfang / GO TOP
IF FOUND() // besser
IF EOF() // EOF
MSGBOX( "Datenbank ist leer , es wird nicht gedruckt" )
GOTO( OLDREC )
RETURN
ENDIF
DO WHILE ( UMSATZ->UKDNR = cKDNR ) .AND. .NOT. EOF()
IF EVAL( myBlock ) .AND. !DELETED()
nTreff ++
AADD(aData, {UMSATZ->URECHNR ,;
UMSATZ->UMSATZGES ,;
SUBSTR( UMSATZ->URECHDAT, 1, 2 ) + "." + ;
SUBSTR( UMSATZ->URECHDAT, 3, 2 ) + "." + ;
SUBSTR( UMSATZ->URECHDAT, 5, 2 ),;
UMSATZ->UBEZAHLT ,;
UMSATZ->USTAND ,;
DTOC( UMSATZ->UBEZADAT ) })
ENDIF
SKIP
ENDDO
UMSATZ->( DBSEEK( cKDNR ) ) // suche anfang / GO TOP
BEGIN SEQUENCE
// Start Excel
oExcel := CreateObject( "Excel.Application" )
IF NIL == oExcel
// Excel.Application could not be created.
MSGBOX( "Excel Verbindung konnte nicht erstellt werden" )
* ? "Error: ", ComLastError()
* ? "Description:"
* ? ComLastMessage()
GOTO ( OLDREC )
RETURN
ELSE
* oWait := WAITBOX( oParent, "Tabelle erstellen", .T., { 318, 340 } )
oExcel:visible := .T. // NOT visible
// 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()
oExcel:Application:Workbooks:add()
// Office 97 Excel creates 3 worksheets by default
// Delete 2 of them
* oExcel:Application:Worksheets(3):delete()
* oExcel:Application:Worksheets(2):delete()
// Make the first one active
oWorkBook := oExcel:activeWorkBook
oExcel:Application:Worksheets( 1 ) :activate()
// Rename the sheet
oExcel:Application:Worksheets( 1 ) :name := UMSATZ->UKDNR
// Speed things up by creating an object containing the cells
oSheet := oExcel:Worksheets( 1 ) :cells
oSheet:item( 1, 1 ) :Value := DECRYPT( KUNDEN->KDNAME )
oSheet:item( 2, 1 ) :Value := DECRYPT( KUNDEN->STRASSE )
oSheet:item( 3, 1 ) :Value := ALLTRIM( DECRYPT( KUNDEN->PLZ ) + " " + DECRYPT( KUNDEN->ORT ) )
oSheet:item( 1, 6 ) :Value := DATE()
oSheet:item( 2, 6 ) :Value := TIME()
// Put in some values
// Column Headings
oSheet:item( 5, 1 ) :Value := "Rechnr."
oSheet:item( 5, 2 ) :Value := "Umsatz"
oSheet:item( 5, 3 ) :Value := "Datum"
oSheet:item( 5, 4 ) :Value := "Bezahlt"
oSheet:item( 5, 5 ) :Value := "Offen"
oSheet:item( 5, 6 ) :Value := "EZ Datum"
nStart := 5
// Set number format in cells x6 to x6+nTreff
* oSheet:range( "A6:A" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "Standart"
oSheet:range( "B6:B" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "#0,00"
oSheet:range( "C6:C" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "TT.MM.JJ"
oSheet:range( "D6:D" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "#0,00"
oSheet:range( "E6:E" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "#0,00"
oSheet:range( "F6:F" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "TT.MM.JJ"
oSheet:range( "A6:F" + LTRIM( STR( 6 + nTreff ) ) ) :value := aData
gruss by OHR
Jimmy
Jimmy
Re: Ausgabe in EXCEL-Mappen
Code: Alles auswählen
m_ausgabe := {{m_slstd}, {m_sbstd}, {m_swi}, {m_sinst}, {m_saz}, {m_smod}, {m_sko}, {m_swt}, {m_sag}, {m_sn}, {m_ssa}, {m_sse}, {m_sstart}}
* ----------------- Datenausgabe an EXCEL
R = R + 1
oSheet:Range("B" + LTRIM(STR(R)) + ":N" + LTRIM(STR(R))):value := m_ausgabe
oClipboard:Open()
sleep(50)
Kann man die Ausgabe in irgend einer Weise formartieren ? Der Charme soll doch darin liegen, dass man direkt einen Bereich bedient und nicht jede Zelle einzeln beschreibt. Ich krieg das einfach nicht hin, egal wie oft und intensiv ich die Beispiele im Forum studiere.
.... na ja, vielleicht bin ich zu alt dafür (oder einfach zu doof)
Schönes Wochenende
wolfgang