NotesExport to Excel (Sort einer Spalte in Excel per VBA)

  • Hallo @All,
    ich hätte da gerne ein Problem.
    Ich exportiere aus Notes eine Datenbank nach Excel und bilde mir dann in Excel Summen, bringe Excel dazu die übergebenen nummerischen Werte auch als solche zu erkennen, etc..... .
    Nun möchte ich aber auch noch eine Spalte in Excel sortieren, das klappt aber einfach nicht.
    Hat Jemand eine brauchbare Lösung, die Lösungen selbst im Handbuch "Excel 2007 VBA" funzen einfach nicht und auch das googlen hat mir nicht geholfen. Ich suche dringend einen Sehenden.


    Gruß Harald

    • Offizieller Beitrag

    zeichne Dir ein Makro im Excel auf. Den VBA-Code des Makros kannst Du mit wenigen syntaktischen Anpassungen im LotusScript verwenden.


    Du machst doch Deinen Export pewr OLE-Automation - oder?


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hallo Diali,


    das Makro sieht so aus.


    Range("E2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal



    bei der Anpassung ändere ich Range......
    in xlsheet.Range.......
    die Doppelpunkte entferne ich auch der Formal,


    das klappt ja noch, wie verfahre ich aber mit "Selection",
    muss ich die vorher definieren?


    With xlsheet
    .UsedRange.sort Key1 = .Range("C2"), Order1 = xlAscending, Header = xlno, MachCase = False, Orientation = xlTopToBottom
    End With


    so klappt es z.B. nicht

    • Offizieller Beitrag

    na mit der Zuweisung der Variablen kann Notes nichts anfangen, aber es funktioniert auch, wenn die Reihenfolge der Variablen nicht verändert wird.


    Also so:

    Code
    xlsheet.UsedRange.sort xlsheet.Range("C2"), xlAscending, xlno, False, xlTopToBottom


    xlAscending, xlno, False und xlTopToBottom musst Du noch durch die entsprechenden Werte ersetzen (im VBA-Editor rechte Maustaste auf den Wert und Quickinfo wählen) oder Du setzt die Variablen vorher auf den entsprechenden Wert.


    Gruß
    Dirk

  • Hallo Diali,
    habe es jetzt mal so probiert, bekomme aber immer die Fehlermeldung "Bezug ist ungültig"


    xlsheet.UsedRange.sort xlsheet.Range("C2"), 1, 2, 0, 0, 1


    muss ich eigentlich alle Parameter mitgeben, für
    OrderCustom:=1, MatchCase:=False
    habe ich keine gefunden (Quickinfo), dafür habe ich 0 gesetzt.

  • Zumindest von vorne her musst du alle Parameter mitgeben, d.h. wenn die Funktion 10 Parameter hat, du den 3. mitgeben willst, dann musst du bis zum 3. alle mitgeben.
    Und vor allem auch den richtigen Typ, d.h. wenn der Typ String ist kannst du da nicht einfach ne 0 mitgeben

  • Hallo Diali,
    Hallo Taurec,
    ich habe es jetzt mal ganz simpel probiert und nur die beiden ersten Parameter mitgegeben.


    xlsheet.UsedRange.Sort xlsheet.Range("F2"), 1,1


    ich erhalte aber jetzt die Meldung, dass der "Bezug ungültig" ist.
    Was ist denn damit gemeint ?
    Den Bereich "UsedRange" und die Spalte ("F2") habe ich doch übergeben.
    Weiß Jemand Hilfe ?

    • Offizieller Beitrag

    versuch es mal damit:

    Code
    xlSheet.Range("F2").Select
    xlSheet.Range(xlSheet.Selection, xlSheet.Selection.End(-4121)).Select
    xlSheet.Selection.Sort xlSheet.Range("E2"), 1, 0, 1, False, 1, 0


    Dein UsedRange läuft wahrscheinlich ins leere.


    Gruß
    Dirk

    • Offizieller Beitrag

    stimmt hat er Recht.
    Es ist nicht das Sheet-Objekt sondern das xlApp-Objekt, welches verwendet werden muss.


    Gruß
    Dirk

  • Hallo Diali,
    OK, hab es dann mal angepasst, aber....


    xlSheet.Range("F2").Select
    xlSheet.Range(xlapp.Selection, xlapp.Selection.End(-4121)).Select
    xlapp.Selection.Sort xlSheet.Range("F2"), 1, 0, 1, False, 1, 0


    funzt auch nicht. Immer wieder der Fehlerhinweis "Bezug ist ungültig"


    habe es dann noch mal mit der UsedRange getestet, aber


    xlsheet.UsedRange.Select
    xlapp.Selection.Sort xlSheet.Range("F2"), 1, 0, 1, False, 1, 0


    aber auch hier kommt der gleiche Fehler, was meint er denn mit "Bezug ist ungültig"? eventl. die Angabe
    "xlsheet.Range("F2") ??

    • Offizieller Beitrag

    habs nochmal im Excel versucht. Es liegt an der Reihenfolge der Parameter.


    Gruß
    Dirk

    • Offizieller Beitrag

    mit dem Beispiel funktioniert es in Excel 2000, 2003 und 2007.


    Gruß
    Dirk

    • Offizieller Beitrag

    In dem Makro werden die Werte per Variablenzuweisung übergeben. Dies funktioniert aber in der LotusScript nicht, deshalb müssen die Parameter in der richtigen Reihenfolge angegeben werden. Was hier richtig ist, muss man probieren, da es 3 Quellen (Makroaufzeichnung, Quickinfo und VBA-Hilfe) gibt. In der Regel funktioniert die Parameterreihenfolge aus der Makroaufzeichnung. Falls die mal nicht funktioniert, verwende ich meist die Quickinfo und wenn diese ebenfalls nicht funktioniert, dann benutze ich die VBA-Hilfe.


    Gruß
    Dirk

  • Diali,
    Bingo !!


    habe meine Formel entsprechend angepasst und es klappt ;-)))


    xlsheet.UsedRange.sort xlapp.Range("F1"), 1, , , , , , 0, 1, False, 1, , 0



    aber wo bitte kommen die ganzen leeren Parameter her, in der VBA-Hilfe habe ich dazu nichts gefunden.
    Hast Du da Quellen (Buchempfehlung o.ä.) in denen ich dazu etwas nachlesen kann oder ist das Dein Wissen.


    nochmals Vielen Dank fpr die Hilfe


    schönen Gruß vom Westensee
    Harald