foto toevoegen maar copy lukt niet

Status
Niet open voor verdere reacties.

mathijs1986

Gebruiker
Lid geworden
27 apr 2009
Berichten
14
Ik heb een Userform waarmee ik foto's kan toevoegen, de foto's worden geladen in een frame en het path word in kolomB tot KolomI weergegeven. nu wil ik graag dat op het moment er een foto gekozen is de foto van de oorspronkelijke locatie word gekopierd naar een map C\foto. deze map is dan speciaal voor de foto's en moet alle toegevoegde foto's gaan bevatten.

Graag hulp hierbij
 

Bijlagen

ik heb die filedialog picker

Code:
Private Sub CmdFotoToevoegen_Click()
Dim File As FileDialog, sItem As String

   Set File = Application.FileDialog(msoFileDialogFilePicker)
    
    With File
        .Title = "Selecteer een Bestand"
        .AllowMultiSelect = False
        .InitialFileName = Application.DefaultFilePath
        If .Show <> -1 Then GoTo Nextstap
sItem = .SelectedItems(1)
    End With

    'Image1.PictureSizeMode = fmPictureSizeModeStretch    'geregeld in de Properties
Nextstap:

    Set Me.Controls("frame" & n + 1).Picture = LoadPicture(sItem)
    n = n + 1

Daar zit de filename en oldpath in , maar hoe maak ik die bruikbaar voor in die kopieer code?

Code:
Sub CopyFile1()
  Dim FileScriptingObject As Object

  Set FileScriptingObject = CreateObject("Scripting.FileSystemObject")
  FileScriptingObject.CopyFile OldPath & FileName, NewPath & FileName
  Set FileScriptingObject = Nothing
End Sub

Kom er niet echt uit
 
Beste Mathijs,

Waarom niet gebruik maken van de ingebouwde functie van VBA:

Code:
Call VBA.FileCopy(OldPath & Filename, NewPath & Filename)

Mvg René
 
het newpath kan ik wel neerzetten, dat is een vast iets, maar filename en oldpath verschillen per foto, hoe kan ik die dan gebruiken of declareren
 
Iets simpeler:

Code:
Private Sub CmdFotoToevoegen_Click()
  c0 = Application.GetOpenFilename
  Me("frame1").Picture = LoadPicture(c0)
  FileCopy c0, "C:\"
End Sub
 
Beste Mathijs,

De Filename en Oldpath staat eigenlijk al voor je klaar in de textbox KolomB t/m I.
Als je weet dat de bestandsnaam altijd achteraan staat dus blabla.jpg met een padverwijzing ervoor gescheiden door "\" dan is het het makkelijkst door de waardes van bijv. KolomB te splitsen in allemaal losse woorden in 1 array. De laatste zal dan altijd de bestandsnaam zijn. Deze hoef je dan alleen maar uit te lezen.

Heb in het voorbeeld ook een errorhandle opgenomen voorals het nieuwe pad nog niet bestaat, maakt hij hem gelijk aan.

Code:
Private Sub CmdFotoCopy_Click()
Dim newpath As String
Dim bestandsnaam As Variant

newpath = "D:\testfoto's\"
bestandsnaam = VBA.Strings.Split(KolomB.Value, "\")
    On Error Resume Next
    Call VBA.FileCopy(KolomB.Value, newpath & bestandsnaam(UBound(bestandsnaam)))
        If Err Then
            VBA.FileSystem.MkDir (newpath)
            Call VBA.FileCopy(KolomB.Value, newpath & bestandsnaam(UBound(bestandsnaam)))
        End If
End Sub

Mvg. René
 
Heej Rene,

hardstikke bedankt, hier zocht ik naar, ik heb hem aangepast, alleen krijg ik nu niet de nieuwe locatie in de textbox, wat doe ik fout?

Code:
Private Sub CmdFotoToevoegen_Click()
Dim File As FileDialog, sItem As String
Dim newpath As String
Dim bestandsnaam As Variant
newpath = "C:\CopyPath\"
   
   Set File = Application.FileDialog(msoFileDialogFilePicker)
    
    With File
        .Title = "Selecteer een Bestand"
        .AllowMultiSelect = False
        .InitialFileName = Application.DefaultFilePath
        If .Show <> -1 Then GoTo Nextstap
sItem = .SelectedItems(1)
    End With

    'Image1.PictureSizeMode = fmPictureSizeModeStretch    'geregeld in de Properties
Nextstap:

    Set Me.Controls("frame" & n + 1).Picture = LoadPicture(sItem)
    n = n + 1
    If n = 1 Then bestandsnaam = VBA.Strings.Split(sItem, "\")
    On Error Resume Next
    Call VBA.FileCopy(sItem, newpath & bestandsnaam(UBound(bestandsnaam)))
        If Err Then
            VBA.FileSystem.MkDir (newpath)
            Call VBA.FileCopy(sItem, newpath & bestandsnaam(UBound(bestandsnaam)))
        End If
    If n = 1 Then KolomB.Value = newpath & bestandsnaam
 
Beste Mathijs,

bestandsnaam is een array, dus
Code:
newpath & bestandsnaam(UBound(bestandsnaam))
is de code voor C:\Copypath\fotonr.jpg
Als je bovenstaande code toewijst aan de KolomB.Value moet het lukken.

Mvg. René
 
hoe bedoel je mr magoo, ik mag toch wel op meerdere paarden wedden, omdat ik er echt niet uit kwam
 
Het probleem is niet dat je op verschillende fora je vraag plaatst, maar de beleefdheid gebied dan dat je een link plaatst naar je vraag op dat ander forum zodat kan nagekeken worden welke vorderingen ondertussen gemaakt zijn zodat er geen dubbel werk verricht wordt. De helpers op deze fora doen dit volledig kosteloos en in hun vrije tijd, dus de tijd die ze dan verspillen aan een misschien opgeloste vraag van jou kan dan besteed worden aan het helpen van iemand anders

Mvg

Rudi
 
oke mr magoo,

NU snap ik wat je bedoelt. excuses voor deze actie, ik zet op beide fora de topic op niet in behandeling en zal zorgen dat als ik in het vervolg zoiets doe ik dan een link naar het andere forum erbij zet.

bedankt voor het attent maken,

Mvg,

Mathijs
 
@ XtraRap Topic is van 2009. Het is niet gewenst om hier nog op te reageren. Zie de huisregels.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan