variabele input in bestandsnaam in VBA

Status
Niet open voor verdere reacties.

MagicianB

Gebruiker
Lid geworden
24 aug 2012
Berichten
13
Hallo,

Ik ben bezig met een fotoquiz en ik wil telkens een nieuwe foto uit een map invoegen nadat er op de voorgaande foto is geklikt.
Ik wil hiervoor een stukje vba code schrijven dat dus zelf telkens door te klikken de volgende bestandsnaam pakt.
Mijn foto's heb ik dus 001.jpg tot en met 150.jpg genoemd.
Hieronder een voorbeeldje met het oproepen van een normale bestandsnaam, dit heb ik al werkend.


Ik maak dus een shape aan die ik vul met een foto,
Bij het klikken roept hij de Foto1_Del sub op, die ervoor zorgt dat deze aangemaakte shape weer verdwijnt.

Kan iemand mij helpen?
Alvast bedankt!

Code:
Sub Foto1()

Set myDocument = Worksheets(1)
With myDocument.Shapes.AddShape(msoShapeRectangle, 150, 0, 600, 600)
    .Name = "foto1"
    .Fill.UserPicture "C:\Users\Pictures\Totaal\001.jpg"
    .ZOrder msoSendToBack
    .OnAction = "Foto_toevoegen.Foto1_Del"
End With

End Sub
 
Laatst bewerkt door een moderator:
Visual Basic is iets anders dan Visual Basic for Applications, VBA is programmeren binnen Office applicaties. Verplaatst naar juiste sectie.
 
En wat is nu precies de procedure waar je een probleem mee hebt? Ik zie dat je de naam van de foto hard meegeeft, wat natuurlijk al verkeerd is, want dan kun je maar één foto gebruiken. De naam van de foto moet dus dynamisch ergens vandaan komen, en middels een variabele ken i.p.v. een vaste naam. Iets vergelijkbaars heb je bij de OnAction gebeurtenis, die een vaste procedure aanroept.
 
Laatst bewerkt:
deze in ThisWorkBook
Code:
Private Sub Workbook_Open()
With Sheets(1).Range("A1")
    .NumberFormat = "000"
    .Value = 1
End With
End Sub

En deze in een standaardmodule
Code:
Sub Foto1()
    On Error Resume Next
    Sheets(1).Shapes(1).Delete
    setsShape = Sheets(1).Shapes.AddPicture("C:\Users\Pictures\Totaal\" & Format(Range("A1").Value, "000") & ".jpg", _
                msoFalse, msoCTrue, Cells(1, 4).Left, Cells(1, 4).Top, 600, 600)
    Sheets(1).Range("A1") = Sheets(1).Range("A1") + 1
End Sub
Zet nu een knop op je werkblad en verbindt er de macro Foto1 aan.
Sla je werkbook op en sluit af.
Bij het heropenen begin je automatisch op 001 en bij het klikken op de knop wordt telkens een nieuwe foto geopend.
Wil je het enkel door op de foto zelf te klikken gewijzigd hebben zal je gebruik moeten maken van een ActiveX-ImageControl en het daaraan verbonden Click-Event.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan