gefassten Demosource erstellt.
Bearbeiten von Exceltabellen.
Ok, dazu müßte das Quitt ohne eine Speicheranforderung von Excel kommen.
Code: Alles auswählen
EnableExplicit
Procedure.s ReadCellS(*obj, Zeile.l,Spalte.l)
Protected ReturnValue.l, Resume.s
dhGetValue("%T", @ReturnValue, *obj, "Cells(%d, %d).Value",Zeile, Spalte) ; read one value
If ReturnValue
Resume=PeekS(ReturnValue)
dhFreeString(ReturnValue)
ProcedureReturn Resume
EndIf
EndProcedure
Procedure WriteCellS(*obj, Zeile.l, Spalte.l, NewValue.s)
dhPutValue(*obj, "Cells(%d, %d).Value = %T", Zeile, Spalte, @NewValue) ; write one value
EndProcedure
Procedure WriteCellZ(*obj, Zeile.l, Spalte.l, NewValueZ.d)
dhPutValue(*obj, "Cells(%d, %d).Value = %e", Zeile, Spalte, @NewValueZ) ; write one value
EndProcedure
Procedure.s ReadLeftHeader(*obj)
Protected ReturnValue.l, Resume.s
dhGetValue("%T", @ReturnValue, *obj, ".ActiveSheet.PageSetup.LeftHeader")
If ReturnValue
Resume=PeekS(ReturnValue)
dhFreeString(ReturnValue)
ProcedureReturn Resume
EndIf
EndProcedure
Procedure.s ReadCenterHeader(*obj)
Protected ReturnValue.l, Resume.s
dhGetValue("%T", @ReturnValue, *obj, ".ActiveSheet.PageSetup.CenterHeader")
If ReturnValue
Resume=PeekS(ReturnValue)
dhFreeString(ReturnValue)
ProcedureReturn Resume
EndIf
EndProcedure
Procedure.s ReadRightHeader(*obj)
Protected ReturnValue.l, Resume.s
dhGetValue("%T", @ReturnValue, *obj, ".ActiveSheet.PageSetup.RightHeader")
If ReturnValue
Resume=PeekS(ReturnValue)
dhFreeString(ReturnValue)
ProcedureReturn Resume
EndIf
EndProcedure
Procedure.s ReadLeftFooter(*obj)
Protected ReturnValue.l, Resume.s
dhGetValue("%T", @ReturnValue, *obj, ".ActiveSheet.PageSetup.LeftFooter")
If ReturnValue
Resume=PeekS(ReturnValue)
dhFreeString(ReturnValue)
ProcedureReturn Resume
EndIf
EndProcedure
Procedure.s ReadCenterFooter(*obj)
Protected ReturnValue.l, Resume.s
dhGetValue("%T", @ReturnValue, *obj, ".ActiveSheet.PageSetup.CenterFooter")
If ReturnValue
Resume=PeekS(ReturnValue)
dhFreeString(ReturnValue)
ProcedureReturn Resume
EndIf
EndProcedure
Procedure.s ReadRightFooter(*obj)
Protected ReturnValue.l, Resume.s
dhGetValue("%T", @ReturnValue, *obj, ".ActiveSheet.PageSetup.RightFooter")
If ReturnValue
Resume=PeekS(ReturnValue)
dhFreeString(ReturnValue)
ProcedureReturn Resume
EndIf
EndProcedure
Procedure WriteLeftHeader(*obj, Text.s)
dhPutValue(*obj, ".ActiveSheet.PageSetup.LeftHeader=%T", @Text)
EndProcedure
Procedure WriteCenterHeader(*obj, Text.s)
dhPutValue(*obj, ".ActiveSheet.PageSetup.CenterHeader=%T", @Text)
EndProcedure
Procedure WriteRightHeader(*obj, Text.s)
dhPutValue(*obj, ".ActiveSheet.PageSetup.RightHeader=%T", @Text)
EndProcedure
Procedure WriteLeftFooter(*obj, Text.s)
dhPutValue(*obj, ".ActiveSheet.PageSetup.LeftFooter=%T", @Text)
EndProcedure
Procedure WriteCenterFooter(*obj, Text.s)
dhPutValue(*obj, ".ActiveSheet.PageSetup.CenterFooter=%T", @Text)
EndProcedure
Procedure WriteRightFooter(*obj, Text.s)
dhPutValue(*obj, ".ActiveSheet.PageSetup.RightFooter=%T", @Text)
EndProcedure
Procedure CloseExcelAll(*obj)
dhPutValue(*obj, ".Application.DisplayAlerts = %b", #False)
dhCallMethod(*obj, ".Quit"); Close Excel
EndProcedure
Procedure CloseWorkbook(*obj)
Protected Workbook.l
dhGetValue("%o", @Workbook, *obj, ".ActiveWorkbook")
If Workbook
dhPutValue(*obj, ".Application.DisplayAlerts = %b", #False)
dhCallMethod(Workbook, ".Close"); Close Exceltable
dhReleaseObject(Workbook)
dhPutValue(*obj, ".Application.DisplayAlerts = %b", #True)
EndIf
EndProcedure
Define.l Pattern, ExcelAPP
Define.s StandardFile, sPattern, Datei, StandardFile, Text
StandardFile = ""
sPattern = "Text (*.xls)|*.xls|Alle Dateien (*.*)|*.*"
Pattern = 0
Datei = OpenFileRequester("Bitte eine XLS-Datei auswählen", StandardFile, sPattern, Pattern)
dhToggleExceptions(#True); Toggles error messages from DispHelper on or off
ExcelApp = dhCreateObject("Excel.Application")
If ExcelApp
dhCallMethod(ExcelApp, ".Workbooks.Open(%T)", @Datei) ; open ExcelFile
dhPutValue(ExcelApp, ".Visible = %b", #True) ; Visible Excel
; -- Here write your code
MessageRequester("Read_Cells", ReadCellS(ExcelApp, 2, 1))
WriteCellS(ExcelApp, 1, 1, "Hier mein eigener Text")
WriteCellZ(ExcelApp, 1, 7, 20.56)
Text = "Linke Kopfzeile: " + ReadLeftHeader(ExcelApp) + #CRLF$
Text + "Mittlere Kopfzeile: " + ReadCenterHeader(ExcelApp) + #CRLF$
Text + "Rechte Kopfzeile: " + ReadRightHeader(ExcelApp) + #CRLF$
Text + "Linke Fußzeile: " + ReadLeftFooter(ExcelApp) + #CRLF$
Text + "Mittlere Fußzeile: " + ReadCenterFooter(ExcelApp) + #CRLF$
Text + "Rechte Fußzeile: " + ReadRightFooter(ExcelApp)
MessageRequester("Excel_Kopf&Fusszeile", Text)
; -- End of code
CloseWorkbook(ExcelApp); for changing another table, close this table.
;...
;CloseExcelAll(); for end of Excel
dhReleaseObject(ExcelApp) : ExcelApp = 0
Else
MessageRequester("PureDispHelper-ExcelDemo", "Couldn't create Excel-Object")
EndIf