Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Starter mit mehreren Funktionen

Begonnen von Carl, Januar 14, 2020, 19:42:13

⏪ vorheriges - nächstes ⏩

Carl

Hallo,

ich bin dabei, einen Starter für eine DB im FE/BE-Design zu basteln und habe Fehlermeldungen.  Und versuche mich schrittweise vor zu tasten. Beispielsweise öffnet der unten stehende Code eine accdb, aber die Zeile darunter öffnet keinen docx.


Shell SysCmd(acSysCmdAccessDir) & "MSaccess.exe """ & CurrentProject.Path & "\~Versionsgeschichte\Beispiel.accdb""", vbNormalFocus
Shell SysCmd(acSysCmdAccessDir) & "MSword.exe """ & CurrentProject.Path & "\~Versionsgeschichte\Beispiel.docx""", vbNormalFocus


Ich habe schon heraus gefunden, dass das irgend etwas mit der Installation zu tun haben könnte. Wie bekomme ich heraus, was anstelle von Shell SysCmd(acSysCmdAccessDir) & "MSword.exe " stehen muss?

--------------

Hiermit kopiere ich das FE in die Installation des Users.


FileCopy "N:\string\string\string\string\string\string\string\string\Vorlage.accdb", Application.CurrentProject.Path & "\~Unterordner\Starter.accdb"
[\code]

Nun möchte ich den Pfad aus einer Tabelle tbl1 beziehen, die das Feld Pfad im Datensatz mit ID=1 enthält. Wie kann man den Pfad aus der Tabelle beziehen? Oder soll man ein Feld in das Formular einfügen und sich darauf beziehen?

Carl

DF6GL

Hallo,
auf
SysCmd(acSysCmdAccessDir)

kannst Du verzichten, solange das aufzurufende Programm in Windows registriert ist, was bei den Office-Programmen der Fall sein dürfte.

zudem heißt Word als Programm nicht MsWord.exe sondern WinWord.exe.


Shell  "MSaccess.exe """ & CurrentProject.Path & "\~Versionsgeschichte\Beispiel.accdb""", vbNormalFocus
Shell  "Winword.exe """ & CurrentProject.Path & "\~Versionsgeschichte\Beispiel.docx""", vbNormalFocus



Was ist das für ein (sinnlose)  Unterverzeichnis-Bandwurm und warum taucht die Tilde im Verzeichnisnamen auf? Hat das eine bestimmte Bewandtnis?

FileCopy "N:\string\string\string\string\string\string\string\string\Vorlage.accdb", Application.CurrentProject.Path & "\~Unterordner\Starter.accdb"

Carl

Es klappt! Danke.

Der Bandwurm zeigt nur dass es lang ist. Die Tilde ist notwendig, damit das Verzeichnis in der Sortierung im Explorer "oben" steht und anders als handangelegte aussieht. Sie sonst keine Bedeutung.

Mal ne andere Frage:

Wenn ein Verzeichnis verschiedene Dateien enthält, zum Beispiel Kraut und Rüben. Wie kann man dann Acc anweisen, eine bestimmte Datei heraus zu suchen und an zu stoßen, die im DateiNamen eine bestimmte Zeichenfolge enthält, zum Beispiel "abc"? Wonach muss ich suchen, wenn ich so eine Funktion basteln möchte?


Carl

Carl

Ich habe übungsweise versucht, die obige Funktion etwas auszubauen. Das Feld Pfad2 entstammt einer Tabelle, die vom User selbst über die Einstellungen editiert werden kann und enthält nur eine Zelle ID=1, nämlich den Dateinamen.


Dim strFN1 As String
strFN1 = Nz(Me!Pfad2, "")
If Dir(strFN1) <> "" Then
     FollowHyperlink CurrentProject.Path & strFN1
Else
    MsgBox "Der Pfad wurde nicht gefunden!", 64, "Geben Sie bei den Einstellungen einen korrekten Pfad an."
End If


Hier funktioniert die Zeile FollowHyperlink CurrentProject.Path & strFN1 nicht. Was ist da falsch?

Carl

DF6GL

Hallo,

gib  mal CurrentProject.Path & strFN1 mit Debug.Print in das Direktfenster aus, dann siehst Du selber die Ursache.

Zitat....eine bestimmte Datei heraus zu suchen und an zu stoßen, die im DateiNamen eine bestimmte Zeichenfolge enthält, zum Beispiel "abc"?

strDateiname = Dir("*abc*")

findet die erste Datei, die "abc" im Dateinamen enthält.

Beaker s.a.

Hallo Carl,
Für Ordner-/Dateizugriffe gibt es das "FileSystemObject".
Das bietet etwas mehr Komfort als ein einfaches "Dir()"
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)