underdog81
Goto Top

Spalten einer Excel sortieren mit Hilfe von Batch

Hallo Forum,
da ich hier schon häufiger auf schnelle und gute hilfe getroffen bin frage ich euch wiedermal um Hilfe.
Ich hab schon google gequält aber das hat mir nicht wirklich die Lösung gebgeben.

Hier mal das was ich vorhabe.

Ich exportiere eine .xls aus einem Programm und habe hier die Sortierung nach Spalte "A" (Zahlen)
Es sind 3 Spalten mit Überschrift und sortiert werden soll nach Spalte "B".

aktueller Stand
Das hier habe ich gefunden aber wenn der nächste Export kommt, (kommt jeden tag) ist logischerweise alles wieder weg.

Option Explicit
Private Sub Workbook_Open()
Dim Sortierspalte As String
Dim Bereich As String
Bereich = "A2:C300"
Sortierspalte = "B"
ActiveSheet.Range(Bereich).Sort Key1:=Range(Sortierspalte & "1"), Order1:=xlAscending, Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom
End Sub


offene Fragen
Aus dem Programm, das die .xls exportiert aknn ich noch nach abschluss eine .bat ausführen lassen.

Wie bekomme ich es hin, daß eine "sortieren.xls" durch eine "sortieren.bat" geöffnet wird?
Wie muss der Code genau aussehen, dass durch die öffnung der "sortieren.bat" die "sortierung.xls"
startet, die "exportierte.xls" sortiert nach Spalte "B" und wieder geschlossen wird?

Wenn ihr mir helfen könnt bei den 2 Fragen, dann wäre ich euch sehr dankbar.

Gruß Underdog81

Content-Key: 194948

Url: https://administrator.de/contentid/194948

Printed on: April 24, 2024 at 02:04 o'clock

Mitglied: 106543
106543 Nov 27, 2012 at 10:41:36 (UTC)
Goto Top
Hi,

sehe ich das richtig, dass du schon den fertigen funktionieren Sortiercode hast, und nur noch mit dem Aufruf des kleinen Sortiermacros in einer batch hängst ?

Grüße
Exze
Member: Underdog81
Underdog81 Nov 27, 2012 at 10:48:38 (UTC)
Goto Top
nein nicht ganz....

Die Batch ist das kleinere übel face-smile
Ich bekomm den Code nicht richtig hin, daß er mir mit der "sortieren.xls" die "exportiere.xls" Sortiert und dann wieder gespeichert schliesst.

hier mal was ich momentan habe in der "sortieren.xls"...
und er meckert wegen der Zeile hier im Code.
ActiveSheet.Range(Bereich).Sort Key1:=Range(Sortierspalte & "1"), Order1:=xlAscending, Header:=xlGuess, MatchCase:=False,


Option Explicit
Private Sub Workbook_Open()
Dim excel
Dim Sortierspalte As String
Dim Bereich As String
Dim wbdatei As Workbook

Set excel = CreateObject("Excel.Application")
excel.Visible = True
Set wbdatei = Workbooks.Open("Z:\exportieren.xls")
Bereich = "A2:C300"
Sortierspalte = "B"
ActiveSheet.Range(Bereich).Sort Key1:=Range(Sortierspalte & "1"), Order1:=xlAscending, Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom

End Sub
Mitglied: 106543
106543 Nov 27, 2012 at 10:59:30 (UTC)
Goto Top
Hi,

gibt ne genauere Beschreibung des Fehlers "er meckert wegen der Zeile hier im Code"? face-big-smile
ok mir würde jetzt spontan dazu einfallen, dass du hier:
ActiveSheet.Range(Bereich).Sort Key1:=Range(Sortierspalte & "1"), Order1:=xlAscending, Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom  
das "ActiveSheet" durch den tatsächlichen Namen ersetzt.

Sorry zum Sortieren kenne ich mich leider nicht aus, habbisher nur wenig in der Richtung gebraucht.

Grüße
Exze
Member: Underdog81
Underdog81 Nov 27, 2012 at 11:20:40 (UTC)
Goto Top
Aber das ist doch 2 Zeilen weiter oben angegeben....
Bereich = "A2:C300"

Wenn ich den Code in die datei exportiern.xls selber einfüge geht er auch.
Ich hänge also daran, daß er aus der sortieren.xls auf die exportieren.xls zugreifen soll und die dann sortiert.
Er macht auch die andere Datei (exportieren.xls) auf aber sortiert sie nicht und meckert bei der oben gennanten Zeile.
Mitglied: 106543
106543 Nov 27, 2012 at 11:46:48 (UTC)
Goto Top
Hi,

was bringt er dir denn für eine Fehlermeldung wenn man fragen darf ?

Grüße
Exze
Member: Underdog81
Underdog81 Nov 27, 2012 at 11:53:12 (UTC)
Goto Top
ich bekomme keine Fehlermeldung sondern er makiert mir die Zeile Gelb
Mitglied: 106543
106543 Nov 27, 2012 at 11:57:15 (UTC)
Goto Top
Hi,

Dann muss was mit der Syntax nicht stimmen ...
d.h. ich schau was ich über die Syntax von dem Befehl finde und du schaust ob du irgendwelche Fehler drin erkennen kannst ;)
Am Besten wäre es natürlich wenn du mir sagen könntest, wo du den Code Schnipsel her hast.

Grüße
Exze
Member: Underdog81
Underdog81 Nov 27, 2012 at 12:02:03 (UTC)
Goto Top
das seltsame ist doch auch, wenn ich den Code in die Datei selber einfüge geht alles ohne Probleme.
Nur wenn ich den Code aus der anderen Datei ausführe um die exportieren.xls zu bearbeitern meckert er.
Muss also irendwas noch geändert werden, daß er erkennt in welcher Datei er arbeitern soll.
Mitglied: 106543
106543 Nov 27, 2012 at 12:08:31 (UTC)
Goto Top
Das hatte ich gemeint vorhin ;)
setzte statt "ActiveSheet" den Namen des Workbooks ein (zu finden : Excel unten die drei Reiter normalerweise benannt mit "Tabelle1", "Tabelle2", "Tabelle3"
Member: Pjordorf
Pjordorf Nov 27, 2012 at 12:50:38 (UTC)
Goto Top
Hallo,

Zitat von @Underdog81:
das seltsame ist doch auch, wenn ich den Code in die Datei selber einfüge geht alles ohne Probleme.
Nein, nicht seltsam sondern so gewollt.

Nur wenn ich den Code aus der anderen Datei ausführe um die exportieren.xls zu bearbeitern meckert er.
Klar, auch das ist so gewollt und somit kein Fehler.

Muss also irendwas noch geändert werden, daß er erkennt in welcher Datei er arbeitern soll.
Ja. Lass dir den Begriff "Activesheet" mal in seine Bestandteile zerlegen und übersetzen. Was bedeutet es dann? Richtig "Aktives Tabellenblatt". Was ist ein "Aktives tabellenblatt"? Nun, das welches gerade im Momemt den Fokus (Aktiv) hat. ist deine andere Excel Arbeitsmappe und die darin enthaltenen Blätter hiermit gemeint? Nein. Somit ist es kein Fehler von Excel, sondern von dir. Du musst dem VBA auch sagen welche Excelmappe und welches darin enthalten Tabellenblatt du meinst. Dann klappt auch das Sortieren der Daten in "export.slx" aus deiner "sortieren.xls" heraus. Wie du den Aufruf dann richtig machst sagt dir die Suchmaschine deiner Wahl oder die F1 Taste deiner Tastatur oder mal ein Makro Aufzeichen und dann anschauen.

Und bitte nutze Code - Tags hier wenn du Quellcode für uns lesbar darstellen willst. Wie? Siehe Formatting instructions in the posts

Und bedenke das dein
und er meckert wegen der Zeile hier im Code
auch so aufgefasst werden kann: "Sucht die Fehlermeldung selbst heraus oder was ich als Meckern bezeichne, ich sage es euch nicht. Das müsst ihr schon selbst herausbekommen wenn ihr mir helfen wollt".

Wie gesagt es kann auch anders verstanden werden. Du hast ein Problem. Du willst hilfe. Wir lesen nur das was hier steht. Wir sind sozusagen Blind und Taub und haben keine ahnung wovon du redest udn was dein Wissenstand oder Fähigkeiten sind.

Nur irgendwo ein Codeschnipsel zu kopieren ist einfach. Diesen dann aber auch korrekt Anzuwenden erfordert schon mehr können als nur zu "Gutenbergen" face-smile

Gruß,
Peter
Mitglied: 106543
106543 Nov 27, 2012 at 13:24:04 (UTC)
Goto Top
Hi,

danke Pjordorf.
Trau mich immer net so grob zu sein face-wink

Grüße
Exze
Member: Underdog81
Underdog81 Nov 27, 2012 updated at 13:56:55 (UTC)
Goto Top
So Ihr beiden Helfer face-smile
Super großes Danke an euch und natürlich war es nicht so im negativem Sinne gemeint wie ich evtl geschrieben habe.

Hab den Code nun fertig und würed ihn gerne hier schreiben, aber ich finde dieses "Quellcode, Code oder HTML Snippets" nicht.
wo finde ich das?

Entschuldigung nochmal wenn ich zu unfreundlich geschrieben habe.


Edit: gefunden face-smile
Es musste noch das wbdazei vor ActiveSheet.Range(Bereich) und am Ende eben das Speicerhn und schließen rein.

Option Explicit
Private Sub Workbook_Open()
    Dim excel
    Dim Sortierspalte As String
    Dim Bereich As String
    Dim wbdatei As Workbook
       
    Set excel = CreateObject("Excel.Application")  
    excel.Visible = True
    Set wbdatei = Workbooks.Open("Z:\exportieren.xls")  
    Bereich = "A2:C300"  
    Sortierspalte = "B"  
    wbdatei.ActiveSheet.Range(Bereich).Sort Key1:=Range(Sortierspalte & "1"), Order1:=xlAscending, Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom  
    Workbooks("exportieren.xls").Close SaveChanges:=True  
    Application.Quit
End Sub
Mitglied: 106543
106543 Nov 27, 2012 at 13:55:42 (UTC)
Goto Top
Hey Underdog81

Kein problem ;)
die nötige Formatierung sieht wie folgt aus
du schreibst einfach < CODE > und am Ende von deinem Code < /Code > (ohne Leerzeichen)

Achja und nicht vergessen auf gelöst zu klicken ;)

Grüße
Exze
Member: Underdog81
Underdog81 Nov 27, 2012 at 13:59:08 (UTC)
Goto Top
ach schau ich habs selber gefunden face-smile ....Augen auf bei Eierkauf face-smile

Danke nochmal für die Hilfe und nen schönen Tag moch euch beiden.
Gelöst.......