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
einAber 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.
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.
%Vor%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 neuenDelete
Methode drin. MitFilter
Methode wird eine neue Sammlung vonMyCharacter
erstellt. Diese Sammlung enthält nur die Zeichen, die bleiben sollen. Schließlich wird in der MethodeRewrite
der Text zusammen mit der Formatierungsinformation aus dieser Sammlung zurück in den Zielbereich geschrieben:
%Vor%Wie man es benutzt:
Vorher:
Nachher:
Um es stabiler zu machen, sollten Sie:
Ihr Beispiel wurde überarbeitet:
%Vor% Wie wäre es mit der Änderung von: activesheet.paste
zu:
activesheet.activate
activecell.pastespecial xlpasteAll
Dieser Beitrag scheint das Problem zu erklären und zwei Lösungen zu bieten:
In diesem Beitrag kommen zwei Dinge ans Licht:
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%