Jusky Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 Hallo, ich bin es mal wieder. Wie kann man eigentlich den Inhalt einer Worddatei löschen bzw. überschreiben? Danke! MfG, Jusky Zitieren
-roTekuGeL- Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 hi Manuell löschen und was reinschreiben oder Autom.? Zitieren
Jusky Geschrieben 21. Februar 2003 Autor Geschrieben 21. Februar 2003 Das Programm ist so eine Art Automatisierung von Systemdokus: ich möchte eine Worddatei mit den Daten aus einer Access DB überschreiben lassen, alles soll im Hintergrund ablaufen. - Also automatisch. Zitieren
-roTekuGeL- Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 mh also ich würde die Datei in ne Textbox einlesen, dann darin das ändern was du willst (automatisch oder manuell) die datei speichern und fertig. damit kannst du dann auch entscheiden ob du den alten text stehen lassen willst. geht das oder solls was anderes sein? Zitieren
-roTekuGeL- Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 Also so: Option Explicit Private Sub Form_Load() On Error GoTo err_err Dim Dateinr As Integer 'Variable Dim Temp As String 'Variable Dim DateiPfad As String CommonDialog1.ShowOpen DateiPfad = CommonDialog1.FileName Dateinr = FreeFile Temp = Text1.Text Open DateiPfad For Output As Dateinr Print #Dateinr, Temp Close Dateinr Exit Sub err_err: End Sub Zur Erklärung: Die Datei die du mit dem Commondialog (Steuerelement) öffnest wird mit dem Text aus der Textbox gefüllt, dabei wird automatisch alles was vorher drin war gelöscht. Natürlich musst du das ganze noch etwas umbauen das es das nicht gleich beim Form_Load macht. noch Fragen? Zitieren
Jusky Geschrieben 21. Februar 2003 Autor Geschrieben 21. Februar 2003 Nun, ich wollte eigentlich keine Textdatei erstellen... Der User, der eine Worddatei zum 2.Mal füllen möchte, bekommt eine Meldung, dass die Datei schon besteht und eine Abfrage, ob er die Datei noch einmal füllen möchte. Will er dies, dann wird die Datei erst einmal als Kopie zur Sicherung gespeichert und dann das Original überschrieben und abgespeichert. Kann man da nicht irgendwas mit der Word.Application machen? Zitieren
-roTekuGeL- Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 Also der Code den ich dir Hingestellt hab schreibt in eine .txt oder .doc oder sonstige datei einen Text (überschreibt das was vorher drin war). Damit erstellst du KEINE neue TextDatei sondern änderst nur den Inhalt einer Datei die du (in dem bsp.) per Commondialog auswählst. Jetzt brauchst du also nur noch ein Funktion die ein Backup der Datei erstellt (das kann man mit dem FileSystemObject machen) und das wenn die Datei schon besteht der user eine meldung bekommt ob er die Datei neu füllen will (d.h. wenn die Datei schon existiert kommt die Abfrage). Also meine Wissens gibt es sowas wie Word.Application nicht. :confused: Zitieren
Klotzkopp Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 Originally posted by |ReDBullet| Also meine Wissens gibt es sowas wie Word.Application nicht. :confused: Aber sicher gibt's das. Jedes der Office-Programme hat eine vollständige Automatisierungsschnittstelle. Zitieren
-roTekuGeL- Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 Originally posted by Klotzkopp Aber sicher gibt's das. Jedes der Office-Programme hat eine vollständige Automatisierungsschnittstelle. Die da wäre? Zitieren
Der Kleine Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 Anbei mal bei einer Neuerstellung aus einem bestehenden Wordvorlage Dim word_application As Object Dim word_document_name As String Dim word_document As Object On Error Resume Next Set word_application = GetObject(, "word.application") If Err.Number <> 0 Then Set word_application = CreateObject("word.application") word_application.Application.Visible = True End If On Error GoTo 0 word_document_name = "C:\Programme\test\vorlagen\test.dot" word_application.Documents.Add Template:=(word_document_name) i = 1 While word_application.Documents(i).name = "" i = i + 1 Wend word_document_name = word_application.Documents(i).name Die Variable word_document_name übernimmt zwei Aufgaben, einerseits die Zuordnung der Vorlage zum Wordobjekt; Danach wird sie umgeschrieben und bekommt den internene Namen des bestehenden Wordobjektes, um den Zugriff darauf einfacher zu gestalten. Anzusprechen sind bei mir dort die Textmarken (text1, text2, text3), die in der Vorlage definiert sind mit : word_application.Documents(word_document_name).Bookmarks("text1").Select Selection = "Dieses ist die erste Textmarke" word_application.Documents(word_document_name).Bookmarks("text2").Select Selection = "Dieses ist die zweite Textmarke" word_application.Documents(word_document_name).Bookmarks("text3").Select Selection = "Dieses ist die dritte Textmarke" Entsprechend dürften auch schon vorhandene Einträge neu überschrieben werden, sofern ich nicht ein neues Dokument erstellen lasse. Es darf im VB unter Verweisen natürlich nicht die Wordschnittstelle fehlen. Funktioniert bei mir unter Basis VBA von Access 97 - zu Word 97. Zitieren
Gast Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 Option Explicit Public apWord As New Word.Application Public fso As New FileSystemObject Public iDateiNummer As Integer Private Sub btnSchreibeInWord_Click() 'Bestimme die Nummer der Sicherungsdatei iDateiNummer = 1 Do If fso.FileExists(App.Path & "\Dokument_" & CStr(iDateiNummer) & ".doc") Then iDateiNummer = iDateiNummer + 1 Else Exit Do End If Loop If fso.FileExists(App.Path & "\Dokument.doc") Then 'Öffne das Worddukument apWord.Documents.Open (App.Path & "\Dokument.doc") 'Lege eine nummerierte Sicherheitskopie an apWord.ActiveDocument.SaveAs (App.Path & "\Dokument_" & iDateiNummer & ".doc") 'Unsichtbar apWord.Visible = True '... 'Worddateibearbeitung '... 'Speichern und direkt überschreiben von 'Dokument.doc' apWord.Documents.Save True apWord.Quit Set apWord = Nothing Else MsgBox "Datei nicht gefunden", vbCritical, "Fehler" End If End Sub Zitieren
Gast Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 Originally posted by LoneGunman ... apWord.Visible = True ... Soll natürlich apWord.Visible = False heissen. Zitieren
Jusky Geschrieben 21. Februar 2003 Autor Geschrieben 21. Februar 2003 Das Ganze haut irgendwie nicht so ganz hin: beim Ausführen wird mir nun zwar eine Kopie vom Original gemacht, aber es wird nicht das Original, sondern die Kopie bearbeitet... Sorry, vielleicht verstehe ich euch auch nicht ganz. Habe von VB noch nicht ganz die Ahnung. Hier nochmal der Quellcode und was ich vor habe: iAnswer = MsgBox("Das Dokument wurde bereits geladen! Möchten Sie trotzdem fortfahren?", vbYesNo, "Information") If iAnswer = vbNo Then Else 'die Original-Datei wird zur Sicherung abgespeichert - mit Zeitstempel SavedFileName = "C:\Temp\" & strCodesetName & " " & "2003" & "." & Month (CpyDate) & "." & Day(CpyDate) & " " & Second(CpyDate) & ".doc" wordApp.ActiveDocument.SaveAs SavedFileName, wdSaveFormat.wdFormatDocument 'der Original-Datei-Inhalt wird gelöscht und gefüllt : Set wordApp = Nothing GetInfos wordApp, strCodesetName wordApp.Documents.Save True End If Zitieren
Gast Geschrieben 21. Februar 2003 Geschrieben 21. Februar 2003 Sicherst Du vor, oder nach dem Bearbeiten? Zitieren
Jusky Geschrieben 6. März 2003 Autor Geschrieben 6. März 2003 Ich wollte eigentlich vor dem Bearbeiten absichern. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.