MkDir Schreibweise Datei abspeichern

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:

  1. Verzeichnis anlegen … klappt ja schon

z.B.

MDdir „VerzeichnisNameMitNummer“ ’ das klappt ja schon

  1. 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

  1. 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