Hexagon Geschrieben 14. Oktober 2002 Geschrieben 14. Oktober 2002 Hallo, ich hab hier eine excel-Datei, die mehrere Blätter hat. Nun soll ich ein VBA-Skript schreiben, um diese in einzelne Datein zu speichern. Meine Fragen: 1. Wie komme ich einzeln an die Blätter ran? 2. Wie kann ich die ohne "Speichern-Dialog" sichern? 3. Da kommt bestimmt noch was... Thnx schonmal! Zitieren
Goos Geschrieben 14. Oktober 2002 Geschrieben 14. Oktober 2002 Uff......du klingst sehr danach, als wenn du vom Excel Objektmodel noch keinerlei Ahnung haettest. Die Blaetter nennen sich uebrigens Sheets und du kannst die dann auch mit Sheets("blaschwafel") oder Sheets(n) ansprechen. Um sie einzeln zu speichern, also jedes Blatt als eigene Mappe musst wohl die einzelnen Blaetter kopieren und dann speichern. Das sollte alles in allem gar kein Problem sein. Goos Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Richtig! Ich programmiere hauptsächlich MFC mit dem VC... Nur soll ich das halt mal so eben machen... Zitieren
Goos Geschrieben 14. Oktober 2002 Geschrieben 14. Oktober 2002 Oki, dann fang mal irgendwie an und frag nach, wenn du bei irgendwas speziellem nich weiterkommst. Die Reihenfolge waer also Sheet kopieren, Sheet Speichern und das ueber alle Sheets. ....wuerd ich mal sagen. Goos Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Habs probiert mit Copy (Sheets(iTmp)), jedoch sagt er mir dann immer "Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung"... ...warum kann VBA nich sein wie VC? Zitieren
Goos Geschrieben 14. Oktober 2002 Geschrieben 14. Oktober 2002 Original geschrieben von Hexagon ...warum kann VBA nich sein wie VC? ...naja ich denk mal, weil sichs dann VCA nennen wuerde :OD Aber versuchs doch mal mit Sheets("bla").Copy before:=Workbooks(2).Sheets("Tabelle1") [/PHP] Das heisst also du muesstest erstmal noch ein neues Workbook anlegen. Dann koenntests so kopieren, muesstest dann noch die drei standard Sheets "Tabelle1-3" loeschen und koenntest das dann speichern. Goos Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Original geschrieben von Goos Das heisst also du muesstest erstmal noch ein neues Workbook anlegen. Dann koenntests so kopieren, muesstest dann noch die drei standard Sheets "Tabelle1-3" loeschen und koenntest das dann speichern. Oje....VBA...argh... Danke...ich probiers ma... Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Hiho, habs so gemacht: iPages = ActiveWorkbook.Worksheets.Count For iTmp = 1 To iPages Set wrkNeu = Application.Workbooks.Add Next iTmp Wie kann ich die 3 Standardblätter löschen? Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Oder besser...Wie kann ich die 3 Blätter löschen ohne diesen "Sind sie wirklich sicher?" Dialog? Benutze zur Zeit folgendes: iPages = ActiveWorkbook.Worksheets.Count For iTmp = 1 To iPages Set wrkBookNeu = Application.Workbooks.Add wrkBookNeu.ActiveSheet.Delete Next iTmp Und da kommt dann immer "Sind Sie..." - das treibt mich in den Wahnsinn! Zitieren
Goos Geschrieben 14. Oktober 2002 Geschrieben 14. Oktober 2002 Also gut....mit deinem wrkBookNeu.ActiveSheet.Delete loescht du also ein Sheet und das dann wohl 3 mal hintereinander und immer wirst gefragt, ob du das auch willst. Zuerst mal wuerde ich da ein paar Aspirin empfehlen ..... und falls das nichts hilft kannsts ja auch mal mit Application.DisplayAlerts = False probieren, wobei du das nach dem loeschen besser wieder auf TRUE setzt Goos Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Funktioniert! *Musik ein* Hurra, hurra! Alles ist super! Alles ist wunderbar!... *Musik aus* Und wie kann ich nun Kopieren? Ich weiß ich nerve, aber ich komme mit VBA halt nicht zurande... Zitieren
Goos Geschrieben 14. Oktober 2002 Geschrieben 14. Oktober 2002 Na das hab ich doch oben schon geschrieben.......du solltest halt vielleicht zuerst kopieren und dann die drei sheets loeschen. Workbook("meinhauptworkbookoderwasauchimmer").Sheets("bla").Copy before:=Workbooks(2).Sheets("Tabelle1") Damit kopierst dann den sheet meinhauptworkbookoderwasauchimmer *g* in das zweite geoeffnete Workbook, da du ja von dem neu angelegten keinen Namen weisst und dort wirds vor der Tabelle1 eingefuegt. Natuerlich kannsts auch mit after nach der 3. Tabelle einfuegen. Goos Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Ich bin mal ganz frech... ... Private Sub cmdBTOK_Click() Dim iPages As Integer Dim iTmp As Integer Dim strTmp As String Dim wrkBookNeu As Workbook Dim wrkBookOrg As Workbook Application.DisplayAlerts = False Set wrkBookOrg = Application.ActiveWorkbook iPages = ActiveWorkbook.Worksheets.Count For iTmp = 1 To iPages Set wrkBookNeu = Application.Workbooks.Add Do While (wrkBookNeu.Worksheets.Count > 1) wrkBookNeu.ActiveSheet.Delete Loop wrkBookOrg.Sheets(iTmp).Copy after:=wrkBookNeu.Sheets(1) wrkBookNeu.ActiveSheet.Delete Rem wrkBookNeu.SaveAs FileName:="MeineMakros" Next iTmp Application.DisplayAlerts = True End cmdBTOK_Click_Ende: End Sub Nu spinnt er wieder...vorhin klappte die Erzeugung der Tabellen, aber nur sagt er immer wieder "Falsche anzahl von Argumenten...." oder er macht nur die Hälfte.... Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Halt! Es funzt! Es funzt! Es funzt! *Vor Freude im Kreis hüpf* Es klappt! Es klappt!Es klappt!Es klappt!Es klappt! Private Sub cmdBTOK_Click() Dim iPages As Integer Dim iTmp As Integer Dim strTmp As String Dim wrkBookNeu As Workbook Dim wrkBookOrg As Workbook Application.DisplayAlerts = False Set wrkBookOrg = Application.ActiveWorkbook iPages = ActiveWorkbook.Worksheets.Count For iTmp = 1 To iPages Set wrkBookNeu = Application.Workbooks.Add Do While (wrkBookNeu.Worksheets.Count > 1) wrkBookNeu.ActiveSheet.Delete Loop wrkBookOrg.Sheets(iTmp).Copy after:=wrkBookNeu.Sheets(1) wrkBookNeu.Sheets("Tabelle3").Delete Rem wrkBookNeu.SaveAs FileName:="MeineMakros" Next iTmp Application.DisplayAlerts = True End cmdBTOK_Click_Ende: End Sub Nur noch das Speichern rein friemeln und dann Feierabend!...Hoffentlich... ...Öhm...wie bekomme ich den Namen der Tabelle her?:confused: Zitieren
Goos Geschrieben 14. Oktober 2002 Geschrieben 14. Oktober 2002 hmm...die frage ist, was verstehst du unter name der tabelle? Den Namen des Sheets?!? Goos Zitieren
tauron Geschrieben 14. Oktober 2002 Geschrieben 14. Oktober 2002 Moin ! Ich denk mal Du meinst den neuen Dateinamen ? das könntest Du mit dem InputBox Befehl machen, z.B. so: strDateiname = InputBox (Meldung, Titel) Man muss allerdings vertrauen, das die Benutzer es nicht hinkriegen irgendwelchen Käse einzugeben.. (hmm manchmal bin ich zu gutgläubig, glaub ich :eek: ) gruß Christian Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Original geschrieben von Goos hmm...die frage ist, was verstehst du unter name der tabelle? Den Namen des Sheets?!? Goos Weiß net wie man das nennt... ...jedenfalls hab ich's nun, aber nun muß ich den Dateinamen auf Sonderzeichen(z.B.: /, >, <, usw.) prüfen...wie geht das am schnellsten(/besten)? Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Ja - jup...Sheet-Titel war(/ist) es... Zitieren
Goos Geschrieben 14. Oktober 2002 Geschrieben 14. Oktober 2002 Ui.....also das mit dem Filtern geht meiner Meinung nach nich so schnell. Es gibt hier halt leider nicht einfach so ne SpanInclude Funktion wie im VC. Goos Zitieren
Hexagon Geschrieben 14. Oktober 2002 Autor Geschrieben 14. Oktober 2002 Aha... ...also wieder alles per Hand - Buchstabe für Buchstabe...*Stöhn*... Aber trotzdem scho ma DANKE!! :e@sy :e@sy :e@sy Zitieren
Hexagon Geschrieben 15. Oktober 2002 Autor Geschrieben 15. Oktober 2002 Original geschrieben von Hexagon Aha... ...also wieder alles per Hand - Buchstabe für Buchstabe...*Stöhn*... Aber trotzdem scho ma DANKE!! :e@sy :e@sy :e@sy Ähm...is mir a bissl peinlich......wie kann ich denn auf einzelne Zeichen eines String zugreifen?:confused: Zitieren
Goos Geschrieben 15. Oktober 2002 Geschrieben 15. Oktober 2002 Moin Hexagon, mir ist gerade eingefallen, dass du doch nicht alles von Hand durchgehen musst. Geht wohl wahrscheinlich auch ueber RegEx. Goos Zitieren
Hexagon Geschrieben 15. Oktober 2002 Autor Geschrieben 15. Oktober 2002 So...nu klappt fast alles, aber wie kann ich ihm noch sagen, daß er die Blätter nicht als .xls sondern als .csv abspeichern soll?:confused: Zitieren
Goos Geschrieben 15. Oktober 2002 Geschrieben 15. Oktober 2002 Du koenntests ja mal mit FileFormat:=xlCSV probieren Goos Zitieren
Hexagon Geschrieben 15. Oktober 2002 Autor Geschrieben 15. Oktober 2002 Da bringt er mir immer einen Fehler! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.