- Offizieller Beitrag
Ich habe eine eingebettete Excel-Tabelle (siehe Beispiel unten) und möchte diese, nachdem sie ausgefüllt ist, abspeichern und später auch wieder laden können.
Mit Objekten habe ich aber noch nicht viel gemacht und somit wenig Ahnung. Wie kriege ich das mit dem speichern und laden hin?
Edit: Man benötigt Excel in der XP-Version für dieses Beispiel.
Spoiler anzeigen
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)
Global $MaxPlayer = 20, $NCount = 8
Global $aNames[$MaxPlayer] = ['A','B','C','D','E','F','G','H']; hier sind die Namen der Mitspieler gespeichert
Global $aFM[$MaxPlayer] = [True, True, True, False, False, False, False, False]; Frau/Mann
Global $GUI = GUICreate('Test', 800, 600, -1, 0)
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
Global $Obj1 = ObjCreate('OWC10.Spreadsheet')
If Not IsObj($Obj1) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')
Global $Obj1_ctrl = GUICtrlCreateObj($Obj1, 30, 10, 700, 570)
GUICtrlSetState(-1, $GUI_ONTOP)
GUICtrlSetBKColor(-1, 0x444444)
With $Obj1
.AutoFit=0
.DisplayGridlines=-1
.DisplayHorizontalScrollBar=-1
.DisplayTitleBar=0
.DisplayToolbar=0
.DisplayVerticalScrollBar=0
.EnableEvents=-1
.MoveAfterReturn=-1
.RightToLeft=0
.ViewableRange='1:30'
.Columns('A:A').ColumnWidth = 12
.Columns('B:U').ColumnWidth = 8
.Rows('1:1').RowHeight = 25
.Range('A1:A30').Interior.Color = 0x88ff88
.Range('A2:A30').HorizontalAlignment = -4152; -4108 = center, -4131 = left, -4152 = right
.Range('A1:U1').HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
.Range('A25:U25').HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
.Range('A1:U1').VerticalAlignment = -4108; -4108 = center, -4107 = bottom, -4130 = justify, -4160 = top
.Range('A1:U1').Font.Bold = TRUE
.Range('A25:U25').Font.Bold = TRUE
For $i = 66 TO 85
.Range('A' & $i-64).value = $i-65
.Range(Chr($i) & '1').value = $aNames[$i-66] & StringLeft(' ', 1*($aNames[$i-66]=''))
.Range(Chr($i) & '25').formula = '=' & Chr($i) & '1'
If $aFM[$i-66] And $i-66 < $NCount Then
.Range(Chr($i) & '1').Interior.Color = 0x8888ff
.Range(Chr($i) & '25').Interior.Color = 0x8888ff
Else
.Range(Chr($i) & '1').Interior.Color = 0xff8888
.Range(Chr($i) & '25').Interior.Color = 0xff8888
EndIf
If $i-66 >= $NCount Then
.Range(Chr($i) & '1').Interior.Color = 0x88ffff
.Range(Chr($i) & '25').Interior.Color = 0x88ffff
EndIf
.Range(Chr($i) & '24').formula = '=SUM(' & Chr($i) & '2:' & Chr($i) & '21)'
Next
.Range('A1').value = 'Name'
.Range('A22').value = 'Pumpen'
.Range('A23').value = 'Alle Neune'
.Range('A24').value = 'Punkte'
.Range('A25').value = 'Name'
EndWith
GUISetState()
While 1
Sleep(10)
WEnd
Func _End()
Exit
EndFunc