Avatar billede piphans Nybegynder
12. august 2005 - 10:58 Der er 16 kommentarer og
1 løsning

Hvorfor åbner den ikke filen?

Hej

JEg har lavet denne lille stump kode:

  With Dialogs(wdDialogFileFind)
        .SearchPath = "p:\test"
        .title = title
        .Display
  End With

Hvor dialogboksen Abn godt nok åbnes med de rigtige søgekriterier, men når jeg så markerer en fil og klikker ÅBN, så sker der ikke noget (den åbner simpelthen ikke filen.

Nogen forslag til hvordan jeg får den til at åbne den fil jeg måtte vælge?
Avatar billede rvm Nybegynder
12. august 2005 - 11:19 #1
Hvad er det du gerne vil? Finde alle filer på P der hedder test?
Avatar billede piphans Nybegynder
12. august 2005 - 11:25 #2
Nej, jeg vil finde alle filer på placeringen p:\test hvor der står title i feltet titel. Det finder den også helt fint, men når jeg så markerer en af filerne og klikker åbn (eller sobbeltklikker på en) så åbner den ikke filen??
Avatar billede piphans Nybegynder
12. august 2005 - 11:34 #3
Hvis jeg bruger WdDialogFileOpen er der ingen problemer med at åbne, men så kan jeg ikke søge på oplysninger i titelfeltet.
Avatar billede piphans Nybegynder
12. august 2005 - 11:54 #4
øv, øv og tre gang eøv. Det er en kendt fejl at det ikke kan lade sig gøre, og der er vist ingen rigtig fornuftig løsning på problemet

http://support.microsoft.com/default.aspx?scid=kb;en-us;212678
Avatar billede rvm Nybegynder
12. august 2005 - 12:00 #5
Værsgo - her er løsningen :-)

Function FindFiles(Optional ByVal strPath As String, Optional ByVal strExtension As String) As String


Dim dlg As Dialog
Dim dlgFind As Dialog
Dim strFile As String
Dim strDefaultOpenPath As String


'Get and hang onto the user's default document path
strDefaultOpenPath = _
Application.Options.DefaultFilePath(wdDocumentsPath)


'Evaluate the passed variables to see
'if we need to give them a value
If strPath = "" Then
    'No argument was passed so...
    'Point to default document path
    strPath = strDefaultOpenPath
End If


If strExtension = "" Then
    'No argument was passed so...
    'Point to default Word Document File Type
    strExtension = "*.doc"
End If


'Set the SearchPath
Application.Options.DefaultFilePath(wdDocumentsPath) = strPath


'display common dialog
Set dlg = Dialogs(wdDialogFileOpen)
Set dlgFind = Dialogs(wdDialogFileFind)
With dlg
    .Name = strExtension
    'Did they press Cancel? If so, exit the routine
    Select Case .Display
    Case -1
        'Update the FileFind Dialog
        dlgFind.Update
        strPath = dlgFind.SearchPath
        strFile = dlg.Name
    Case Else
        'Restore the defautl Doc Path
        Application.Options.DefaultFilePath(wdDocumentsPath) = strDefaultOpenPath
        Exit Function
    End Select
End With


'Update our variable with info from the Dialogs
strFile = dlg.Name


'Ensure that the returned path is appropriately padded
'with a separator like \ or :, depending on your system type
If Right(strPath, 1) <> Application.PathSeparator Then
    strPath = strPath & Application.PathSeparator
End If


'concatentate an explicit path-file string
strFile = strPath & strFile


'Restore User settings
Application.Options.DefaultFilePath(wdDocumentsPath) = strDefaultOpenPath


'See the result
FindFiles = strFile


End Function

Sub TestFindFilesWOvalues()


Dim strResult As String

strResult = FindFiles("C:\", "test")
MsgBox strResult

End Sub
Avatar billede rvm Nybegynder
12. august 2005 - 12:04 #6
men det er uden titelfeltet opdager jeg lige...
Avatar billede piphans Nybegynder
12. august 2005 - 12:19 #7
ja, nu nærmer vi os, men den søger på filnavn og det skal den ikke. Den skal søge på argumentet (dokumentegenskaben) Title = "title"
Avatar billede rvm Nybegynder
12. august 2005 - 12:24 #8
arbejder på det ...
Avatar billede rvm Nybegynder
12. august 2005 - 12:25 #9
Problemet er at Title faktisk ikke er i wdDialogFileFind men faktisk virker...
Avatar billede piphans Nybegynder
12. august 2005 - 12:51 #10
Den sidste forstod jeg ikke?
Avatar billede piphans Nybegynder
12. august 2005 - 12:57 #11
JEg har brug for at kunne identificere et dokument (flere dokumenter naturligvis) ved hjælp af to oplysninger der indtastes i en dialogboks. Den ene indtastning bliver til filnavnet når dokumentet gemmes og vil altid være entydig, hvorimod den anden vil kunne figurere i flere dokumenter.

Man skal så kunne finde frem til alle filer der indeholder den anden oplysning.
Avatar billede piphans Nybegynder
12. august 2005 - 12:58 #12
Nå ja - glemte lige. De to indtastede værdier bliver i dette tilfælde gemt i dokumentegenskaben Title
Avatar billede rvm Nybegynder
12. august 2005 - 13:29 #13
Her er et groft udkast til en makro, der finder de filer der har titlen "Test". resultatet kunne sættes ind i en listboks, som brugeren kan vælge filen fra, hvorefter den åbnes:

Sub GetFileList()

  Dim oSearch As FileSearch

  ' Change strDirName to the path of the directory for which you want a
  ' listing.
  Dim strDirName As String
  Dim strPrompt As String
 
  strDirName = "C:\"
  strPrompt = strDirName & Chr(13) & Chr(13)
 
  Dim i As Long

  ' Get a reference to the FileSearch object.
  Set oSearch = Application.FileSearch

  With oSearch

      ' Reset the search.
      .NewSearch

      ' Specify the directory that contains the files you want to count.
      ' The variable strDirName is the parameter of the CountAllFiles()
      ' function.
      .LookIn = strDirName

      ' Exclude subfolders.
      .SearchSubFolders = False

      ' Specify what types of files you want to find.
      ' For example, to search for text files change this line to:
      '  .FileName "*.txt"
      .FileName = "*.*"

      ' The Execute command begins the search.
      .Execute

      ' Check to see if any files were found.
      If .FoundFiles.Count > 0 Then

        ' Loop through the files that were found and store the file names
        ' in the variable strPrompt.
        For i = 1 To .FoundFiles.Count
       
                On Error Resume Next
                Dim FileName As String
                Dim DSO As DSOleFile.PropertyReader
                Set DSO = New DSOleFile.PropertyReader
                FileName = .FoundFiles(i)
               
                If Err Then
               
                Err.Clear
                Else
                    With DSO.GetDocumentProperties(sfilename:=FileName)
                        titel = .Title
                    End With
                   
                    If titel = "Test" Then
                        strPrompt = strPrompt & .FoundFiles(i) & Chr(13)
                    End If
                End If
        Next i
      Else
        strPrompt = strPrompt & "No files found."
      End If

      ' Display the file list in a message box.
      MsgBox strPrompt

  End With

End Sub
Avatar billede rvm Nybegynder
12. august 2005 - 13:30 #14
Følg anvisningerne på denne sidde for at installere og sætte referancen til dso filen:

http://word.mvps.org/FAQs/MacrosVBA/DSOFile.htm
Avatar billede piphans Nybegynder
12. august 2005 - 13:35 #15
Tror det bliver lige et nummer for avanceret for mig nu. Vil hellere lære de få brugere der har behov for det at bruge søg funktionen tror jeg.

Men mange tak for hjælpen.

/Piphans
Avatar billede rvm Nybegynder
12. august 2005 - 13:52 #16
Nu har jeg en fil klar, hvis du bare skriver din email :-)
Avatar billede piphans Nybegynder
12. august 2005 - 14:03 #17
ihh tak - du må gerne sende til netdebat@ofir.dk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester