Excel Tabellen nach der Erzeugung bearbeiten
Moderator: Moderatoren
- Koverhage
- 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:
Excel Tabellen nach der Erzeugung bearbeiten
Hallo,
mit Word läuft der nachstehende Code, aber mit Excel nicht.
was muss ich in Excel anders machen ?
oExcel := oExcel:dynamicCast(ActiveXObject())
oExcel:Quit := {||lExcelFinished := .T.}
oExcel:visible := .T.
lExcelFinished := .F.
// Fülle Tabelle mit daten füllen
// Hier Excel geöffnet lassen bis durch User beendet wird
Do WHILE !lExcelFinished
// Just wait
EndDo
mit Word läuft der nachstehende Code, aber mit Excel nicht.
was muss ich in Excel anders machen ?
oExcel := oExcel:dynamicCast(ActiveXObject())
oExcel:Quit := {||lExcelFinished := .T.}
oExcel:visible := .T.
lExcelFinished := .F.
// Fülle Tabelle mit daten füllen
// Hier Excel geöffnet lassen bis durch User beendet wird
Do WHILE !lExcelFinished
// Just wait
EndDo
- Koverhage
- 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:
Hallo Alfred,
wenn ich mit Word was mache, hat der User die Möglichkeit das erzeugte Dokument zu bearbeiten.
Siehe auch ActiveX und Word. Es wird über Dynamiccast ein Ereignis erzeuht wenn der User den Close Button klickt.
Bloss unter Excel funktioniert das nicht.
Wenn der User eine Excel-Tabelle erstellen lässt, möchte er diese direkt bearbeiten und nicht erst wieder Excel starten und das Dokument laden.
Klaus
wenn ich mit Word was mache, hat der User die Möglichkeit das erzeugte Dokument zu bearbeiten.
Siehe auch ActiveX und Word. Es wird über Dynamiccast ein Ereignis erzeuht wenn der User den Close Button klickt.
Bloss unter Excel funktioniert das nicht.
Wenn der User eine Excel-Tabelle erstellen lässt, möchte er diese direkt bearbeiten und nicht erst wieder Excel starten und das Dokument laden.
Klaus
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- Koverhage
- 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:
Rolf,
das habe ich gemacht. Wollte nicht den ganzen Code posten, um die Anzahl der Sterne hochzutreiben.
Aber nun doch:
#include "Common.ch"
#include "firma.def"
#define HKEY_LOCAL_MACHINE 0x80000002
// $LASTMESSAGE = 0051028
#if XPPVER > 01890000
#include "activex.ch"
#include "excel.ch"
#pragma library( "ascom10.lib" )
#endif
//////////////////////////////////////////////////////////////////////
// Erstellt aus der Kundentabelle eine Excel-Tabelle
//////////////////////////////////////////////////////////////////////
FUNCTION Kunde2Excel(cFile,cSaveAs,lDruOrEdit)
LOCAL oExcel, oBook, oSheet
LOCAL Header1 := LGTrans(('Cdb')->sprache,'5001001','LG-Nummer')
local mess2 := LGTrans(('Cdb')->sprache,'0051002','Microsoft Excel ist nicht installiert')
local lExcelFinished := .f.
local i := 0
LOCAL nEvent := 0, mp1, mp2
LOCAL nRow := 0
LOCAL cPathExcel := cWin2Dos( DC_RegQuery(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Excel.exe", "") )
#if XPPVER > 01890000
default cSaveAs to CurDrive()+':\'+CurDir()+"\AbrStat"+strtran(dtoc(date()),".","")
default lDruOrEdit to .f.
// Create the "Excel.Application" object
oExcel := CreateObject("Excel.Application")
IF Empty( oExcel )
MsgBox( mess2 )
RETURN NIL
ENDIF
// Avoid message boxes such as "File already exists".
oExcel:DisplayAlerts := .F.
oExcel:Visible := .T.
// Also ensure the Excel application is Visible and block keyboard and mouse
// macht das ganze ein wenig schneller
oExcel:Interactive := .F.
if lDruOrEdit
oExcel := oExcel:dynamicCast(ActiveXObject())
oExcel:Quit := {||lExcelFinished := .T.}
lExcelFinished := .F.
endif
// Add a workbook to the Excel application. Query for
// the active sheet (sheet-1) and set up page/paper
// orientation.
oBook := oExcel:workbooks:Add()
i := oBook:Worksheets():count()
if i > 1
for n := i to 2 STEP -1
oBook:Worksheets(n):delete()
next
endif
oSheet := oBook:ActiveSheet
oSheet:PageSetup:Orientation := xlLandscape
// Rename the sheet
oBook:Worksheets(1):name := Header14
// Erstmal die šberschrift aufbereiten
oExcel:Range("A1"):Value := Header1 //zuweisen eines Wertes in eine Zelle der aktiven Tabelle
oExcel:Range("A1"):Font():Size := 10 //Schriftgrösse ändern
oExcel:Range("A1"):Font():Name := "Times" //Schrift festlegen
oExcel:Range("A1"):Font():Bold := .t.
// Open source table, reset the row counter used
// to determine the row# inside the excel
// sheet later on.
("kd")->(dbgotop())
nRow := 2
// Format the columns. Column #1 is for the part
// name, all others visualize numerice values
// Number Format z.B.
// "-#,##0.000 ", wobei mehrere Formate vorhanden sein k”nnen, diese
// m
das habe ich gemacht. Wollte nicht den ganzen Code posten, um die Anzahl der Sterne hochzutreiben.
Aber nun doch:
#include "Common.ch"
#include "firma.def"
#define HKEY_LOCAL_MACHINE 0x80000002
// $LASTMESSAGE = 0051028
#if XPPVER > 01890000
#include "activex.ch"
#include "excel.ch"
#pragma library( "ascom10.lib" )
#endif
//////////////////////////////////////////////////////////////////////
// Erstellt aus der Kundentabelle eine Excel-Tabelle
//////////////////////////////////////////////////////////////////////
FUNCTION Kunde2Excel(cFile,cSaveAs,lDruOrEdit)
LOCAL oExcel, oBook, oSheet
LOCAL Header1 := LGTrans(('Cdb')->sprache,'5001001','LG-Nummer')
local mess2 := LGTrans(('Cdb')->sprache,'0051002','Microsoft Excel ist nicht installiert')
local lExcelFinished := .f.
local i := 0
LOCAL nEvent := 0, mp1, mp2
LOCAL nRow := 0
LOCAL cPathExcel := cWin2Dos( DC_RegQuery(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Excel.exe", "") )
#if XPPVER > 01890000
default cSaveAs to CurDrive()+':\'+CurDir()+"\AbrStat"+strtran(dtoc(date()),".","")
default lDruOrEdit to .f.
// Create the "Excel.Application" object
oExcel := CreateObject("Excel.Application")
IF Empty( oExcel )
MsgBox( mess2 )
RETURN NIL
ENDIF
// Avoid message boxes such as "File already exists".
oExcel:DisplayAlerts := .F.
oExcel:Visible := .T.
// Also ensure the Excel application is Visible and block keyboard and mouse
// macht das ganze ein wenig schneller
oExcel:Interactive := .F.
if lDruOrEdit
oExcel := oExcel:dynamicCast(ActiveXObject())
oExcel:Quit := {||lExcelFinished := .T.}
lExcelFinished := .F.
endif
// Add a workbook to the Excel application. Query for
// the active sheet (sheet-1) and set up page/paper
// orientation.
oBook := oExcel:workbooks:Add()
i := oBook:Worksheets():count()
if i > 1
for n := i to 2 STEP -1
oBook:Worksheets(n):delete()
next
endif
oSheet := oBook:ActiveSheet
oSheet:PageSetup:Orientation := xlLandscape
// Rename the sheet
oBook:Worksheets(1):name := Header14
// Erstmal die šberschrift aufbereiten
oExcel:Range("A1"):Value := Header1 //zuweisen eines Wertes in eine Zelle der aktiven Tabelle
oExcel:Range("A1"):Font():Size := 10 //Schriftgrösse ändern
oExcel:Range("A1"):Font():Name := "Times" //Schrift festlegen
oExcel:Range("A1"):Font():Bold := .t.
// Open source table, reset the row counter used
// to determine the row# inside the excel
// sheet later on.
("kd")->(dbgotop())
nRow := 2
// Format the columns. Column #1 is for the part
// name, all others visualize numerice values
// Number Format z.B.
// "-#,##0.000 ", wobei mehrere Formate vorhanden sein k”nnen, diese
// m
- Koverhage
- 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:
Alfred,
auch wenn Du lDruOrEdit auf .t. setzt ?
Bekomme folgende Fehlermeldung
Fehler Automation/6500
Beschreibung: Mitglied nicht gefunden
Member-Variable is f
eingesetzte Word Version :
Microsoft Office Word 2003
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "D:\wexe\le0.EXE" Datum: 04.11.2007 11:50:55
Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 2
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: Quit
-> VALTYPE: B VALUE: {||lExcelFinished := .T.}
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Mitglied nicht gefunden.
Member-Variable ist f r dieses Objekt unbekannt
oError:filename : NIL
oError:genCode : NIL
oError:operation : Quit
oError:osCode : -2147352573
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from ABRSTAT2EXCEL(1399)
Called from (B)XSAMPLE_160(6130)
Called from DC_XBPPUSHBUTTON:ACTION(498)
Called from (B)DC_XBPPUSHBUTTON:INIT(124)
Called from DC_GETLIST:EVENTLOOP(3854)
Called from DC_GETLIST:READGUI(3293)
Called from DC_READGUI(82)
Called from XSAMPLE_160(6287)
Called from LE500(238)
Called from (B)CREATEMENUSYSTEM(1845)
Called from MAIN(327)
auch wenn Du lDruOrEdit auf .t. setzt ?
Bekomme folgende Fehlermeldung
Fehler Automation/6500
Beschreibung: Mitglied nicht gefunden
Member-Variable is f
eingesetzte Word Version :
Microsoft Office Word 2003
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "D:\wexe\le0.EXE" Datum: 04.11.2007 11:50:55
Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 2
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: Quit
-> VALTYPE: B VALUE: {||lExcelFinished := .T.}
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Mitglied nicht gefunden.
Member-Variable ist f r dieses Objekt unbekannt
oError:filename : NIL
oError:genCode : NIL
oError:operation : Quit
oError:osCode : -2147352573
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from ABRSTAT2EXCEL(1399)
Called from (B)XSAMPLE_160(6130)
Called from DC_XBPPUSHBUTTON:ACTION(498)
Called from (B)DC_XBPPUSHBUTTON:INIT(124)
Called from DC_GETLIST:EVENTLOOP(3854)
Called from DC_GETLIST:READGUI(3293)
Called from DC_READGUI(82)
Called from XSAMPLE_160(6287)
Called from LE500(238)
Called from (B)CREATEMENUSYSTEM(1845)
Called from MAIN(327)
Hallo Klaus,
funktioniert auch mit .t.
Hatte aber seltsamer Weise kurzfristig die selbe Fehlermeldung.
Schau dir mal mit ed die Datei an, nicht dass da irgend ein Müll drinn steht.
Hast du mal den Taskmanager auf Excel.Exe durchgesehen, die nicht
abgeschlossen wurden?
Mein Sohn hat 2003. Werde dass heute Abend mal testen.
Gruß
Alfred
funktioniert auch mit .t.
Hatte aber seltsamer Weise kurzfristig die selbe Fehlermeldung.
Schau dir mal mit ed die Datei an, nicht dass da irgend ein Müll drinn steht.
Hast du mal den Taskmanager auf Excel.Exe durchgesehen, die nicht
abgeschlossen wurden?
Mein Sohn hat 2003. Werde dass heute Abend mal testen.
Gruß
Alfred