Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: PasteSpecial

PasteSpecial
Hampelmann
Hallo,
ich habe mit PasteSpecial ein kleines Problem, ich hoffe Ihr könnt mir helfen.
Folgende Situation:
Ich habe große Datenmengen in einer Exceltabelle (ohne Formatierung), davon muss ich einen Großteil
in eine andere Exceltabelle (mit Formatierung) kopieren. Da ich das hin und her springen zwischen
den einzelnen Excel-Blättern leid war hab ich mir auf jedem meiner Monitore je ein Excel geöffnet
und kopiere die Daten in dem einen Excel und füge es über

Sub Einfuegen_Format_beibehalten()
ActiveSheet.PasteSpecial Format:="Unicode-Text", Link:=False, _
DisplayAsIcon:=False
End Sub

in die andere Excel Instanz ein. Funktioniert auch wunderbar solang ich nicht versuche alles aus einer Excel Instanz zu kopieren und einfügen, denn da funzt komischerweiße die Prozedur nicht mehr.
Fehlermeldung:
"Die PasteSpecial-Methode des Worksheet-Objektes konnte nicht gefunden werden."
Jetzt ist meine Frage: Wie muss ich die Prozedur umschreiben damit ich sowohl aus der selben wie auch aus einer zweiten Excel Instanz die Daten kopieren kann, ohne das das Zielformat überschrieben wird.
Danke im vorraus!!!
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: PasteSpecial
25.08.2009 12:37:06
Hajo_Zi
Halo unbekannter,
für
ActiveSheet
dies
Worksheets("Tabelle1").Range("A1")

AW: PasteSpecial
25.08.2009 13:03:55
Hampelmann
Hallo Hajo,
Danke für deine schnelle Antwort!
Ich habe "ActiveSheet" durch "Worksheets("Tabelle1").Range("A1")" ersetzt, jedoch funtz es immer noch nicht.
Gruß Hampelmann
Anzeige
AW: PasteSpecial
25.08.2009 13:12:15
Hajo_Zi
Hallo Unbekannter,
Du hast also den Nmaen Deiner Zieltabelle eintragen und auch die Zielzelle. Habe ich zufällig das richtige hingeschrieben.
Gruß Hajo
AW: PasteSpecial
25.08.2009 13:17:41
Hampelmann
Hallo Hajo,
ich habe die Zieltabelle und Zielzelle angepasst, hab es oben vergessen zu erwähnen.
Gruß Hampelmann
Anzeige
AW: PasteSpecial
25.08.2009 13:24:55
Hajo_Zi
Hallo Unbekannter,
ich war davon ausgegangen das Dein Code läuft und habe ihn deshalb nicht geprüft.
Mein Excel kennnt die Befehle
Format:="Unicode-Text", Link:=False, _
DisplayAsIcon:=False
Nicht und ich vermute mal Deins auch nicht.
Gruß Hajo
Anzeige
AW: PasteSpecial
25.08.2009 13:28:57
Hampelmann
Hallo Hajo,
das ist komisch, da das Makro ja funktioniert (wenn ich den Inhalt aus der zweiten Excel Instanz kopiert habe) und zu dem Quellcode kam ich über die Funktion Makro Aufzeichnen.
Dieses Makro funktioniert halt nur dann nicht wenn ich aus der selben Excelinstanz die Daten kopiere.
Gruß Hampelmann
Anzeige
AW: PasteSpecial
25.08.2009 13:37:20
Hajo_Zi
Halo Unbekannter,
ich hätte ja
Worksheets("Tabelle1").Range("A22").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
benutzt.
Gruß Hajo
AW: PasteSpecial
25.08.2009 13:39:05
Matthias5
Hallo Hajo,
es müssen nur die entsprechenden Daten in der Zwischenablage liegen.
Kopiere mal diesen Beitragstext und rufe in Excel "Inhalte einfügen" auf, dann kennt dein Excel das auch! ;-)
Gruß,
Matthias
Anzeige
AW: PasteSpecial
25.08.2009 13:33:26
Matthias5
Hallo,
wenn du die bereits eingefügten Daten noch einmal aus aus Excel heraus kopierst und einfügen willst, steht dir .PasteSpecial Format:="Unicode-Text" nicht mehr zur Verfügung. Vielleicht lädst du mal ein Beispiel hoch oder machst anders verständlicher, was genau du ausführst.
Hinweis: Hajos Hinweis zur Verwendung von Range ist hier nicht richtig, da Pastespecial in diesem Fall auf das Worksheet-Objekt angewendet wird. Das hat er wohl übersehen.
Gruß,
Matthias
Anzeige
AW: PasteSpecial
25.08.2009 13:46:57
Hampelmann
Hallo Matthias,
Szenario 1:
Ich öffne Excel und kopiere von da Daten heraus. Anschließend öffne ich nochmal Excel und füge dort mit dem oben genannten Makro diese Daten ein. Das funktioniert auch soweit. Er überschreibt das Zellformat der Zieldatei nicht.
Szenario 2:
Ich öffne Excel kopiere die Daten heraus und öffne diesmal nur eine 2 Arbeitsmappe. Wenn ich nun mit dem oben genannten Maktro die Daten einfügen will dann kommt eben diese Fehlermeldung und er fügt keine Daten ein.
Gruß Hampelmann
Anzeige
AW: PasteSpecial
25.08.2009 13:55:29
Matthias5
Hi,
die Option .PasteSpecial Format:="Unicode-Text" steht dir schlicht und ergreifend nicht zur Verfügung, wenn du innerhalb derselben Instanz einfügst.
Ich weiß jetzt nicht, in welchen Ablauf das Ganze eingebunden ist. Wenn du unbedingt eine zweite Instanz verwenden musst (musst du?), müsstest eigentlich zwei Aufrufe haben. Einen zum Einfügen innerhalb der ersten Instanz (siehe Hajos Codeschnipsel) und einen zum Einfügen in der zweiten Instanz (dein Code).
Gruß,
Matthias
Anzeige
AW: PasteSpecial
25.08.2009 14:04:42
Hampelmann
Hallo Matthias,
der Aufruf einer zweiten Instanz ist praktischer, da ich somit etwas schneller voran komme.
Ich werde es dann halt so machen das ich 2 verschiedene Makros schreibe.
Vielen Dank euch für die Hilfe!
Viele Grüße
Hampelmann
Mit OnErrorResumeNext das 2. Makro sparen
25.08.2009 22:39:00
Daniel
Hi
wenn du die OnErrorResumeNext-Funktion richtigt nutzt, kannst du beide Funktionen in ein Makro packen, so etwa in dem Stil:
Sub Einfügen()
on Error Resume Next
Err = 0
hier der Code zum Einfügen aus einer anderen Excelinstanz
if Err  0 then
hier den Code zum Einfügen aus der gleichen Excelinstanz
end if
On error Goto 0
End sub
das funktioniert dann so:
durch OnErrorResumeNext wird bei einem Fehler einfach mit der nächsten Programmzeile weitergemacht, dafür wird dann aber die Systemvariable Err mit einem Wert (dem Fehlercode) befüllt.
damiit kannst du prüfen, ob die erste Einfügevariante erforlgreich war und wenn nein, die zweite Variante ausführen.
Gruß, Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Effektives Einfügen mit PasteSpecial in Excel


Schritt-für-Schritt-Anleitung

Um Daten in Excel mithilfe der PasteSpecial-Funktion einzufügen, folge diesen Schritten:

  1. Daten kopieren: Markiere die gewünschten Zellen in deiner Excel-Tabelle und drücke Strg + C, um sie in die Zwischenablage zu kopieren.

  2. Makro erstellen: Öffne den VBA-Editor (Alt + F11) und füge ein neues Modul hinzu. Schreibe das folgende Makro:

    Sub Einfuegen_Format_beibehalten()
       On Error Resume Next
       ActiveSheet.PasteSpecial Format:="Unicode-Text", Link:=False, DisplayAsIcon:=False
    End Sub
  3. Makro ausführen: Kehre zu Excel zurück und führe das Makro aus, um die Daten mit den gewünschten Formaten einzufügen.

  4. Beachte die Quelle: Achte darauf, dass das PasteSpecial-Makro nur funktioniert, wenn die Daten aus einer anderen Excel-Instanz oder in einer anderen Tabelle innerhalb der gleichen Instanz eingefügt werden.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Die PasteSpecial-Methode des Worksheet-Objektes konnte nicht gefunden werden."

    • Lösung: Diese Fehlermeldung tritt auf, wenn du versuchst, Daten innerhalb derselben Excel-Instanz einzufügen. Stelle sicher, dass du die richtige Methode verwendest, wie z.B. Worksheets("Tabelle1").Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats.
  • Formatierungsprobleme: Wenn das Zielformat überschrieben wird, verwende die Option DisplayAsIcon:=False, um sicherzustellen, dass nur die Werte und nicht die Formatierung übertragen werden.


Alternative Methoden

  • Zwei separate Makros: Erstelle zwei unterschiedliche Makros; eines für das Einfügen aus einer externen Instanz und eines für das Einfügen innerhalb der gleichen Instanz.

    Sub Einfuegen()
      On Error Resume Next
      ' Einfügen aus einer anderen Instanz
      ' Hier den Code zum Einfügen einfügen
      If Err <> 0 Then
          ' Einfügen aus der gleichen Instanz
          Worksheets("Tabelle1").Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
      End If
      On Error GoTo 0
    End Sub

Praktische Beispiele

  1. Daten aus einer anderen Excel-Instanz einfügen:

    Sub EinfügenVonExternerInstanz()
       Dim wb As Workbook
       Set wb = Workbooks.Open("C:\DeinPfad\DeineDatei.xlsx")
       wb.Sheets(1).Range("A1").Copy
       ActiveSheet.PasteSpecial Format:="Unicode-Text"
       wb.Close SaveChanges:=False
    End Sub
  2. Daten innerhalb der gleichen Instanz einfügen:

    Sub EinfügenInnerhalbInstanz()
       Worksheets("Tabelle1").Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    End Sub

Tipps für Profis

  • Verwendung von .PasteSpecial: Achte darauf, dass die Methode activesheet.pastespecial für unterschiedliche Formate wie xlPasteValues oder xlPasteFormats verwendet werden kann, je nach deinen Anforderungen.

  • Kombination von Makros: Nutze die OnErrorResumeNext-Anweisung, um Fehler zu handhaben und mehrere Einfügeoperationen in einem einzigen Makro durchzuführen.


FAQ: Häufige Fragen

1. Warum funktioniert PasteSpecial nicht, wenn ich aus der gleichen Instanz einfüge?
Wenn du Daten innerhalb derselben Excel-Instanz einfügst, stehen dir bestimmte Optionen wie Format:="Unicode-Text" nicht zur Verfügung. Das liegt an den Einschränkungen, die Excel in diesem Kontext hat.

2. Wie kann ich sicherstellen, dass das Zielformat nicht überschrieben wird?
Verwende die Methode PasteSpecial mit den richtigen Optionen, um nur die Werte einzufügen, ohne die Formatierung zu verändern. Ein Beispiel ist Paste:=xlPasteValues.

3. Was ist der Unterschied zwischen Worksheets und ActiveSheet?
Worksheets bezieht sich auf ein spezifisches Arbeitsblatt, während ActiveSheet das aktuell ausgewählte Arbeitsblatt ist. Für gezielte Einfügungen ist es besser, Worksheets zu verwenden, um Missverständnisse zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige