Ja, sorry. Ich habe es eben selbst gemerkt - copy&paste Fehler.
Spoiler anzeigen
AutoIt
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.15.0 (Beta)
Author: myName
Script Function:
Führende Zahlen con Dateinamen aus einem Verzeichnis extrahieren, Dubletten entfernen und in Excel-Liste schreiben.
#ce ----------------------------------------------------------------------------
#include "Excel.au3"
#include <Array.au3>
#include <File.au3>
#Region --- Deine Einstellungen ---
Global $sExcelFile = "" ; Kompletter Pfad der Excel-Datei, sonst wird im Skriptverzeichnis die Datei "SSF-Dateiliste.xls" erstellt.
Global $sSearchFolder = "" ; SSF-Ordnerpfad. Wenn leer öffnet sich beim Skriptstart ein Ordnerauswahl-Dialog.
#EndRegion --- Deine Einstellungen ---
If Not FileExists($sExcelFile) Then $sExcelFile = @ScriptDir & "\SSF-Dateiliste.xls"
If Not StringInStr(StringRight($sExcelFile, 5), ".xls") Then $sExcelFile = $sExcelFile & "\SSF-Dateiliste.xls"
If $sSearchFolder = "" Then $sSearchFolder = FileSelectFolder("Wähle den Ordner mit den SSF-Dateien", @ScriptDir)
If @error Then Exit
Global $aNumber = GetNumbers()
If @error Then Exit MsgBox(0, "Fehler", "Fehler beim Erstellen der Nummern-Liste: " & $aNumber & ")")
Global $sRet = WriteExcel($sExcelFile, $aNumber)
If @error Then Exit MsgBox(0, "Fehler", "Fehler beim Schreiben der Excel-Datei(Fehlermeldung der Excel-UDF: " & $sRet & ")")
Func GetNumbers()
Local $aFiles = _FileListToArray($sSearchFolder, "*.ssf")
If @error Then Return SetError(1, 0, "Fehler beim Erstellen der Dateiliste")
Local $aNumber[$aFiles[0]], $iNumberTest, $iCount = 0, $aExcelContent
If FileExists($sExcelFile) Then $aExcelContent = ReadExcelToArray($sExcelFile)
For $i = 1 To $aFiles[0]
$iNumberTest = Number($aFiles[$i])
If $iNumberTest <> 0 And _ArraySearch($aExcelContent, $iNumberTest) = -1 Then
$aNumber[$iCount] = $iNumberTest
$iCount += 1
EndIf
Next
If $iCount = 0 Then Return SetError(1, 0, "Keine (neuen) SSF-Nummern gefunden.")
ReDim $aNumber[$iCount]
Local $aNumberUnique = _ArrayUnique($aNumber, 0, 0, 0, 0, $ARRAYUNIQUE_FORCE32)
Return $aNumberUnique
EndFunc ;==>GetNumbers
Func ReadExcelToArray($sExcelFile)
Local $oExcel = _Excel_Open(False, Default, Default, False, True)
If @error Then Return SetError(2, 0, "Error creating the Excel application object. Excel UDF: @error = " & @error & ", @extended = " & @extended)
Local $iError, $iExtended
Local $oWorkbook = _Excel_BookOpen($oExcel, $sExcelFile, True, False)
If @error Then
$iError = @error
$iExtended = @extended
_Excel_Close($oExcel)
Return SetError(3, 0, "Error opening '" & $sExcelFile & "'. Excel UDF: @error = " & $iError & ", @extended = " & $iExtended)
EndIf
Local $aArray = _Excel_RangeRead($oWorkbook, Default, $oWorkBook.Activesheet.UsedRange)
If @error Then
$iError = @error
$iExtended = @extended
_Excel_Close($oExcel)
Return SetError(4, 0, "Error reading from workbook. Excel UDF: @error = " & $iError & ", @extended = " & $iExtended)
EndIf
_Excel_Close($oExcel)
Return $aArray
EndFunc ;==>ReadExcelToArray
#EndRegion _ReadExcelToArray
Func WriteExcel($sExcelFile, $aFiles)
Local $oExcel = _Excel_Open(False, Default, Default, False, True)
If @error Then Return SetError(2, 0, "Error creating the Excel application object. Excel UDF: @error = " & @error & ", @extended = " & @extended)
Local $bExists = True
If Not FileExists($sExcelFile) Then
$bExists = False
Local $oWorkbook = _Excel_BookNew($oExcel)
If @error Then
_Excel_Close($oExcel)
Return SetError(2, 0, "Error creating the new workbook. Excel UDF: @error = " & @extended & ", @extended = " & @extended)
EndIf
Else
Local $oWorkbook = _Excel_BookOpen($oExcel, $sExcelFile, False, True)
If @error Then
$iError = @error
$iExtended = @extended
_Excel_Close($oExcel)
Return SetError(3, 0, "Error opening '" & $sExcelFile & "'. Excel UDF: @error = " & $iError & ", @extended = " & $iExtended)
EndIf
EndIf
Local Const $xlUp = -4162
With $oWorkbook.ActiveSheet ; process active sheet
$oRangeLast = .UsedRange.SpecialCells($xlCellTypeLastCell)
$iRowCount = .Range(.Cells(1, 1), .Cells($oRangeLast.Row, $oRangeLast.Column)).Rows.Count
$iLastCell = .Cells($iRowCount + 1, "A").End($xlUp).Row
EndWith
If $bExists Then
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aFiles, "A" & $iLastCell + 1)
Else
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aFiles, "A" & $iLastCell)
_Excel_BookSaveAs($oWorkbook, $sExcelFile, $xlExcel8, True)
EndIf
_Excel_BookClose($oWorkbook)
_Excel_Close($oExcel)
EndFunc ;==>WriteExcel
Alles anzeigen