Word Makro - Von alter Wordversion umschreiben

Hallo, ich habe ein altes Word Makro, welches aus einem Programm Daten nimmt und diese dann in Word schreibt. Ich habe es nicht selbst programmiert, soll es aber für 2007/2011 Word Versionen wieder zum laufen bringen. Ich habe zwar etwas VB erfahrung, aber einige Zeilen verwirren mich voll und ganz bei diesem Makro. Wenn ich es starten will bekomm ich immer eine Fehlermeldung und soll es dann debuggen.
Folgender Code ist noch Fehlerhaft, und ich kann ihn leider nicht zum laufen bringen.
(Nicht wundern, sowohl davor, als auch danach sind noch sehr viele Zeilen^^, aber das sollte genügen.

Private Function DatenfelderEinlesen()
Dim i
Dim sDatenzeile$
Dim start
Dim ende
i = 0
If Not EOF(1) Then
Line Input #1, sDatenzeile$
WordBasic.PrintStatusBar WordBasic.Int(Seek(1) - 1 / nDateil‰nge * 100 + 0.5), „% bearbeitet.“

start = 1
ende = InStr(start, sDatenzeile$, Chr(9)) ’ sucht nach erstem Tabulator ab start

While ende 0 And i = start Then
sDatenfeld__$(i) = Mid(sDatenzeile$, start)
i = i + 1
End If
End If
DatenfelderEinlesen = i
End Function

Das Problem liegt in Zeile 7 bei „If Not EOF(1) Then“
Kann mir jemand sagen, wie ich das abändern soll, damit es unter neueren Wordversionen funktioniert.
Gibt es irgendwo eine Siete, wo die änderungen für Makros bei Word alt vs Word neu aufgeschrieben sind?

Ich weiß, dass dies hier nicht wirklich eine Informatikerseite ist, aber da ich die Erfahrung gemacht habe, dass man hier sehr schnell und sehr gut Hilfe bekommt, versuch ichs einfach mal hier :wink: Ich muss das ganze in 3 Tagen fertigstellen, deshalb habe ich etwas Zeitnot :wink:

Gruß

Es tut mir leid, hier kann ich leider nicht weiterhelfen.
Wolfgang

Hallo, ich habe ein altes Word Makro, welches aus einem

Hallo Exitras,

bedauerlicherweise bin ich auch kein VBA-Experte und kann dir nicht helfen. Wenn ich in der VBA-Hilfe nach dem Begriff WordBasic suche, bekomme ich diese Info:

„Global.WordBasic-Eigenschaft
Gibt ein Automation-Objekt (Word.Basic) mit Methoden für alle WordBasic-Anweisungen und Funktionen zurück, die in Word 6.0 und Word für Windows 95 zur Verfügung standen. Schreibgeschützt.“

Das wichtige wohl die Vergangenheitsform bei „zur Verfügung standen“.

Ich weiß nicht, ob diese Frage für alle in diesem Forum zu lesen ist. Falls nicht, sieh zu, dass du sie öffentlich kriegst, oder such dir ein Forum wie office-lösung oder ms-office-forum und frag dort. Sorry, dass ich weiter nichts dazu beitragen kann.

Gruß
Gerhard

Steig um auf Delphi, da ist ein Makro Tool mit drin!!!

Guten Morgen,

Sorry, aber ich kenne auch nur das EOF(1). Ich hab mich ein wenig umgehört - bis Word 2007 soll es kompatibel gewesen sein. Was danach dazu führt, dass es nicht mehr funktioniert, kann ich leider nicht sagen. Ich werde mich weiter umhören. Sollte ich zeitnah etwas herausfinden, melde ich mich nochmals. Ansonsten hoffe ich, jemand anderes hier konnte helfen.

Viele Grüße!

Hallo, meine Vermutung geht dahin, dass es nicht an den Makrobefehlen liegt, sondern an den eingebundenen Bibliotheken. Generell ist es kein Problem Makros der älteren Version in die neue zu übernehmen. Bei deinem Makro geht es aber um Dateioperationen: lesen - einfügen usw.
Im VBA Editor im Menü Extras - Verweise aufrufen. Die markierten mit der „alten“ Version vergleichen.
Hoffe dies hilft dir weiter!
Schönen Gruß
Uwe

Hallo,

mit Word 2010 habe ich keine Macros mehr gemacht. Googlet man aber nach word 2010 eof(1) findet man z.B.:

http://social.msdn.microsoft.com/Forums/de-DE/office…

und einige weitere Beiträge. Slot 1 wurde ggf. nicht geöffnet. Leider wurde die Fehlermeldung nicht mitgeteilt, so dass man hier nur raten kann. Nach der Fehlermeldung zu suchen (in Google) kann ebenfalls weiter helfen.

Viele Grüße

Michael Roth

Hey,
da bin ich leider auch überfragt.
Gruß

Hallo,
Ich habe es mit Word 2003 zum laufen gebracht. Also sollte es prinzipiell funktionieren. Aber mit 2010 funktioniert es nicht mehr. Es kommt der Fehler 1051, Danach soll ich Debuggen und es zeigt mir an, dass der Fehler bei der Zeile:
" Error Err.Number "
liegt.

Wenn du magst, kann ich dir gerne mal den ganzen Code schicken. Vll hast du ja die zündende Idee :wink:

Hallo,
Ich habe es mit Word 2003 zum laufen gebracht. Also sollte es prinzipiell funktionieren. Aber mit 2010 funktioniert es nicht mehr. Es kommt der Fehler 1051, Danach soll ich Debuggen und es zeigt mir an, dass der Fehler bei der Zeile:
" Error Err.Number "
liegt.

Wenn du magst, kann ich dir gerne mal den ganzen Code schicken. Vll hast du ja die zündende Idee :wink:.

Stell doch einfach mal sicher, dass auf 1 überhaupt irgend etwas geöffnet ist.

Die Routine die Du weiter oben Zeigst öffnet nichts auf 1. Also fehlt es entweder, das öffnen schlägt fehl oder der Code zum Öffnen wird nicht aufgerufen.

Setze ein Breakpoint an die Stelle, an der geöffnet wird und debugge von dort aus.

Hey Danke :wink: das war ein guter Tipp! Beim weiteren Debuggen stehe ich nun vor:

WordBasic.FormatDefineStylePara LeftIndent:=„0 cm“, RightIndent:=„0 cm“, Before:=„0 pt“, _
After:=„0 pt“, LineSpacingRule:=4, LineSpacing:=„14 pt“, _
Alignment:=0, WidowControl:=1, KeepWithNext:=1, _
FirstIndent:=„0 cm“

Dies hat sich wohl auch geändert bei Word 2010.
Tschuldige, dass ich so viel Frage, aber ich finde zu all den Sachen rein gar nix sinnvolles im Internet :wink:

Hallo, gerne schaue ich mir den kompletten Code mal an, versprechen kann ich aber nix :smile:
Die zu importierende Datei(en) hast du auch? (nat. mit Spieldaten)
Gruß
Uwe

Hallo,
so ganz blicke ich auch nicht durch …

… aber der Variablen Name „nDateil‰nge“ sieht verdächtig aus (ursprünglicher Variablen Name „nDateilänge“?).

Ich vermute einen Fehler in der Konvertierung von Umlauten.
Die sollte man möglichst immer vermeiden.

Abhilfe im Konkrenten Beispiel … alle Fundstellen „nDateil‰nge“ in „nDateilänge“ oder „nDateilaenge“ ändern.

Viele Grüße Uwe

Ja das hat sich irgendwie so beim Kopieren in dieses Forum so ergeben :smile: Ich habe eben nachgeschaut und im Makro selbst steht das nicht so. Aber trotzdem vielen Dank für den Hinweis!

Hallo,

sorry wegen der späten Antwort - hatte viel zu tun diese Woche…

Damit EOF(1) funktionier musst du natürlich auch vorher eine Datei als Nummer 1 öffnen. Um hier Probleme beim Öffnen mehrerer Dateien vorzubeugen sollte man statt einer statischen Nummer immer
Dim Datei1 as Integer
Datei1=FreeFile
und anschließend Open … as Datei1, … EOF(Datei1) verwenden.
In Office 2007/2010 sollte es beim VBA eigentlich keine Änderungen geben. Selbst riesige Projekte mit über 100 Modulen/Klassen liefen bei mir problemlos unter den neuen Versionen.
Du kannst mal EOF(#1) versuchen - aber wie gesagt: wenns früher so lief sollte es jetzt auch laufen.

Zum Thema Informatiker-Seite: Studiere Informatik an der Technischen Universität München :wink:

Gruß
Philipp

Wenn es wirklich NUR an dieser Zeile scheitert, dann ist die Funktion EOF nicht vorhanden, mit einem falschen Argumenttyp bestückt (unwahrscheinlich) oder mit der falschen Anzahl an Argumenten bestückt (auch unwahrscheinlich).
Die besagte EOF-Funktion könnte aber auch einen nicht-booleanischen Rückgabewert haben, der nicht als Boolean interpretiert werden kann (z.B. ein Objekt).

Hallo,

da www-E-Mails bei mir im Spam gelandet waren, habe ich die Anfrage erst jetzt gesehen, als ich mich eingeloggt habe.

Ich muss das ganze in 3 Tagen fertigstellen,
deshalb habe ich etwas Zeitnot :wink:

Hast du das Problem denn lösen können?

Viele Grüße
Kai