NAbend leute,
ich sitz mal wieder an meinem Datenbank projekt was mich schon seit nem Jahr hin und wieder beschäftigt - und eine Sache stört immer wieder für die ich glaub ich mal hilfe brauche:
ich will ein ExcelDokument auslesen und in Arrays das Ergebnis speichern und danach excel schließen.
Problem: wenn ich danach excel öffne schreibt er jedes mal : "excel hat die folgenden Dateien wiederhergestellt. Speichern Sie alle, die Sie behalten wollen." und das andere Problem ist, wenn während der ganzen Prozedur eine andere Excel Datei geöffnet war, wird diese auch geschlossen. Ich hab über die Forensuche auch schon vieles gefunden, aber alles samt mit Objekten und leider bekomm ich nix dafür für meinen Fall passend zurecht gerückt...
;#include <_FileReadToArray2D_version2.au3>;diese UDF ist bearbeitet (um unterschiedlich lange spalten erkennen zu können)
#include <Array.au3>
#include <GUIConstantsEx.au3>
;#include <file2.au3> ;file2 weil standartfile fehlerhaft ist - und zwar muss Zeile 271 """For $y = 1 To $iDims""" zu """For $y = 1 To UBound($a_Array, 2)-1"""
#include <Timers.au3>
#Include <String.au3>
;#include <arraymore.au3>; Brauch ich um ein 2 dimensionales Array sortieren, erweitern oder verkürzen zu können
#include <Excel.au3>
;....
global $excelPfad = @ScriptDir&"\Namendatenbank.xlsx"
;....
excel_holen()
;....
func excel_holen()
global $oExcel = _ExcelBookOpen($excelPfad,0,0)
If @error = 1 or @error =2 Then
$excelError =MsgBox(3, "Achtung!", "Das Excel-Objekt konnte nicht engelesen werden."&@lf&@lf&"Soll das Excelobjekt erstellt werden? (ohne kann nicht auf Nachnamen, Straßen oder Musterzeichen zugegriffen werden)")
switch $excelError
case 2 ;abbrechen
Exit
Case 6 ;File erstellen und speichern
FileInstall("default_Namendatenbank.xlsx", $excelPfad)
sleep(500)
excel_holen()
Case 7 ;File nicht einlesen (also dummiFile anlegen)
global $excelmusterzeichen, $excelCity,$excelStreet,$excelLastName,$excelFirstNameF,$excelFirstNameM,$excelMaxLen[7]=[1,1,1,1,1,1,1] ;alternativzeile falls man excel einlesen auslässt
EndSwitch
Else
;TrayTip($toolname, "Excel Dokument wird eingelesen... das kann dauern", 5, 1)
_ExcelSheetActivate($oExcel, "ACHTUNG-Wichtig")
Global $excelMaxLen = _ExcelReadArray($oExcel,1,2,6,1,1) ;hier stehen die Zeichenbreiten in den einzelnen Excel Sheets eingetragen
_ExcelSheetActivate($oExcel, "Vorname Mann")
global $excelFirstNameM = _ExcelReadSheetToArray($oExcel, 1, 1,0, 1)
_ExcelSheetActivate($oExcel, "Vorname Frau")
global $excelFirstNameF = _ExcelReadSheetToArray($oExcel, 1, 1,0, 1)
_ExcelSheetActivate($oExcel, "Nachname")
global $excelLastName = _ExcelReadSheetToArray($oExcel, 1, 1,0, 1)
_ExcelSheetActivate($oExcel, "Straße")
global $excelStreet = _ExcelReadSheetToArray($oExcel, 1, 1,0, 1)
_ExcelSheetActivate($oExcel, "Stadt")
global $excelCity = _ExcelReadSheetToArray($oExcel, 1, 1,0, 1)
_ExcelSheetActivate($oExcel, "Musterzeichen")
global $excelmusterzeichen = _ExcelReadSheetToArray($oExcel, 1, 1,0, 1)
local $tttemp = _ExcelBookClose($oExcel,0,0)
if @error = 1 or @error =2 then ProcessClose("excel.exe")
EndIf
ProcessClose("excel.exe")
EndFunc
Ich möchte halt diese 7 Arbeitsblätter so in die einzelnen Arrays schreiben wie ich es bisher auch schon mache - nur halt eleganter...
Kann mir büüüüddde jemand mit dem excelObjekt helfen? Ich weiß das es da schon etliches im Forum gibt, aber ich bekomm es nicht für mich angepasst...
danke
PS: wenn es hilft, kann ich auch das Ganze script posten (ist aber echt lang)
oder das Excel File anhängen um das es geht