Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB + Excel + Mehrere Blätter....

Empfohlene Antworten

Veröffentlicht

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!

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

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

  • 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?:rolleyes:;)

Original geschrieben von Hexagon

...warum kann VBA nich sein wie VC?:rolleyes:;)

...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

  • 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.

Boos19.gif Oje....VBA...argh...Boos21.gif

Danke...ich probiers ma...:(

  • 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?

  • 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!:rolleyes::(

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 :rolleyes:

..... 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 :D

Goos

  • 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...:(

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

  • 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....

  • Autor

Halt!:D 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:

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

  • 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)?:rolleyes:
  • 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...Other23.gif...wie kann ich denn auf einzelne Zeichen eines String zugreifen?:confused:

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.