HERBERS Excel-Forum - das Archiv

Thema: Copy-Paste kaputt

Copy-Paste kaputt
Frank
Liebe Gemeinde

Mein Excel ist kaputt, bzw. das VBA.
    Set wrd = CreateObject("Word.Application")

With wrd
.Visible = True
.Documents.Open FN
.Selection.WholeStory
.Selection.Copy
.Quit
End With
Workbooks.Add
Sheet(1).PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False

ich öffne ein Word-Dokument, kopiere alles und möchte es in ein neues XL-Workbook einfügen. Das ging früher (vor 1-2 Jahren) mal. Heute geht das nicht mehr - das heisst per VBA.
Da hier die Fehlermeldung kommt "Die PasteSpecial-Methode des Worksheet-Objects konnte nicht ausgeführt werden", ist das neue Workbook noch offen. und wenn ich nun in Cells(1,1) hineinklicke und CTRL+C drücke, ist da das Kopierte auch drinnen.
Zeichne ich ein Makro dafür auf, entsteht genau dieser Code:
    Workbooks.Add

ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False

Was mache ich falsch?
Ach so, andere Formen des Einfügens, wie Sheets(1).Paste und ähnlich Befehle mit ":Destination..." habe ich auch schon ausprobiert. Geht alles nicht.

Grüsse
Frank
AW: Copy-Paste kaputt
daniel
Hi

Der Fehler im Code ist das "Sheet(1)"
Das müsste meiner Kenntnis nach "Sheets(1)" heißen, also mit Plural-s, weil du aus der Gruppe der Sheets das erste nimmst.

Du kannst es aber auch wie in der Aufzeichnung mit "ActiveSheet" angeben.
Nach einem Workbooks.Add ist die neue Mappe das ActiveWorkbook und dessen erstes Tabellenblatt das ActiveSheet

Gruß Daniel
AW: Copy-Paste kaputt
Ulf
Hi,
mit etwas Nachhilfe bei ActiveApp sollte das funktionieren:
    Dim wrd As Object

Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oWS As Excel.Worksheet
Dim fn As String
fn = "C:\Users\..."
Set wrd = CreateObject("Word.Application")
With wrd
.Visible = True
.Documents.Open fn
.Selection.WholeStory
.Selection.Copy
.Quit
End With
Set wrd = Nothing
Set oXL = Excel.Application
Set oWB = Workbooks.Add
Set oWS = oWB.Sheets(1)
oWB.Activate
oWS.Activate
oWS.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False

hth
Ulf
AW: Copy-Paste kaputt
Frank
Hallo Ulf,

danke, damit funktioniert's.
Jetzt noch eine Idee, warum es vor ein paar Jahren noch ohne die Sperenzchen mit Excel.Application und dem aktivieren des Workbooks/Sheets ging? Prinzipiell macht das nichts anderes als mein Code. Nur halt mit viel mehr Overhead. Man sollte bei Excel auch in VBA nicht dazu sagen müssen, dass es sich um Excel handelt.

Grüsse
Frank
AW: Copy-Paste kaputt
Frank
Hallo Daniel,

danke für Deine Antwort.
Ja, da hättest Du recht, wenn es nicht auch mit den anderen Versionen nicht klappen würde. Das fehlende "s" ist beim Erstellen des Beitrags verschütt' gegangen.
Wie gesagt: Ich kopiere die Version aus der Makroaufzeichnung (wo es funktioniert) in den Code und das Script steigt mit der Fehlermeldung aus.

Grüsse
Frank
AW: Copy-Paste kaputt
daniel
Schwierig.
Warum zeigst du nicht die Codes, die du tatsäch hast?

Wenn du den Code aufzeichnet, schließt du dann auch die Worddatei, bevor du einfügst (.Quit)?.
Wenn nein, könnte das der Grund sein und du darfst die Word-Datei erst schließen,nachdem demu eingefügt hast.

Generell sollte man kopieren und einfügen so dicht wie möglich zusammen bringen, weil es Befehle gibt, die den Microsoft-Spezifischen Zwischenspeicher leeren.
    Set wb = Workbooks.Add

Set wrd = CreateObject("Word.Application")
With wrd
.Visible = True
.Documents.Open FN
.Selection.WholeStory
.Selection.Copy
wb.Sheets(1).PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False
.Quit
End With


Meines Wissens nach muss man das PasteSpecial an eine Zelle anhängen,dh wenn es so nicht funktioniert, dann probier malzum einfügen
wb.Sheets(1).Cells(1, 1).PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False


Gruß Daniel