Hallo,
ich habe eine Access Datenbank mit verschiedenen Schäden. Es wird eine Schadennummer ausgewählt und eine Wordvorlage geöffnet. Vor dem speichern soll ein Unterverzeichnis mit der Schadennummer erstellt werden. das funktioniert !
Als nächsten soll die Worddokument mit der Schadennummer in dieses Unterverzeichnis abgespeichert werden.
Z.B. Schadennummer 13-1234
erstellt Unterverzeichnis D:\13-1234 (klappt)
mein Ergeb. D:\13-123413-1234__Wordformularname
Richtig sollte es sein ins Unterverzeichnis
D:\13-1234\13__Wordformularname
Hallo,
mein Ergeb. D:\13-123413-1234__Wordformularname
da fehlt wohl ein „“.
Wie genau gehts du vor?
Wie heist die Programmzeile mit der der Dateiname angelegt wird?
Mein Vorschlag, um das Problem erst gar nicht aufkommen zu lassen:
- Verzeichnis anlegen … klappt ja schon
z.B.
MDdir „VerzeichnisNameMitNummer“ ’ das klappt ja schon
- Die Vorlage, vor dem Oeffnen unter dem pasenden Namen in das Verzeichnis kopieren.
u.U. mit Ueberpruefungen ob die Datei schon existiert, Benutzerabfrage zum Ueberschreiben etc.
VorlageDateiName = „d:VorlageDir\meinewordvorlage.doc“ ’ halt Pfad + Name der Vorlage
SchadenDoc = „VerzeichnisNameMitNummer“ & „“ & DateiNameNeuMitNummer
FileCopy VorlageDateiName,SchadenDoc
- Die neue Datei oeffnen
Application.FollowHyperlink SchadenDoc, , True, False
=============================
Mir stellt sich die Frage der Sinnhaftigkeit fuer jede Datei ein neues Verzeichnis anzulegen. Ich packe in so einem Fall alles in ein Verzeichnis, vergebe eindeutige Dateinamen (ewt. mit der Zeit und DatensatzID) und speichere die Verweise auf die Dateien in einer Tabelle, die mir die Relationen Datenssatz Dokumente aufloest.
Hope this helps
Peter
Hallo,
welchen Code hast du denn schon…?
folder = „D:\Ablage“ & Me.Jahr & „-“ & Me.SchadenNr
MkDir folder
FilePath = folder & DLookup(„SchadNr“, „Schadensmeldung“, "SchadenID = " & Me.SchadenID) & „__“ & Me.FormListe.Column(4)
Hatte Ihn vergessen einzugebe !
Hallo,
welchen Code hast du denn schon…?
Hi,
verschieden Unterverzeichnisse, weil ich mehrere Formulare zu jeder SchadenNr erzeuge, und daher pro schadenNr ein Unterverzeichnis.
Das „“ fehlt, das ist genau mein fehler.
Hier schon mal mein Code
folder = „D:\Ablage“ & Me.Jahr & „-“ & Me.SchadenNr
MkDir folder
FilePath = folder & DLookup(„SchadNr“, „Schadensmeldung“, "SchadenID = " & Me.SchadenID) & „__“ & Me.FormListe.Column(4)
Hallo,
OK, dann halt
FilePath = folder & „“ & DLookup(„SchadNr“,„Schadensmeldung“,
"SchadenID = " & Me.SchadenID) & „__“ & Me.FormListe.Column(4)
verschieden Unterverzeichnisse, weil ich mehrere :Formulare zu jeder SchadenNr erzeuge, und daher pro :schadenNr ein Unterverzeichnis.
Ist kein Argument dagegen alles in ein Verzeichnis zu packen.
Tschau
Peter
Hallo,
Versuch mal
Shell MkDir folder
Hi,
MkDir folder funktioniert,
der fehler liegt bei FilePath= …
hier wird nicht in ein Unterverzeichnis abgespeichert !
Gruss Jürgen
Hallo,
Versuch mal
Shell MkDir folder
Hi Peter,
Danke, klappt mit „“
Nur habe ich jetzt folgendes Problem, beim nächsten Formular für diese Schadennummer gibt es die Fehlermeldung 75 weil Unterverzeichnis schon existiert.
Mit on error resume next klappt es.
Gibt es dazu eine alternative ?
Bzw. wie schalte ich on error resume next wieder aus.
danke Jürgen
Hi,
es fehlt mindestens ein Backslash
FilePath = folder & “\“ & DLookup(„SchadNr“, „Schadensmeldung“, "SchadenID = " & Me.SchadenID) & „__“ & Me.FormListe.Column(4)
Danke !!!
Hallo,
ein „on Error Resume Next“ mitten im Code ist schlechtester vorstellbarer Programmierstil ueberhaupt!!!
Sauber ist eine vorherige Pruefung ob ein Verzeichnis/Datei existiert:
Dim fs As Object
Set fs = CreateObject(„Scripting.FileSystemObject“)
If not fs.FileExists("MeinVerzeichnis) Then
MKDir(„MeinVerzeichnis“)
end if
Gerade noch annehmbar waere das in einem Fehlerbehandlungsblock abzufangen.
Ein Fehlerbehandlungsblock sollte eigentlich in jeder Funktion vorhanden sein!
=====================================
Funtion …
Dim var2, var,3…
On Error GoTo HandleErr
Code im Funktionsrumpf
ExitHere:
Exit Sub
’ VBA Fehlerhandler
HandleErr:
Select Case Err.Number
Case 75 ’ File already exists
Resume Next
case 53 ’ File not found
’ fehlermedlung/Behandlung
Case Else
MsgBox "Error " & Err.Number & ": " & Err.DESCRIPTION, vbCritical, „FormularName/Module-Funtionsname“
End Select
Resume ExitHere
btw.
„on Error Resume Next“ schaltet man mit
„on Error Goto Sprungmarke“ wieder ab
Sprungmarke siehe oben HandleErr oder ExitHere
Tschau
Peter
Hi Peter,
vielen, vielen Dank hat alles super geklappt.
Ich beschäftige mich erst seit einem 1/2 Jahr mit Access, bin von beruf Bauingenieur, und habe jetzt ein Programm geschrieben für eine Schadendatei mit Ausdruck von verschiedenen Formularen und Berichten.
Das Programm ist fertig, hat aber 2-3 kleinere Fehler bzw. sind es kosmetische Fehler. Hättest Du zeit bzw. Lust, das Programm mal auf diese Fehler (Korrekturen) durchzuschauen. Könnte Dir auch unter Umständen den Aufwand finanziell ausgleichen.
Gruss Jürgen
gutachter ät juergen-nagel Punkt de
Hallo,
Wenns kein zu grosser Aufwand wird, schau es ich mir gerne mal an.
Tschau
Peter
Hallo,
sieht aus als hättest Du einen \ vergessen.
Wahrscheinlich genügt es zwischen der Verzeichnisvariable und der Filenamevariable & „“ einzufügen.
Kann nur so oder eine ähnliche Kleinigkeit im Code sein.
Gruß
Andreas
Hi Andreas,
danke, war so.
Gruss jürgen
Hallo,
Leider habe ich hier kein Erfahrung und kann somit nicht helfen.
Vg
Christian
Hallo echojuergen,
am besten Pfad- und Dokument-Name trennen
also:
Schadennr = „13-1234“
Pfad = „D:“ & Schadennr & „“
dim objWord as worddoc
objWord.path = pfad
objWord.name = left(schadennr,2) & „__“ & wordformname
objword.save
Gehen müßte auch objword.save(pfad & Name)
Sollte das jetzt nicht direkt die Lösung sein, dann bitte mal den Code-Teil posten, der die Verdoppelung der Schaden-Nr. ohne „“ verursacht.
Gruß
Harry
Hallo Echojuergen,
das sieht ganz so aus als ob Du den Backslash vergessen hast.
Dim Pfad, Dateiname, SaveAsName as string
Pfad = „D:\12345678“
{mkdir Pfad}
Dateiname = „13-1234__Wordformularname.DOC“
SaveAsName = Pfad & „“ & Dateiname
{Save as SaveAsName}
sorry ich habe die zugehörigen VBA-Befehle nicht so 'drauf.
Gruß, Matthias
Hallo,
leider kann ich deine Frage nicht beantworten. Du musst zumindest ein Codeschnipsel hier reinstellen, sonst weiß man ja gar nicht, warum was falsch oder richtig laufen sollte.
LG