Microsoft Excel

Herbers Excel/VBA-Archiv

PasteSpecial | Herbers Excel-Forum


Betrifft: PasteSpecial von: Hampelmann
Geschrieben am: 25.08.2009 12:30:05

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

  

Betrifft: AW: PasteSpecial von: Hajo_Zi
Geschrieben am: 25.08.2009 12:37:06

Halo unbekannter,

für
ActiveSheet
dies
Worksheets("Tabelle1").Range("A1")

GrußformelHomepage


  

Betrifft: AW: PasteSpecial von: Hampelmann
Geschrieben am: 25.08.2009 13:03:55

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


  

Betrifft: AW: PasteSpecial von: Hajo_Zi
Geschrieben am: 25.08.2009 13:12:15

Hallo Unbekannter,

Du hast also den Nmaen Deiner Zieltabelle eintragen und auch die Zielzelle. Habe ich zufällig das richtige hingeschrieben.

Gruß Hajo


  

Betrifft: AW: PasteSpecial von: Hampelmann
Geschrieben am: 25.08.2009 13:17:41

Hallo Hajo,

ich habe die Zieltabelle und Zielzelle angepasst, hab es oben vergessen zu erwähnen.

Gruß Hampelmann


  

Betrifft: AW: PasteSpecial von: Hajo_Zi
Geschrieben am: 25.08.2009 13:24:55

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


  

Betrifft: AW: PasteSpecial von: Hampelmann
Geschrieben am: 25.08.2009 13:28:57

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


  

Betrifft: AW: PasteSpecial von: Hajo_Zi
Geschrieben am: 25.08.2009 13:37:20

Halo Unbekannter,

ich hätte ja
Worksheets("Tabelle1").Range("A22").PasteSpecial Paste:=xlPasteValuesAndNumberFormats

benutzt.

Gruß Hajo


  

Betrifft: AW: PasteSpecial von: Matthias5
Geschrieben am: 25.08.2009 13:39:05

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


  

Betrifft: AW: PasteSpecial von: Matthias5
Geschrieben am: 25.08.2009 13:33:26

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


  

Betrifft: AW: PasteSpecial von: Hampelmann
Geschrieben am: 25.08.2009 13:46:57

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


  

Betrifft: AW: PasteSpecial von: Matthias5
Geschrieben am: 25.08.2009 13:55:29

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


  

Betrifft: AW: PasteSpecial von: Hampelmann
Geschrieben am: 25.08.2009 14:04:42

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


  

Betrifft: Mit OnErrorResumeNext das 2. Makro sparen von: Daniel
Geschrieben am: 25.08.2009 22:39:00

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