Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Dateien kopieren mit Formular





Frage

Hallo, ich möchte mit einem Formular : im Feld 1 Datei suchen (in Verzeichnissen) im Feld 2 Speicherort für die Datei auswählen ( in Verzeichnissen) und Button Speichern ist so etwas machbar? Hat jemand ein Beispiel? Gruß Gilli

Antwort 1 von gilli87

Sorry, Access2000

Antwort 2 von gilli87

Hat keiner eine Idee, ich brech mir bei den Beispielen die ich für Datei oder Verzeichnissuche so finde, bald das Hirn.
Gruß
Gilli

Antwort 3 von Marie

schau mal bei dev asish
Datei suchen:
API: Search for a file
Author(s)
Dev Ashish


(Q) How do I search a hard drive for a file given only it´s name and retrieve the path to it??

(A) The first example is applicable only for Access 97. For Access 95, see the alternate method.

You can use the new Office FileSearch object for this. Before using the code, make sure "Microsoft Office 8.0 Object Library" (typically referenced to MSO97.DLL under Office folder) is selected under Tools/References.

Paste the following code in a new module:

´***************** Code Start ***************
´This code was originally written by Dev Ashish.
´It is not to be altered or distributed,
´except as part of an application.
´You are free to use it in any application,
´provided the copyright notice is left unchanged.
´
´Code Courtesy of
´Dev Ashish
´
Function fReturnFilePath(strFilename As String, _
strDrive As String) As String

Dim varItm As Variant
Dim strFiles As String
Dim strTmp As String

If InStr(strFilename, ".") = 0 Then
MsgBox "Sorry!! Need the complete name", vbCritical
Exit Function
End If

strFiles = ""
With Application.FileSearch
.NewSearch
.LookIn = strDrive
.SearchSubFolders = True
.FileName = strFilename
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If .Execute > 0 Then
For Each varItm In .FoundFiles
strTmp = fGetFileName(varItm)
If strFilename = strTmp Then
fReturnFilePath = varItm
Exit Function
End If
Next varItm
End If
End With
End Function


Private Function fGetFileName(strFullPath) As String
Dim intPos As Integer, intLen As Integer
intLen = Len(strFullPath)
If intLen Then
For intPos = intLen To 1 Step -1
´Find the last \
If Mid$(strFullPath, intPos, 1) = "\" Then
fGetFileName = Mid$(strFullPath, intPos + 1)
Exit Function
End If
Next intPos
End If
End Function
´******************** Code End **************************
Now from your code, call the function as

strFilePath=fReturnFilePath("network.wri","C:")

(Note: Depending on whether you have Microsoft Office´s FindFast turned on or not, the search might take a few seconds.)

Alternate: For Access 95 (or for Access 97 also), you can use the following function as a substitute to FileSearch object.

´***************** Code Start ***************
´This code was originally written by Dev Ashish.
´It is not to be altered or distributed,
´except as part of an application.
´You are free to use it in any application,
´provided the copyright notice is left unchanged.
´
´Code Courtesy of
´Dev Ashish
´
Private Declare Function apiSearchTreeForFile Lib "ImageHlp.dll" Alias _
"SearchTreeForFile" (ByVal lpRoot As String, ByVal lpInPath _
As String, ByVal lpOutPath As String) As Long

Function fSearchFile(ByVal strFilename As String, _
ByVal strSearchPath As String) As String
´Returns the first match found
Dim lpBuffer As String
Dim lngResult As Long
fSearchFile = ""
lpBuffer = String$(1024, 0)
lngResult = apiSearchTreeForFile(strSearchPath, strFilename, lpBuffer)
If lngResult <> 0 Then
If InStr(lpBuffer, vbNullChar) > 0 Then
fSearchFile = Left$(lpBuffer, InStr(lpBuffer, vbNullChar) - 1)
End If
End If
End Function
´******************** Code End ****************

Antwort 4 von Marie

und verzeichnis auswählen auch bei dev:
API: BrowseFolder Dialog
Author(s)
Terry Kreft


(Q) Ok, I know how to use the GetOpenFileName api, but I want to just retrieve the Directory name. How do I call the Browse for Folder window from code?

(A) Paste the following code in a new module. Save the module with any name. Use the following example as an illustration on how to call the function.

Dim strFolderName as string

strFolderName = BrowseFolder("What Folder you want to select?")

Stephen Lebans has added functionality to open the browse folder at a specific place.

´************** Code Start **************
´This code was originally written by Terry Kreft.
´It is not to be altered or distributed,
´except as part of an application.
´You are free to use it in any application,
´provided the copyright notice is left unchanged.
´
´Code courtesy of
´Terry Kreft

Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
"SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
As Long

Private Const BIF_RETURNONLYFSDIRS = &H1
Public Function BrowseFolder(szDialogTitle As String) As String
Dim X As Long, bi As BROWSEINFO, dwIList As Long
Dim szPath As String, wPos As Integer

With bi
.hOwner = hWndAccessApp
.lpszTitle = szDialogTitle
.ulFlags = BIF_RETURNONLYFSDIRS
End With

dwIList = SHBrowseForFolder(bi)
szPath = Space$(512)
X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)

If X Then
wPos = InStr(szPath, Chr(0))
BrowseFolder = Left$(szPath, wPos - 1)
Else
BrowseFolder = vbNullString
End If
End Function
´*********** Code End *****************

Antwort 5 von gilli87

Hallo Marie,
ich habe Access2000. Kann ich die Module auch da verwenden?
Welchen Namen muß ich den Modulen geben zum abspeichern und wie rufe ich den Code auf, damit der Dateiname oder das Verzeichnis in einem Feld erscheint?
Gruß Gilli

Antwort 6 von gilli87

Hallo, irgendwie geht das alles nicht. Hat keiner eine Idee oder eine Beispiel Datei zum Ansehen??
Ich möchte lediglich wie im Windows Explorer eine Datei auswählen und die dann in ein auszuwählendes Verzeichnis reinschieben.
Gruß Gilli

Antwort 7 von Herbert

Hallo Gilli,
ruf doch einfach den Explorer auf.
In meinem Fall hab ich das so gelöst:

Ereignis beim Klicken:

Dim stAppName As String
Dim ZielVerzeichnis As String
stAppName = "EXPLORER.EXE "
oder
stAppName = "EXPLORER.EXE " & ZielVerzeichnis
Call Shell(stAppName, 1)

End Sub

Du kannst den Explorer damit auch zweimal aufrufen und nebeneinander stellen.
Ich hab auf meinem Formular einpaar Klickfelder die das Zielverzeichnis vorgeben.
Vielleicht hilft Dir der Vorschlag.
Gruß Herbert

Antwort 8 von gilli87

Hallo Herbert,
daran hatte ich auch schon gedacht.
Mein Gedanke war aber, daß ich den ausgewählten Dateinamen im Feld noch weiter verwenden könnte.
Deshalb meine Idee, mit einem Feld eine Dateiauswahl zu treffen und mit dem nächsten Feld den Speicherort auszuwählen.
Vielen Dank für Deine Idee.
Gruß Gilli

Antwort 9 von Herbert

Hallo Gilli,
ich hab in meinem Sammelsorium Verzeichnis- und oder Dateidialog gefunden.
Wenn Dein Problem noch nicht abgehakt ist schick mir ne Mail an: heine10623@web.de damit ich Dir die Beispiel DB für A97 und A2000/2003 senden kann.
Gruß Herbert

Antwort 10 von gilli87

Hallo Herbert,
vielen Dank für das Beispiel.
Gruß Gilli

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: