Excel Zelle lesen und in Editbox Schreiben Probleme mit @crlf

  • Hey ,

    ich habe folgendes Problem ich habe einen einzelne zelle die ich lese und die ich in einen Editbox reinschreiben müsste.

    meine zelle sieht so aus"Alles in einer Zelle":
    aaa
    bbb
    ccc
    ddd


    aber wenn ich das dan in die editbox reinschreibe sieht es so aus:
    aaabbbcccddd


    Hier meine Funktion was mache ich falsch oder was könnte ich besser machen?

    [autoit]

    Func _findxls($sFilePath, $sSuchbegriff)

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

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 0
    Local $oBook = $oExcel.Workbooks.Open($sFilePath)
    Local $oSheet = $oBook.Sheets(1)

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

    Local $Zelle, $Address
    $Zelle = $oSheet.UsedRange.Find($sSuchbegriff)
    If $Zelle <> '' Then
    $Address = $Zelle.Address
    $b = $oSheet.Range(StringReplace($Address, '$', '') ).Offset(0, 1).Value

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

    EndIf

    GUICtrlSetData($Edit1, $b)

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

    $oExcel.Application.Quit

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

    EndFunc

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (14. September 2010 um 07:48) aus folgendem Grund: Danke euch allen Problem gelöst

  • [autoit]

    #Include <Excel.au3>
    $sFilePath1 = @ScriptDir & "\Test1.xls" ;This file should already exist
    $oExcel = _ExcelBookOpen($sFilePath1)
    MsgBox(0, "", _ExcelReadCell($oExcel, 1 , 1))

    [/autoit]

    in der Test1.xls steht alles in einer Zelle untereinander und die Msgbbox wirf es auch so aus...

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • So habe es so umgesetzt,

    [autoit]

    Func _findxls($sFilePath, $sSuchbegriff)

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

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 0
    Local $oBook = $oExcel.Workbooks.Open($sFilePath)
    Local $oSheet = $oBook.Sheets(1)

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

    Local $Zelle, $Address
    $Zelle = $oSheet.UsedRange.Find($sSuchbegriff)
    If $Zelle <> '' Then
    $Address = $Zelle.Address
    ;$b = $oSheet.Range(StringReplace($Address, '$', '') ).Offset(0, 1).Value
    $oExcel = _ExcelBookOpen($sFilePath1, 0)
    $Address = StringReplace($Address, '$', '')
    MsgBox(0, "", _ExcelReadCell($oExcel, $Address+1 , 2))
    $b = _ExcelReadCell($oExcel, $Address+1 , 2)
    ConsoleWrite($b)
    ; die relative Adressierung: Offset(0, 2) verweist auf Zeile 0 (also dieselbe) und Spalte +2
    EndIf

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

    GUICtrlSetData($Edit1, $b)

    [/autoit]

    MSG BOX funktioniert es mit @crlf
    Consolwrite funktioniert es mit @crlf
    aber mit GUICtrlSetData($Edit1, $b) geht es nicht wer kann helfen wo liegt das Problem??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Übringens,
    habe meine erste funktion geprüft:
    mit consolwrite und MSGBOX

    Das Problem schein nur mit der Editbox zu geben.

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • an der Editbox liegt es nicht, wie man sieht...

    Spoiler anzeigen
    [autoit]

    $text="aaa"&@crlf&"bbb"&@crlf&"CCC"

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

    $hgui=guicreate("")
    $edit=GUICtrlCreateEdit("",10,10,100,100)
    guisetstate()

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

    guictrlsetdata($edit,$text)

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

    while GUIGetMsg()<>-3
    wend

    [/autoit]


    Ich vermute daher das Format des Zelleninhalts.
    Kopier mal den $b mit clipput() in die Zwischenablage, mach in scite einen leeren Tab auf und kopiere dahinein mit ctrl-v den String. Dann aktiviere mal in Scite bei ANSICHT die Leerzeichen und Zeilenende und schau dir mal den String an! Ich vermute da ist garkein CRLF drin sondern nur ein LF...

  • Hallo,

    siehe Andy, ich würde mal ein nacktes @CR vermuten:

    Spoiler anzeigen
    [autoit]

    $text="aaa"&@cr&"bbb"&@cr&"CCC"

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

    $hgui=guicreate("")
    $edit=GUICtrlCreateEdit("",10,10,100,100)
    guisetstate()

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

    guictrlsetdata($edit,$text)

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

    MsgBox(0, "Zelle", $text)

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

    while GUIGetMsg()<>-3
    wend

    [/autoit]
  • ... und laut Skript ist es ein @LF:

  • Ich habe doch die orginal daten zugeschickt inklusiv xls und Screenshot und es ist ein @crlf ..
    hat jemand eine idee?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Zitat

    ... und laut Skript ist es ein @LF:

    wzbw....

    [autoit]

    $b=stringreplace($b,@lf,@crlf)

    [/autoit]

    wenn mir jetzt noch jemand erklären kann, wie subzero lt Screenshot auf CRLF und Großvater auf LF kommt, wäre ich happy, ist das ggf eine Einstellung in Excel? Habe OO, daher kann ich das nicht nachvollziehen....

  • Hallo,

    das MsgBox-Zitat entstammt der in das Skript eingefügten Zeile:

    [autoit]

    MsgBox(0, "Daten", _StringToHex($b))

    [/autoit]


    Ich würde mal annehmen, dass das CR entweder beim Umweg über das Clipboard oder von SciTE perönlich ergänzt wird. ;)

  • Scite konvertiert bei Ctrl+v in die bei "Optionen/Zeilenendezeichen" eingestellten Zeilenendezeichen. Das wäre geklärt^^

  • Und hier eine kleine Funktion, damit man auf jeden Fall CRLF bekommt:

    [autoit]

    Func _ToCRLF(Const $string)
    If StringInStr($string, @CRLF, 1) Then Return $string
    If StringInStr($string, @LF, 1) Then Return StringReplace(StringStripCR($string), @LF, @CRLF)
    Return StringReplace($string, @CR, @CRLF)
    EndFunc

    [/autoit]