Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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? :)

Geschrieben

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? :D

Geschrieben

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?

Geschrieben

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:

Geschrieben

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.

Geschrieben

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

Geschrieben
Originally posted by LoneGunman

...

apWord.Visible = True

...

Soll natürlich apWord.Visible = False heissen.

Geschrieben

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

  • 2 Wochen später...

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...