Laufzeitfehler '1004': Paste-Methode des Arbeitsblattes Fehler bei Klasse

8

Kopieren Sie 1 Zeile Text von Word nach Excel mit VBA.

Wenn der Code die untere Zeile erreicht, erhalte ich den folgenden Fehler.

%Vor%

Laufzeitfehler '1004': Fügen Sie Methode des Arbeitsblattes ein Fehler Klasse Class

ein

Aber wenn ich auf die Schaltfläche "Debug" klicke und F8 drücke, fügt es die Daten ohne Fehler in Excel ein.

Dieser Fehler tritt jedes Mal auf, wenn die Schleife aktiv wird und Debug und F8 drücken, um die Daten einzufügen.

Ich habe mehrere Tests durchgeführt und konnte die Ursache für dieses Problem nicht finden.

Auch verwendet DoEvents vor dem Einfügen des Datencodes, aber nichts hat funktioniert.

Irgendwelche Vorschläge?

BEARBEITEN: -

Ich poste den Code, da Sie beide dasselbe sagen. Hier ist der Code für Ihre Überprüfung.

%Vor%

Wenn Sie wissen möchten, warum ich ein Wort als Ersatz gewählt habe, gehen Sie bitte unter dem folgenden Link durch. Ссылка

Verwenden Sie auch den Code aus dem folgenden Link, um die Anzahl der Ersetzungen zu erhalten.

Ссылка

    
Sixthsense 03.03.2016, 10:59
quelle

6 Antworten

2

Characters(start, length).Delete() Methode scheint wirklich nicht mit längeren Strings in Excel zu funktionieren :(. So könnte eine benutzerdefinierte Delete() -Methode geschrieben werden, die mit entkoppelten Formatierungsinformationen und Texten arbeitet. So kann der Text der Zelle ohne modifiziert werden Verlust der Formatierungsinformationen HTH.

  

Fügen Sie eine neue Klasse mit dem Namen MyCharacter hinzu. Es enthält Informationen über Text und   Formatierung eines Zeichens:

%Vor%
  

Fügen Sie die nächste neue Klasse namens MyCharcters hinzu und verpacken Sie den Code des neuen    Delete Methode drin. Mit Filter Methode wird eine neue Sammlung von MyCharacter erstellt. Diese Sammlung enthält nur die Zeichen, die bleiben sollen. Schließlich wird in der Methode Rewrite der Text zusammen mit der Formatierungsinformation aus dieser Sammlung zurück in den Zielbereich geschrieben:

%Vor%
  

Wie man es benutzt:

%Vor%
  

Vorher:

  

Nachher: ​​

    
dee 07.03.2016 22:59
quelle
2

Um es stabiler zu machen, sollten Sie:

  • Deaktivieren Sie alle Ereignisse während des Betriebs
  • Rufen Sie niemals .Activate oder .Select
  • auf
  • Fügen Sie mit WorkSheet.Paste
  • direkt in die Zielzelle ein
  • Brechen Sie den Kopiervorgang mit Application.CutCopyMode = False
  • ab
  • Verwenden Sie dasselbe Dokument erneut und erstellen Sie nicht für jede Iteration ein neues
  • Mache so wenig Operationen wie möglich in einer Iteration
  • Verwenden Sie die frühe Bindung [New Word.Application] anstelle der späten Bindung [CreateObject ("Word.Application")]

Ihr Beispiel wurde überarbeitet:

%Vor%     
Florent B. 11.03.2016 17:10
quelle
1

Wie wäre es mit der Änderung von: activesheet.paste zu: activesheet.activate activecell.pastespecial xlpasteAll

    
Kenneth Chan 12.03.2016 02:48
quelle
1

Dieser Beitrag scheint das Problem zu erklären und zwei Lösungen zu bieten:

Ссылка

In diesem Beitrag kommen zwei Dinge ans Licht:

  1. Versuchen Sie, das Einfügen-Special
  2. zu verwenden
  3. Geben Sie den Bereich an, in den Sie einfügen möchten.
Scott Marcus 12.03.2016 03:16
quelle
0

Eine andere Lösung wäre, die Zielzellen als XML zu extrahieren, den Text durch einen regulären Ausdruck zu ersetzen und dann das XML zurück in das Blatt zu schreiben. Obwohl es viel schneller ist als das Arbeiten mit Word, erfordert es möglicherweise etwas Wissen mit regulären Ausdrücken, wenn die Formate behandelt werden. Außerdem funktioniert es nur mit Excel 2007 und höher.

Ich habe ein Beispiel zusammengestellt, das alle Vorkommen mit demselben Stil ersetzt:

%Vor%     
Florent B. 14.03.2016 01:41
quelle
0

DDuffys Antwort ist nützlich.
Ich fand, dass der Code normal auf langsamem CPU PC laufen kann.
Fügen Sie den folgenden Code vor dem Einfügen hinzu, das Problem ist sloved:

%Vor%     
Robin.Yu 08.03.2017 13:40
quelle

Tags und Links