Avatar billede kismus Nybegynder
23. oktober 2003 - 14:21 Der er 7 kommentarer og
1 løsning

Kopiere filer til en mappe der vælges i en mappevælger.

Jeg har tidligere fundet noget kode, som kan vise en filvælger, der giver mig mulighed for at klikke frem til en mappe.

Jeg ønsker efterfølgende at benytte den valgte mappe til at kopiere nogle filer over i mappen med koden:

ChangeFileOpenDirectory "\\C\Dat\John\mappe\"
    FileCopy "Min-fil.doc", "\\xx\Min-fil-ny.doc"

hvor xx er den valgte mappe. Jeg tror at det er let - men her knækker filmen. Hvad gør jeg?
Den koder der viser mappevælgeren er:

-------------modul1 ------------------------
Private Type SHITEMID
    ch As Long
    abID As Byte
End Type

Private Type ITEMIDLIST
    mkid As SHITEMID
End Type

Private Type BROWSEINFO
    hOwner As Long
    pidlroot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iMage 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 ChooseFolder(sTitle As String)
On Error GoTo ChooseFolder_ERR
   
    Dim BI As BROWSEINFO
    Dim IDL As ITEMIDLIST
    Dim pIDL As Long
    Dim LResult As Long
    Dim ipos As Integer
    Dim sPath As String
   
    BI.hOwner = 0
    BI.pidlroot = 0&
    BI.lpszTitle = sTitle
    BI.ulFlags = BIF_RETURNONLYFSDIRS
   
    pIDL& = SHBrowseForFolder(BI)
   
    sPath = Space(1024)
   
    LResult = SHGetPathFromIDList(ByVal pIDL, ByVal sPath)
   
    If LResult = 1 Then
        ipos = InStr(sPath, Chr(0))
        ChooseFolder = Left(sPath, ipos - 1)
    Else
        ChooseFolder = ""
    End If
   
ChooseFolder_ERR:
    Exit Function

End Function
------------modul1 slut--------
Avatar billede jrl0469 Nybegynder
23. oktober 2003 - 14:37 #1
Hva' med at bruge >>file system object<< f.eks.

Private fs As FileSystemObject

Private Sub Class_Initialize()
On Error GoTo ErrH
 
  Set fs = Nothing
  Set fs = CreateObject("scripting.FileSystemObject")
  Exit Sub
 
ErrH:
MsgBox "Oprettelse af filsystemet mislykkedes, kontakt nogen eller noget!"
End Sub

Public Function OpretFolder(psFolder As String) As Boolean
On Error GoTo ErrH
 
  fs.CreateFolder psFolder
  Exit Function
 
ErrH:
msgbox "Fejl# fsoClass.OpretFolder - Folder; " & psFolder

  fs.CopyFolder psFolder, psFolder & " " & c_Main.DatoTid, False
  fs.DeleteFolder psFolder
  fs.CreateFolder psFolder

  Resume Next
 
End Function
Avatar billede kismus Nybegynder
23. oktober 2003 - 14:53 #2
Det var hurtigt, men det kan jeg slet ikke få til at køre.
Jeg skulle måske oplyse, at jeg er amatør, og at programkoden skal bruges i VBA til Word.
Avatar billede jrl0469 Nybegynder
23. oktober 2003 - 14:58 #3
Okay... Der skal sættes en reference til; Microsoft Scripting Runtime. Jeg er ikke lige bekendt med mulighederne for det i VBA!
Avatar billede ossipoff Nybegynder
23. oktober 2003 - 15:00 #4
Dette er en mulighed:

fso = CreateObject("Scripting.FileSystemObject")
f = fso.getFile("\\xx\minfil.doc")
f.move("\\C\Dat\John\Mappe\")

Det var da en lidt tricky måde du åbner en filvælger på, kan du ikke bare bruge CommonDialog componenten?
Avatar billede kismus Nybegynder
23. oktober 2003 - 15:13 #5
til ossipoff
Jeg VED ikke om man kan bruge CommonDialog, men jeg har tidligere - fra kedde65 den 16-03-2002 - læst, at CommonDialog kun kan bruges til at åbne og gemme dokumenter og 'diverse andre ting'. Jeg har ikke prøvet, idet jeg troede på kedde65. Og uagtet det måske er lidt tricky, så viser koden den nydeligste filvælgerboks. Jeg kan bare ikke finde ud af, at bruge resultatet = den mappe, som der klikkes frem til, i den efterfølgende kode.
Avatar billede ossipoff Nybegynder
23. oktober 2003 - 15:16 #6
til kismus
hvordan ser resultatet ud?
Avatar billede kismus Nybegynder
23. oktober 2003 - 15:31 #7
til ossipoff
Jeg kaldte det fejlagtigt for en filvælger. Det er en MAPPEvælger idet der ikke vises filer kun - helt som jeg gerne vil have det - mapper.
Jeg kan ikke indsætte et billed her - men boksen ser ud fuldstændigt som venstre side af stifinder med ikoner streger og det hele, men altså kun venstre side. Derudover er der en 'OK' og en 'Annuller' knap.
Avatar billede bfjmnemonic Nybegynder
29. oktober 2003 - 18:51 #8
Det du leder efter kan findes lige her:
http://cwashington.netreach.net/depo/view.asp?Index=144&ScriptType=vbscript

Virker .. Copy -> Paste .. Nemmere kan det ikke være :)
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
Kurser inden for grundlæggende programmering

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