Forum: PC-Programmierung Excel VBA > Blatt in neue Arbeitsmappe kopieren..


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Naj H. (janiiix3)


Bewertung
0 lesenswert
nicht lesenswert
Nabend,

hat jemand eine Idee was ich falsch mache? Ich möchte gerne aus meiner 
aktuellen Arbeitsmappe raus eine neue erstellen.
Diese soll erstmal ein Arbeitsblatt von meiner aktuellen Arbeitsmappe 
erhalten (also von aktueller nach neuer kopieren..)
Public Function CreateNewWorkbook(sName As String)

     Dim sPath As String
     
     sPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")

     MsgBox sPath

     Set NewBook = Workbooks.Add
     With NewBook
     .Title = "sName" + Format(Date, "YYYY")
     .SaveAs Filename:=sPath & "\" & sName & ".xlsm", FileFormat:=xlWorkbookNormal
     End With

    Dim wbkQuelle As Workbook
    Dim wbkZiel As Workbook
    Dim wksQuelle As Worksheet

    Set wbkQuelle = Workbooks(ActiveWorkbook.Name)
    Set wbkZiel = Workbooks(sName + ".xlsm")
    Set wksQuelle = wbkQuelle.Worksheets("Tabelle1")
    
    wksQuelle.Copy After:=wbkZiel.Sheets(wbkZiel.Sheets.Count)

    
End Function

Was mache ich falsch? Es wird zwar eine neue Mappe erstellt, nur mein 
Arbeitsblatt ("Tabelle1") wird da nicht in die neue Arbeitsmappe 
kopiert..

von Peter M. (r2d3)


Bewertung
0 lesenswert
nicht lesenswert
Bei mir klappt es problemlos unter Office 2000.

Füge dem Code ein minimales aufrufendes Programm hinzu oder wandele die 
Funktion in eine Prozedur, so dass Du das Ganze alleinstehend debuggen 
kannst.

Schreibe zur Kontrolle einen Kontrollwert in Zelle A1 vom ersten Blatt 
der Quelle und kontrolliere dann die Zieldatei.

: Bearbeitet durch User
von Alexander K. (pucki)


Bewertung
0 lesenswert
nicht lesenswert
Wieso eine Funktion wenn sie kein Rückgabewert liefert. ???

Dann brauch man auch keine Funktion, da reicht eine einfache SUB. Bei 
meinen VB-Compiler bekomme ich immer "Warnung : Die Funktion liefert 
kein Rückgabewert".

Mach eine SUB. Reicht völlig aus.

Den Rest deiner Fehler kannst du hier nachlesen.
https://www.automateexcel.com/vba/copy-worksheet/

Frage : Wieso gibst du der Datei einen Titel wenn du sie nicht darunter 
abspeicherst. Ist das eine neue Funktion in moderneren Excel die ich 
noch nicht kenne, oder ein Bug.  Ich würde den "Titel" weglassen. Und 
den sNAME einfach mit der "Titel-berechnung" berechnen.

Mein Tipp leg den sName in eine Variable und dann kannst du die unten 
beim Copybefehl gleich nochmal benutzen

Nur mal so als Tipp. Du willst ein BLATT kopieren, das nennt man English 
SHEETS. Also brauchst du den Blattnamen "Tabelle1" wenn nicht geändert.

Den Befehl den du brauchst steht ca. ca 40 % der Seite. Ich meine den 
hier ;)
Sheets("Sheet1").Copy Before:=Workbooks("Example.xlsm").Sheets(1)

Alles in allen max. 5 Befehle ;)

1.) sName berechnen
2.) Datei speichern
3.) Copybefehl ausführen

4.) Als Funktion den Rückgabewert setzen falls man wissen muss das 
allers geklappt hat.

5.) für das was ich vergessen habe auf die schnelle ;)

Gruß

   Pucki

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.