• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Externe afbeeldingen "dynamisch" in Excel gebruiken

  • Onderwerp starter Onderwerp starter Ceck
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Ceck

Nieuwe gebruiker
Lid geworden
26 aug 2012
Berichten
3
Beste Forumleden,

Vandaag voor het eerst op dit forum en mijn eerste forumvraag:

Ik heb een soort database in Excel aangemaakt (ca. 2500 artikelen). In één werkblad staan alle artikelen per regel en in een ander werkblad toest ik het gewenste artikelnummer in en krijg keurig het overzicht van de diverse artikelgerelateerde gegevens.

Nu zou ik graag naast alle "harde" gegevens een afbeelding van dit artikel willen laten zien (en printen). De betreffende afbeeldingen staan in een apparte map als afzonderlijke JPG afbeeldingen opgeslagen.

Ik heb nauwelijks ervaring van VBA of macros

Hoop dat iemand mij op weg kan helpen

alvast hartelijk dank

CeckBekijk bijlage Voorbeeld met artikelen.xlsx
 
Laatst bewerkt:
Ik heb er een "Image" (van de ActiveX-besturingselementen) in gezet om de foto in te laden.
De code staat in bladmodule 'Artikel kaart'.
Mappenstructuur daar even aanpassen.
 

Bijlagen

@ Harry

Waarom al die variabelen ?
Code:
Const Locatie = "G:\Mijn documenten\"
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = "$B$1" Then
    On Error GoTo einde
    With Image1
        .Picture = LoadPicture(Locatie & Range("B2") & ".jpg")
        .PictureSizeMode = 1
    End With
    Exit Sub
einde:
    MsgBox "Geen foto gevonden met die naam   " & vbLf & "Probeer het opnieuw", vbCritical, "Jammer"
 End If
End Sub
 
Ach, je hebt soms van die dagen Rudi.
 
of

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address = "$B$1" and dir("G:\Mijn documenten\" & Range("B2") & ".jpg")<>"" Then Image1.Picture = LoadPicture("G:\Mijn documenten\" & Range("B2") & ".jpg")
End Sub

Het niet verschijnen van een afbeelding lijkt mij voldoende informatie voor de gebruiker.
Een mededeling dat er geen afbeeldingsbestand is, mosterd na de maaltijd....
 
Laatst bewerkt:
of

Het niet verschijnen van een afbeelding lijkt mij voldoende informatie voor de gebruiker.
Een mededeling dat er geen afbeeldingsbestand is, mosterd na de maaltijd....

Komt je aanpassing voort omdat het niet past in één geschreven regelcode. :eek:
 
Nee, maar heb je meer code nodig dan ?
 
Ik plaag je maar wat. ;)

Het is niet gek om te laten melden dat een afbeelding niet beschikbaar is.
Je twijfelt of de code wel werkt, of denkt dat de code lang werk nodig heeft indien niet gevonden.
 
Mijn vba is niet zoals die van jullie maar ik denk dat er nog een regel bij moet.
Bestaat het plaatje niet dan moet de oude wel verdwijnen.
Anders blijft deze staan bij de verkeerde artikel
 
Scherp Willem.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim locatie As String
 If Target.Address = "$B$1" Then
      locatie = "D:\Mijn Afbeeldingen\Map1\"
     On Error GoTo einde
  Image1.Picture = LoadPicture(locatie & Range("B2") & ".jpg")
  Image1.PictureSizeMode = 1
  Exit Sub
einde:
  'MsgBox "Geen foto gevonden met die naam   " & vbLf & "Probeer het opnieuw", vbCritical, "Jammer"
Image1.Picture = LoadPicture("")
 End If
End Sub
 
Dan wordt het alleen maar simpeler:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address = "$B$1" Then Image1.Picture = LoadPicture("G:\Mijn documenten\" & and iif(dir("G:\Mijn documenten\" & Range("B2") & ".jpg")<>"" ,Range("B2"),"jammer") & ".jpg")
End Sub

Voor het plaatje 'jammer' zie de bijlage

attachment.php
 

Bijlagen

  • jammer.jpg
    jammer.jpg
    12,5 KB · Weergaven: 817
Laatst bewerkt:
Ik zou in Thisworkbook onderstaande code ook willen aanraden, anders duurt het laden bij het openen van het bestand wel erg lang.
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Sheets("artikel kaart").Image1.Picture = LoadPicture("")
  ThisWorkbook.Close True
End Sub
 
@mcs51mc
Vinnik nie, maar dit kan natuurlijk ook.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$B$1" Then 
   c01="G:\OF\" & iif(dir("G:\OF\" & Range("B2") & ".jpg")="" ,"jammer", Range("B2")) & ".jpg"
   Image1.Picture = LoadPicture(c01)
  end if
End Sub
 
Laatst bewerkt:
Beste mensen,

Hartelijk dank voor de dialoog en de geboden oplossingen.

Ik ga het proberen

mvrgr Ceck
 
@ snb
Zonder de 'and' werkt ie perfect.;)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Const myDir = "G:\Mijn documenten\Toestellen_Veerle\"
    If Target.Address = "$B$1" Then
        With Image1
            .Picture = LoadPicture(myDir & IIf(Dir(myDir & Range("B2") & ".jpg") = "", "Geen_Foto.jpg", Range("B2") & ".jpg"))
            .PictureSizeMode = 1
        End With
    End If
End Sub
 

Bijlagen

  • Geen_Foto.JPG
    Geen_Foto.JPG
    7 KB · Weergaven: 76
Beste Ceck,
Het werkt allemaal, nogmaals hartelijk dank

mvrgr Ceck
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan