Veröffentlicht 14. Oktober 200222 j 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!
14. Oktober 200222 j 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
14. Oktober 200222 j Autor Richtig! Ich programmiere hauptsächlich MFC mit dem VC... Nur soll ich das halt mal so eben machen...
14. Oktober 200222 j 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
14. Oktober 200222 j Autor 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?
14. Oktober 200222 j 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
14. Oktober 200222 j Autor 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...
14. Oktober 200222 j Autor 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?
14. Oktober 200222 j Autor 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!
14. Oktober 200222 j 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
14. Oktober 200222 j Autor 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...
14. Oktober 200222 j 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
14. Oktober 200222 j Autor 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....
14. Oktober 200222 j Autor 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:
14. Oktober 200222 j hmm...die frage ist, was verstehst du unter name der tabelle? Den Namen des Sheets?!? Goos
14. Oktober 200222 j 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
14. Oktober 200222 j Autor 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)?
14. Oktober 200222 j 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
14. Oktober 200222 j Autor Aha... ...also wieder alles per Hand - Buchstabe für Buchstabe...*Stöhn*... Aber trotzdem scho ma DANKE!! :e@sy :e@sy :e@sy
15. Oktober 200222 j Autor 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:
15. Oktober 200222 j Moin Hexagon, mir ist gerade eingefallen, dass du doch nicht alles von Hand durchgehen musst. Geht wohl wahrscheinlich auch ueber RegEx. Goos
15. Oktober 200222 j Autor 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:
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.