Verfasst: 18.01.2007 21:24
einige Beispiele wie Autowrap mit Excel verwendet wird.
Zelle auslesen, der Typ (Text oder Zahl) muß bekannt sein:
VBA-Makro starten:
Zelle aktivieren:
xls-Datei öffnen:
Objektzeiger eines bestimmten Tabellenblattes mit Blattnamen bekommen:
Zellenbreite an Inhalt anpassen, VBA-Code: Cells.EntireColumn.AutoFit
Gruß
Christian
Zelle auslesen, der Typ (Text oder Zahl) muß bekannt sein:
Code: Alles auswählen
Procedure.l XLGetCellsValue(*sheet.IDispatch, Row, Column, vtType.l = 0)
Shared tmpText$, qtmp.d
;VBA: *sheet.Cells(Row, Column).Value
Dim varArr.VARIANT(2)
varArr(0)\vt = #VT_I4
varArr(0)\lVal = Column
varArr(1)\vt = #VT_I4
varArr(1)\lVal = Row
pXlCells_x_y.IDispatch
pvResult.VARIANT
VariantInit_(@pvResult);
AutoWrap(#DISPATCH_PROPERTYGET, *sheet, "Cells", 2)
pXlCells_x_y = pvResult\pdispVal
VariantInit_(pvResult.VARIANT)
AutoWrap(#DISPATCH_PROPERTYGET, pXlCells_x_y, "Value", 0)
;Debug "pvResult\vt: " + Str(pvResult\vt)
Select pvResult\vt
Case #VT_BSTR; Text
tmpText$ = Uni2Ansi(pvResult\bstrVal)
result = @tmpText$
Case #VT_R8;Zahl
qtmp = pvResult\dblVal
If vtType = #VT_BSTR
tmpText$ = StrD(PeekD(@qtmp),3)
result = @tmpText$
Else
result = @qtmp
EndIf
EndSelect
VariantClear_(varArr(0))
VariantClear_(varArr(1))
VariantClear_(pvResult)
SetObjNothing(pXlCells_x_y)
ProcedureReturn result;tmpText$
EndProcedure
*tmp = XLGetCellsValue(pXlSheet, Row, 7)
If *tmp
Zahl.d = PeekD(*tmp);
Endif
*tmp = XLGetCellsValue(pXlSheetKN, Row, 4)
If *tmp
tmpTxt$ = PeekS(*tmp)
Endif
Code: Alles auswählen
Procedure XlRunMakro(*XlApp.IDispatch, Makro.s)
Dim varArr.VARIANT(1)
varArr(0)\vt = #VT_BSTR
varArr(0)\bstrVal = Ansi2Uni(@Makro)
AutoWrap(#DISPATCH_METHOD, *XlApp, "Run", 1)
VariantClear_(varArr(0))
EndProcedure
Code: Alles auswählen
Procedure XlSelectCells(*sheet.IDispatch, Row, Column)
Dim varArr.VARIANT(1)
varArr(0)\vt = #VT_I4
varArr(0)\lVal = Column
varArr(1)\vt = #VT_I4
varArr(1)\lVal = Row
pXlCells_x_y.IDispatch
pvResult.VARIANT
VariantInit_(@pvResult);
AutoWrap(#DISPATCH_PROPERTYGET, *sheet, "Cells", 2)
pXlCells_x_y = pvResult\pdispVal
AutoWrap(#DISPATCH_METHOD, pXlCells_x_y, "Select", 0)
VariantClear_(varArr(0))
VariantClear_(varArr(1))
SetObjNothing(pXlCells_x_y)
EndProcedure
Code: Alles auswählen
varArr(0)\vt = #VT_BSTR
varArr(0)\bstrVal = Ansi2Uni(@File$);File$=xls-Datei
AutoWrap(#DISPATCH_METHOD, pXlBooks, "Open", 1)
VariantClear_(varArr(0))
Code: Alles auswählen
varArr(0)\vt = #VT_BSTR
varArr(0)\bstrVal = Ansi2Uni(@"Blattname")
pXlSheetKN.IDispatch = SetComObj(pXlApp, "Worksheets", 1)
VariantClear_(varArr(0))
Code: Alles auswählen
;get cells object
pXlCells.IDispatch ;= SetComObj(pXlSheet, "Cells", 0)
Debug "pXlCells: " + Str(pXlCells)
VariantInit_(@pvResult)
AutoWrap(#DISPATCH_PROPERTYGET, pXlSheet, "Cells", 0)
pXlCells = pvResult\pdispVal
;get EntireColumn-object
pXlEntireColumn.IDispatch = SetComObj(pXlCells, "EntireColumn", 0)
AutoWrap(#DISPATCH_METHOD, pXlEntireColumn, "AutoFit", 0)
;}
Christian