Excel & AutoIt

  • water:
    Ist damit dieses hier geklärt: Du verwendest _Excel_BookOpen UND _Excel_BookAttach ?

    Test-Script schaut aktuell wie folgt aus:

    Spoiler anzeigen
    [autoit]


    #include <Excel.au3>
    #include <MsgBoxConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $first_in = "Alsterbogen"

    [/autoit] [autoit][/autoit] [autoit]

    ; Create application object and open an example workbook
    Global $sFilePath = @ScriptDir & "\test.xlsx"
    Local $oExcel = _Excel_Open(False, False, True, True, True)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Local $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example", "Error opening workbook '" & $sFilePath & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; *****************************************************************************
    ; Attach to the first Workbook where the file path matches
    ;DIREKT EINE ZELLE ANSPRECHEN
    ; *****************************************************************************
    $oWorkbook = _Excel_BookAttach($sFilePath)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example 1", "Error attaching to '" & $sFilePath & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example 1", "Search by 'filepath':" & @CRLF & @CRLF & "Successfully attached to Workbook '" & $sFilePath & "'." & @CRLF & @CRLF & "Ausgelesener Wert aus A15: " & $oWorkbook.Activesheet.Range("A15").Value & @CR & "Aber diese Angabe ist nicht dynamisch. Also eine gewisse Zelle wird ausgelesen.")

    [/autoit] [autoit][/autoit] [autoit]

    ; *****************************************************************************
    ; Display a list of all worksheets for a specific Workbook
    ; TABELLENBLATTNAME
    ; *****************************************************************************
    Local $aWorkSheets = _Excel_SheetList($oWorkbook)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_SheetList Example 1", "Error listing Worksheets." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _ArrayDisplay($aWorkSheets, "Excel UDF: _Excel_SheetList Example 1")

    [/autoit] [autoit][/autoit] [autoit]

    ; *****************************************************************************
    ; Find all occurrences of value $first_in (partial match)
    ; SUCHT NACH $first_in
    ; *****************************************************************************
    Local $aResult = _Excel_RangeFind($oWorkbook, $first_in)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind Example 1", "Error searching the range." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind Example 1", "Find all occurrences of value " & $first_in & " (partial match)." & @CRLF & "Data successfully searched.")
    _ArrayDisplay($aResult, "Excel UDF: _Excel_RangeFind Example 1", "", 0, "|", "Sheet|Name|Cell|Value|Formula|Comment")

    [/autoit] [autoit][/autoit] [autoit]

    Local $text = StringReplace($aResult[0][2], "$A$", "$B$")
    Local $numreplacements = @extended
    Local $text2 = StringReplace($aResult[0][2], "$A$", "$C$")
    Local $numreplacements2 = @extended
    MsgBox(0, "Der neue String, der nun aus der Exycel-Tabelle ausgelesen werden soll: ", $text & @CR & $text2)

    [/autoit] [autoit][/autoit] [autoit]

    $sCellValue = _Excel_RangeRead($oWorkbook, Default, $text)
    $sCellValue2 = _Excel_RangeRead($oWorkbook, Default, $text2)
    MsgBox(0, "", "Die beiden Zellwerte sind: " & @CRLF & $sCellValue & @CRLF & "und" & @CRLF & $sCellValue2)

    [/autoit] [autoit][/autoit] [autoit]

    _Excel_BookClose($oWorkbook)

    [/autoit] [autoit][/autoit] [autoit]

    _Excel_Close($oExcel, False)

    [/autoit]

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ne. Wirf die Zeilen 17-23 raus.

    [autoit]

    ; *****************************************************************************
    ; Attach to the first Workbook where the file path matches
    ;DIREKT EINE ZELLE ANSPRECHEN
    ; *****************************************************************************
    $oWorkbook = _Excel_BookAttach($sFilePath)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example 1", "Error attaching to '" & $sFilePath & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example 1", "Search by 'filepath':" & @CRLF & @CRLF & "Successfully attached to Workbook '" & $sFilePath & "'." & @CRLF & @CRLF & "Ausgelesener Wert aus A15: " & $oWorkbook.Activesheet.Range("A15").Value & @CR & "Aber diese Angabe ist nicht dynamisch. Also eine gewisse Zelle wird ausgelesen.")

    [/autoit]

    Dass dieser Block nichts bringt siehst Du allein schon daran, dass er die Variable $oWorkbook überschreibt.

  • Zeilen 17-23 sind raus !!!

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Und jetzt funktionierts?

  • @water

    Derzeitig keine Probleme. DANKE !!!

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo water

    Anfänger
    XP prof.(SP3)
    AutoIt Version : 3.3.12.0
    AutoIt-Hilfe-Deutsch-3.3.6.1-Stand-27_05_11
    Office 2003
    --------------------------
    Habe das selbe Prop.
    Mein PC ist im Pensionsalter und kann nur mit Windows XP und Office 2003 arbeiten.
    Weder _ExcelWriteCell noch _Excel_WriteCell wird verstanden.
    Da deine Angebote an UDF's für mich verwirren ist, bitte ich Dich mir die passende UDF zu nennen.
    Danke dir im Voraus
    Eugen

    Einmal editiert, zuletzt von Eugen (4. Februar 2015 um 16:24)

  • Mit 3.3.12.0 wird die komplett neu geschriebene Excel UDF ausgeliefert.
    Die Funktion um Daten in Zellen zu schreiben heisst nun _Excel_RangeWrite.

  • Danke für deine schnelle Antwort

    Habe ich das jetzt richtig verstanden, das es für Autoit v3.3.12.0 die Hilfe nur auf englisch gibt? ?(
    Da ich zu erst scheinbar eine falsche Hilfedatei hatte setzte ich, nach der Deinstallation AutoIt neu auf.
    Beim ersten Test bemerkte ich dass eine Syntaxprüfung fehlt.
    Normal zeigte Autoit mir unter der falschen Zeile, Rot markiert den Fehler an.
    Auch bei kompilieren wir der Fehler übergangen. (S. Foto)
    autoit.de/wcf/attachment/25120/
    Entschuldigung für meine Fragerei aber ohne Englisch ist es verdammt schwer.
    Danke für deine Geduld
    Eugen

  • Korrekt.

    Hast Du nur AutoIt installiert oder auch das SciTE Paket neu installiert? AutoIt selbst bringt eine reduzierte Version von SciTE mit.

  • Gerne :)

  • Moin moin,

    ich hänge mich hier mal ran, ob wohl das Thema nicht ganz mein Problem trifft.
    Google hat mich jedoch hier hin gespuckt, so dass ich es mal versuche ...

    Ich möchte ein Excel-Sheet in ein Array lesen.
    Klappt auch gut, ich nutze die "neue" UDF ...

    Allerdings möchte ich das ganz jetzt per $bVisible = false (???) unsichtbar machen.
    Ich bekomme immer ==> Variable used without being declared.: zurück

    Eine genaue Gegenüberstellung der beiden UDF Versionen findet sich hier.


    ... hab ich gelesen, bringt mich aber nicht weiter, oder sollte es?

    So sieht's aus ...

    [autoit]

    Local $oExcel = _Excel_Open( $bVisible = False)

    [/autoit]

    Kann mir Jemand sagen, was ich falsch mache?

    Danke
    Cappy

    AutoIt 3.3.12.0 // SciTE 3.4.4 // Sublime Text 2 AU3 language package 1.3.6

  • Hi,

    du willst ein neues Excel im Hintergrund öffnen, richtig?
    (habs erst jetz gesehen :D)

    dann brauchst du vermutlich nur:

    [autoit]

    _Excel_Open(0)

    [/autoit]

    Gruß,
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

    Einmal editiert, zuletzt von x0r (9. April 2015 um 09:46)

  • Um solche Probleme zu lösen ist das Skript immer hilfreich.