Zum Inhalt springen

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


Hexagon

Empfohlene Beiträge

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:
Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...