Hey,
Ich Arbeite gerade für mein Vater an ein Programm welches Wetter, Strom,Gas etc. Daten in einer Exceltabelle verwaltet. Er hat bereits eine riesige Tabelle die nun 4 Jahre alt ist und wo alle Erträge drinne stehen. Anfangs klappte es auch alles wunderbar, doch seid einigen Tagen kommt immer wieder eine Fehlermeldung:
Namenskonflikt
Name darf integriertem Namen nicht gleichen.
Alter Name: _FilterDatabase
Neuer Name:
Wenn ich da etwas eingehe klappt nichts, wenn nicht schließt es sich sofort wieder. In AutoIt sagt er mir das hier:
D:\Program Files\AutoIt3\Include\Excel2.au3 (191) : ==> The requested action with this object has failed.:
If $sPassword = "" And $sWritePassword = "" Then .WorkBooks.Open($sFilePath, Default, $fReadOnly)
If $sPassword = "" And $sWritePassword = "" Then .WorkBooks.Open($sFilePath, Default, $fReadOnly)^ ERROR
Der Fehler passiert in meinem Code in dieser Funktion:
Spoiler anzeigen
Func _Excel_Check()
_Read()
Local $Check = True
If ProcessExists('EXCEL.EXE') Then
$Msg = MsgBox(68,'Achtung!','Es gibt bereits eine geöffnetes Excel-Dokument' & @CRLF & 'Soll es geschlossen werden?')
If $Msg = 6 Then ProcessClose('EXCEL.EXE')
EndIf
While $Check = True
$name = _ExcelSheetNameGet($oExcel)
If @error = 1 Then
$oExcel = _ExcelBookOpen($AltPfad,0) ; Das hier ist der "error" Befehl, aber $AltPfad wird als String erkannt und ist der richtige zum Dateipfad.
If @error = 1 Then
_write_log($Log , "Konnte kein Excel Objekt erstellen!", $Main)
$Check = False
_Error()
ElseIf @error = 2 Then
_write_log($Log , "Datei existiert nicht", $Main)
$Check = False
_Error()
EndIf
_ExcelSheetActivate($oExcel,$Tabellenname)
If @error = 1 Then
_write_log($Log , "festgelegtes Objekt existiert nicht", $Main)
$Check = False
_Error()
ElseIf @error = 2 Then
_write_log($Log , "festgelegte Zahl des Tabellenblattes existiert nicht", $Main)
$Check = False
_Error()
ElseIf @error = 3 Then
_write_log($Log , "festgelegter Name des Tabellenblattes existiert nicht", $Main)
$Check = False
_Error()
EndIf
ElseIf @error = 0 Then
$Check = False
EndIf
WEnd
;~ $aArray = _Excel_Search('Datum' ,'2012/12/27' ,1)
$CheckDatum = (_DateDiff('d',"2010/01/01",GUICtrlRead($LDatum)))-1
$Cell = 4 + $CheckDatum
EndFunc
Die datei ist eine *.xlsx und bis vor kurzem hatte es noch geklapp. Mit genau der selben Datei. In der Excel include sieht es so aus:
Spoiler anzeigen
Func _ExcelBookOpen($sFilePath, $fVisible = 1, $fReadOnly = False, $sPassword = "", $sWritePassword = "")
Local $oExcel = ObjCreate("Excel.Application")
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
If Not FileExists($sFilePath) Then Return SetError(2, 0, 0)
If $fVisible > 1 Then $fVisible = 1
If $fVisible < 0 Then $fVisible = 0
If $fReadOnly > 1 Then $fReadOnly = 1
If $fReadOnly < 0 Then $fReadOnly = 0
With $oExcel
.Visible = $fVisible
If $sPassword <> "" And $sWritePassword <> "" Then .WorkBooks.Open($sFilePath, Default, $fReadOnly, Default, $sPassword, $sWritePassword)
If $sPassword = "" And $sWritePassword <> "" Then .WorkBooks.Open($sFilePath, Default, $fReadOnly, Default, Default, $sWritePassword)
If $sPassword <> "" And $sWritePassword = "" Then .WorkBooks.Open($sFilePath, Default, $fReadOnly, Default, $sPassword, Default)
If $sPassword = "" And $sWritePassword = "" Then .WorkBooks.Open($sFilePath, Default, $fReadOnly)
; Select the first *visible* worksheet.
For $i = 1 To .ActiveWorkbook.Sheets.Count
If .ActiveWorkbook.Sheets($i).Visible = $xlSheetVisible Then
.ActiveWorkbook.Sheets($i).Select()
ExitLoop
EndIf
Next
EndWith
Return $oExcel
EndFunc ;==>_ExcelBookOpen
Ich nutze soweit ich glaube die AutoIt beta version hier aus dem Forum. Also 3.3.9.1 ist es glaube ich. Ich habe keine Ahnung wie ich das Problem lösen kann und suche schon seid stunden nach einer Lösung doch ohne erfolg
#edit: es ist deshalb Excel2 weil ich bereits versucht habe etwas in der include zu verändern. Einfach zu testen ob ich es so rausbekomme und ich wollte die Excel.au3 nicht überspeichern