Tipp1: Auch wenn es wohl nur ein Workbook-Passwort ist, solltest du es hier nicht mit veröffentlichen.
Tipp2: Die Fehlermeldung sagt doch schon alles. Bevor du die Datei schließt solltest du eine der folgenden Funktionen nutzen:
Denn aktuell änderst du nur etwas, ohne den Speicherbefehl auszuführen. Dann ist klar das du solch eine Fehlermeldung bekommst.
Sorry, hab nicht gesehen, das du nur die Daten einlesen willst. Dann würde ich an deiner Stelle folgendes probieren:
; Create application object
Local $bVisible = False
Local $oExcel = _Excel_Open($bVisible)
Local $bReadOnly = True
Local $var = 1
Local $sPassword = "IrgendeinPasswort"
Local $R = "D" & $var & ":" & "E" & $var
Local $sWorkbook = @ScriptDir & "\Subfiles\SkillDB.xlsm"
Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, $bReadOnly, $bVisible, $sPassword)
Local $aResult = _Excel_RangeRead($oWorkbook)
_Excel_BookClose($oWorkbook, False) ;nicht speichern
_Excel_Close($oExcel, False, True) ;Änderungen nicht speichern, ForceClose
For $i = 0 To UBound($aResult, 1) - 1
If $aResult[$i][0] = @UserName Then
Global $xName = StringSplit($aResult[$i][1], ",")
Global $varLogin = $aResult[$i][0]
Global $varName = $aResult[$i][1]
Global $varSchicht = $aResult[$i][2]
EndIf
Next
Alles anzeigen
Tipp 3: Ich hoffe, dass dies alles in einer Funktion steht, ansonsten sind alle deine Variablen Global, auch wenn du sie als Local definiert hast!