Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: Fosekosz am März 18, 2015, 14:28:11 Nachmittag
-
Hallo liebes Forum,
sitze schon seit längerem am Thema Makro und habe mir getreu nach dem Motto "Probieren geht über studieren" ein paar Fähigkeiten angeeignet. Mit diesen bin ich auch schon zu einem ganz vernünftigen Makro gekommen, das mir eine tägliche Bestandsliste als neues Tabellenblat in eine Übersichtsliste kopieren soll. Alles funktioniert auch soweit, nur die Formatierung 'kommt nicht mit'.
Habe es mit allen möglichen PasteSpecial Varianten probiert und Google/Foren abgegrast, keine Besserung, höchstens neue Fehlermeldungen. Habe es hoffentlich gut genug auskommentiert. Nochmal soll erwähnt sein, alles klappt wunderbar, nur Farben und Rahmen etc. erscheinen am Ende nicht, nur die reinen Inhalte.
Ich hoffe es findet jemand einen groben Schnitzer, ich bedanke mich schonmal im Voraus!
Sub Bestand_Übertragen()
Dim Datum As Date
Dim i As Integer
Datum = Date 'Zum Benennen eines neuen Tabellenblatts mit aktuellem Datum
Datum = Format(Datum, "dd.mm.yyyy")
For i = 1 To Sheets.Count 'Überprüft, ob Bestandsführung schon eingetragen
If Sheets(i).Name = Datum Then
MsgBox "Bestand vom " & Datum & " bereits eingetragen!"
Sheets(i).Select
Exit Sub
End If
Next i
ChDir ("Pfad\Bestandsführung")
Workbooks.Open Filename:="Pfad\Bestandsführung.xlsx"
Application.DisplayAlerts = False 'schaltet Systemmeldungen aus
Sheets(1).Select 'wählt Tabellenblatt 1 aus
Range("A1:P48").Select 'markiert Bestand
Selection.Copy 'kopiert Bestand
ActiveWorkbook.Close (False) 'schließt Bestandsführung ohne Speichern
Application.DisplayAlerts = True 'schaltet Systemmeldungen ein
Sheets.Add After:=Worksheets(Worksheets.Count) 'erstellt neues Tabellenblatt am Ende
ActiveSheet.Name = Datum 'benennt neues Tabellenblatt nach aktuellem Datum
Range("A1:P48").Select 'markiert Zielbereich des neuen Tabellenblatts in Übersichtsliste
Selection.PasteSpecial (xlPasteAll) 'fügt Bestandsführung [color=red](theorethisch)[/color] mit Format ein
End Sub
Vielen Dank,
Fosekosz
PS.: Die Bestandsliste, aus der ich kopieren will, ist schreibgeschützt, allerdings will ich ja nur lesen. Vielleicht da ein Problem? Per Hand kann ich die Formatierung mit kopieren. Makroaufzeichnung dieses Versuchs liefert allerdings keinen anderen Code.
-
Moin,
ohne Muster-Mappe(n) macht das Helfen keinen Spaß.
Warum kopierst du anschließend nicht einfach die Formatierung noch einmal? Einfach aufzeichnen ...
Warum du aber PasteSpecial statt Paste verwendest, erschließt sich mir nicht.
-
Hallo,
vielen Dank für die Antwort. Mustermappe darf und will ich hier nicht Posten. Die ist sehr umfangreich und es würde lang dauern sie zu anonymisieren. Außerdem ist der Gedanke dahinter sehr einfach, es existieren zwei Dateien, eine schreibgeschützte, die täglich aktualisiert wird und eine, in die die Daten der ersteren als neues Tabellenblatt eingefügt werden sollen.
Es würde mir schon reichen, wenn ich das gesamte Tabellenblatt rüberkopieren würde, da ich sowieso alle Daten davon brauche und nicht zwingend mit Range arbeiten muss, aber inzwischen reizt es mich schon allein des Verständnisses halber, den Fehler zu finden.
PasteSpecial habe ich verwendet, da Paste allein scheinbar nicht ausreichte. Ob das am Ende nun dasselbe/mehr/weniger macht, kann ich nicht beurteilen, da ich wie erwähnt gerade noch lerne, hatte gehofft mit ebendieser Erwähnung mehr Verständnis und weniger zartes Herabblicken zu erzeugen.
Ich werde morgen mal noch ein zusätzliches Makro zum kopieren des Formats aufzeichnen, vielleicht klappts. Aber selbst wenn muss ich sagen, würde mich immernoch interessieren warum er das Format partout nicht haben möchte, zumal eine solche zusätzliche Zeile ja auch eigentlich nicht Sinn verschiedenster Paste Optionen ist.
Vielen Dank für die Hilfe,
Fosekosz
-
Hallo,
habe jetzt mal das Kopieren des Formats als Makro aufgezeichnet, mehr als PasteSpecial macht er auch hier nicht:
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Weiterhin spuckt er Laufzeitfehler '1004': Die PasteSpecial-Methode des Range-Objektes konnte nicht ausgeführt werden. (den vermutlich allgemeinsten Fehler..) aus, selbst wenn ich es bis zu xlPasteFormats reduziere (Operation, SkipBlanks, Transponse lösche). Irgendwo ist hier der Wurm drin. Irgendjemand noch eine Idee?
Vielen Dank,
Fosekosz