Avatar billede j-kid Praktikant
11. september 2006 - 16:16 Der er 27 kommentarer og
1 løsning

Definere celler som værende et billede i excel. Kan man det?

Hej

Bær over med mig. Jeg er ikke excel-nørd...:-/
Jeg har lavet et regneark med en matrix over nogle produkter og tilhørende billeder. Eksempelvis er cellen A1 produktnavnet og B1 skal så være det tilhørende billede af produktet.
I en anden tabel hvor produktnavnene også figurerer vil jeg gerne lave et opslag i matrix'en hvor produktnavnet anvendes som opslagsord og billedet af produktet ønskes returneret i opslagscellen.
Men men men. Det eneste jeg kan få excel til er at returnere en skreven tekst eller værdi. Grunden er selvfølgelig at den celle i matrixen, hvori billedet befinder sig, ikke er defineret som et billede. Mit spørgsmål er så: Kan man det??

Håber I forstår spørgsmålet. Det er lidt svært at forklare med ord... På forhånd tak for hjælpen.

Mvh. Jakob
11. september 2006 - 16:37 #1
Du kan ikke det du ønsker med almindelige formlen, så svaret på dit spørgsmål er nok Nej.

Man kan dog kode noget VBA, således du kan lokalisere teksten og dermed billedet. Billedet hænger fast på den celle, hvor det øverste venstre hjørne af billedet er placeret. Men hvis ikke du er excel nørd, så laver du jo nok ikke selv denne løsning.
Avatar billede mrjh Novice
11. september 2006 - 19:23 #2
Ved godt at det ikke helt er det du ønsker, men måske som et alternativ
I kolonne A dine varenavne. I kolonne B navne på dine billedfiler f.eks Skrue001.jpg
I C3 indtastes varen som du ønsker billedet for og i D3 er der en LOPSLAG(C3;A:B;3;0), som henter filnavnet for billedet.

Indsæt herefter følgende makro i arkets kodemodul. Tilret selv stien hvor dine billeder ligger.



Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C2")) Is Nothing Then
    Exit Sub
End If

ActiveSheet.Pictures.Delete
fil = Range("D2")
sti = "C:\Documents and Settings\Dokumenter\Billeder\"
On Error GoTo ud:
Worksheets("Ark13").Shapes.AddPicture sti & fil, True, True, 150, 150, 100, 100
ud:
End Sub
Avatar billede mrjh Novice
11. september 2006 - 19:25 #3
Tallene i addpicture metoden styrer henholdsvis placering fra venstre, placering fra top, bredde og højde
Avatar billede mrjh Novice
11. september 2006 - 19:34 #4
Rettelse: Varen du vil slå op i C2 og navnet på billedfilen returneres i D2
Avatar billede j-kid Praktikant
11. september 2006 - 19:52 #5
Tak for svarene. I er hurtig på tasterne! Tak for det!

Og nej. Jeg er bestemt ikke vant til at manøvrere rundt i VBA. Kan være det kommer med tiden. Jeres svar er lidt det jeg frygtede. Altså at jeg skal ind og rode med VBA.
Jeg vil lige prøve at lege lidt med mrjh's tip. Er lidt usikker på hvordan man indtaster i VBA og kommer ind i "Arkets kodemodul" men vil da lige forsøge mig.

Tak for hjælpen!
11. september 2006 - 19:55 #6
God fornøjelse
Avatar billede mrjh Novice
11. september 2006 - 20:17 #7
Når du står i dit ark, tryk Alt + F11. Her skulle du gerne kunne se dine ark ude til venstre i project browseren. dobbeltklik på et ark og kodevinduet fremkommer til højre. Indsæt koden heri og luk igen. Nu skulle det virke når du indtaster en vare i C2. Husk at rette din sti inde i koden til din egen sti hvor dine billeder ligger.
God arbejdslyst.
Avatar billede j-kid Praktikant
12. september 2006 - 09:41 #8
Hmm. Det kan jeg godt nok ikke få til at fungere... Har lavet det hele som beskrevet og indsat koden med den rettede sti til placeringen af billederne. Der sker bare intet. Mht. opslaget er det så ikke en fejl at der bedes om at værdien fra kolonne 3 returneres? Der er jo kun 2 kolonner med oplysninger, A & B. Hvis jeg skriver 3 får jeg en reference-fejl.
En anden ting. Er systemet ikke rimelig statisk? Ved godt at det ikke er helt det jeg selv ville lave i starten, men som jeg læser det skal der laves en kode for hver celle jeg ønsker et billede for. Er det korrekt?
Avatar billede mrjh Novice
12. september 2006 - 09:53 #9
Jo du har ret. Selvfølglig 2 i opslagsformlen.
mht. koden. Jo der er statisk, men er det ikke det du ønsker?
Din matrix er varenumre i kolonne A og navne på billedfiler i kolonne B og billederne hentes så fra den angivne sti + den fil son returneres i din opslagsformel
Eller har jeg misforstået ?
Avatar billede j-kid Praktikant
12. september 2006 - 10:34 #10
Prøver lige igen...:-)

Jeg har en liste med ca. 50 varenumre. Disse varer indeholder forskellige detaljer. Den ene vare er f.eks. rød og den næste er blå. Dette er defineret i listen i eksempelvis kolonne B. Dvs. varenummer i kolonne A og farve i kolonne B.

Kolonne A            Kolonne B
Varenummer          Farve
A                    Blå

I en anden liste, eller det jeg kalder for en matrix, har jeg så farvenavnene stående i kolonne A og ønsker så et billede af farven i kolonne B.

Kolonne A            Kolonne B
Farve                Billeder
Blå                  "Billede af blå"

Det jeg så ønsker er at lave et opslag så billedet af farven returneres til kolonne C i listen med alle varerne.

Kolonne A            Kolonne B    Kolonne C
Varenummer          Farve        Billede af farver
A                    Blå          "Billede af blå"

Håber det hjalp... Jeg kan dog stadig ikke få det første system med VBA koderne til at virke.
Hvis det bliver alt for bøvlet må jeg bare skrinlægge projektet.
Avatar billede j-kid Praktikant
12. september 2006 - 10:35 #11
Hov. Kolonner blev rykket lidt da jeg sendte indlægget... Håber det kan tydes!
Avatar billede mrjh Novice
12. september 2006 - 13:00 #12
Jeg tror lige den skal forklares lidt nærmere
Er farve et billede du sætter ind eller bare en af excels farver i farvepaletten ?
Hvorfor have 2 lister, en med varnr. og farve, og dernæst en med farve og billede. Du kan vil sagtens koge det ned yil en liste?
I dit opslag vil du da have alle billederne lagt ind igen ud for det som opslaget returnerer ? Du har jo allerede en liste med alle varerne og billederne ?
12. september 2006 - 14:09 #13
Jeg hopper fra her. Klik på mit brugernavn for web side og email, hvis jeg skal bidrage.
Avatar billede j-kid Praktikant
12. september 2006 - 16:16 #14
Først. "Farve" var bare et eksempel. Det er ikke farver der er tale om i det rigtige eksempel men forskellige variationer på varenumre. Hvis det var biler kunne det f.eks. være forskellige typer af alufælge disse kunne leveres med. Det er billeder af alufælgene (i mit (dårlige?) eksempel valgte jeg farver).
Prøver lige at rette eksemplet til med biler. Her er listen med bilerne:

Kolonne A            Kolonne B
Bil                  Alufælg
Bil 1                Type 1

Nu laver jeg så et opslag i en matrix med alufælgene og tilhørende billeder:

Kolonne A            Kolonne B
Alufælge            Billeder af alufælge
Type 1              "Billede af type 1"

I den oprindelige liste ønsker jeg nu at returnere billedet af alufælgene. På den måde skal jeg kun lægge billederne ind ét sted nemlig i matrixen.
Listen med bilerne vil jeg så gerne have til at se sådan ud:

Kolonne A            Kolonne B      Kolonne C
Bil                  Alufælge        Billede af alufælge
Bil 1                Type 1          "Billede af type 1"

Senere ønsker jeg så at lave en brevfletning i word, hvor der laves en "beskrivelse" af hver "bil" med tilhørende billeder. Men det er næste projekt. Håber det hjalp på forståelsen. Ved ikke rigtig hvordan jeg ellers skal forklare det...:-/
Avatar billede mrjh Novice
12. september 2006 - 22:51 #15
Har lavet noget du måske kan bruge, men det er ikke helt optimalt, og hvis du skal bruge yderligere må du have fat i nogle af VBA hajerne, da min VBA-viden trods alt er begrænset.
Det forudsættes at du har dine varenavne i kol.A og navne på billedfiler i kol.B under Ark10 (sum du skal tilrette)
I Ark13 indtastes dine varenavne i kol.A og billederne hentes via Ark10, filnavne


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Then
    Exit Sub
End If
bredde = 40
højde = 40
With ActiveSheet
    With .Rows
    .RowHeight = højde
    .VerticalAlignment = xlCenter
    .HorizontalAlignment = xlLeft
    End With
.Columns.AutoFit
.Pictures.Delete
End With
startposx = Range("A:D").Width + 100
startposy = højde + 5
sidste = Worksheets("Ark10").Range("A65536").End(xlUp).Row
varer = Worksheets("Ark10").Range("A2:B" & sidste)
vareropslag = Range("A2", Range("A65536").End(xlUp))
sti = "C:\Documents and Settings\Dokumenter\Billeder\"
For i = 1 To UBound(varer)
fil = WorksheetFunction.VLookup(vareropslag(i, 1), varer, 2, 0)
Worksheets("Ark13").Shapes.AddPicture sti & fil, _
True, True, startposx, startposy, bredde, højde - 10
On Error Resume Next
startposy = startposy + højde
Next i
ud:
End Sub
Avatar billede j-kid Praktikant
13. september 2006 - 09:55 #16
Ok. Tusind tak for hjælpen. Jeg ser om jeg kan få det til at virke. Ellers må jeg lave noget der stemmer bedre overens med mine evner.
Tak for jeres hjælp!
Avatar billede j-kid Praktikant
13. september 2006 - 09:59 #17
PS. Kan se at det er noget med at skal uddele point men har ikke fået det til at virke... Der står ikke "mrjh" nogen steder. Hvis altså det er vigtigt at få pointene uddelt??
Avatar billede mrjh Novice
13. september 2006 - 10:01 #18
Når jeg lægger et svar kan du finde mig :-)
Avatar billede mrjh Novice
13. september 2006 - 10:02 #19
Håber du får det til at virke. skriv tilbage hvis du gør, eller hvis koden volder dig problemer.
Avatar billede j-kid Praktikant
20. september 2006 - 11:50 #20
Nu har jeg forsøgt, men kan ikke få det til at virke. Jeg får en debug i denne linie:

fil = WorksheetFunction.VLookup(vareropslag(i, 1), varer, 2, 0)

Jeg har fulgt anvisninger og i celle A1 i ark 10 skrevet "B-hul" og i celle B1 "PICT0044.JPG". Billedet ligger i mappen "C:\Udveksling" hvilket jeg har rettet til i koden.

I ark 13 har jeg i celle A1 skrevet "B-hul" og får så en debug.

Koden jeg har indsat ser således ud:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Then
    Exit Sub
End If
bredde = 40
højde = 40
With ActiveSheet
    With .Rows
    .RowHeight = højde
    .VerticalAlignment = xlCenter
    .HorizontalAlignment = xlLeft
    End With
.Columns.AutoFit
.Pictures.Delete
End With
startposx = Range("A:D").Width + 100
startposy = højde + 5
sidste = Worksheets("Ark10").Range("A65536").End(xlUp).Row
varer = Worksheets("Ark10").Range("A2:B" & sidste)
vareropslag = Range("A2", Range("A65536").End(xlUp))
sti = "C:\Udveksling"
For i = 1 To UBound(varer)
fil = WorksheetFunction.VLookup(vareropslag(i, 1), varer, 2, 0)
Worksheets("Ark13").Shapes.AddPicture sti & fil, _
True, True, startposx, startposy, bredde, højde - 10
On Error Resume Next
startposy = startposy + højde
Next i
ud:
End Sub

Mvh. Jakob
Avatar billede mrjh Novice
20. september 2006 - 12:25 #21
Umiddelbart kan jeg ike se nogen fejl i koden, andet end at du lige skal rette
sti = "C:\Udveksling" til sti = "C:\Udveksling\" og så skal du lige have denne ind lige inden Next i
fil = ""
Prøv lige det, så grubler jeg lige lidt videre
Avatar billede mrjh Novice
20. september 2006 - 12:39 #22
Nu har jeg lige testet den hos mig selv med en anden sti selvfølgelig og her virker den upåklageligt. Prøv evt. koden her:


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Application.ScreenUpdating = False
bredde = 40
højde = 40
With ActiveSheet
    With .Rows
    .RowHeight = højde
    .VerticalAlignment = xlCenter
    .HorizontalAlignment = xlLeft
    End With
.Columns.AutoFit
.Pictures.Delete
End With
startposx = Range("A:D").Width + 100
startposy = højde + 5
sidste = Worksheets("Ark10").Range("A65536").End(xlUp).Row
varer = Worksheets("Ark10").Range("A2:B" & sidste)
vareropslag = Range("A2", Range("A65536").End(xlUp))
sti = "C:\Udveksling\"
For i = 1 To UBound(varer)
    fil = WorksheetFunction.VLookup(vareropslag(i, 1), varer, 2, 0)
    Worksheets("Ark13").Shapes.AddPicture sti & fil, _
    True, True, startposx, startposy, bredde, højde - 10
    On Error Resume Next
    startposy = startposy + højde
    fil = ""
Next i
End If
Application.ScreenUpdating = True
End Sub
Avatar billede j-kid Praktikant
20. september 2006 - 13:19 #23
Ok. Tak igen. Så har jeg fået det til at virke. Men ja. Nu er spørgsmålet så hvorvidt det lige er den løsning jeg havde tænkt på. Kan se at billedet lægger til i den celle der hedder G2 i ark 13. Når jeg så tilføjer en vare mere på listen i ark 10 går der ged i den. Igen en debug. Er det rigtigt at "systemet" kun kan håndtere én vare og ét billede? Jeg ville jo gerne kunne lave en hel liste med forskellige varer med tilhørende billeder.
Hvis det hele fungerer som det skal så synes jeg ikke du skal "spilde" mere af din tid på mig. Så må jeg vist vente indtil jeg en dag (måske...) selv bliver bedre til VBA.
Men igen tak for din hjælp!
Avatar billede mrjh Novice
20. september 2006 - 13:34 #24
Den burde ikke lave ged. Du har kopieret koden ind under modulet for Ark13 ?

Koden fungere på den måde at ligesåsnart du har indtastet en vare i Ark13, som du vil have hentet et billede på, slettes alle billeder i første omgang, og herefter løbes alle varene igennem i ark 10, filnavnet findes og billedet hentes og det gøres for alle varene i kolonne A i ark 13.
Avatar billede j-kid Praktikant
20. september 2006 - 14:03 #25
Ok. Det vil den ikke. Den siger "Type mismatch".

Får en fejl i følgende linie:

    fil = WorksheetFunction.VLookup(vareropslag(i, 1), varer, 2, 0)

Jeg har i ark 10 skrevet "B-hul" i A1 og "D-hul" i A2. I B1 og B2 er navnene på de respektive billedfiler.
I ark 13 (hvor koden er placeret!) er der i A1 skrevet "B-hul" og i A2 "D-hul". Hvis jeg nøjes med at skrive "B-hul" i A1 virker det fint men hvis jeg tilføjer "D-hul" i A2 får jeg fejlen...
Avatar billede mrjh Novice
20. september 2006 - 14:30 #26
Prøv lige at gentage dine intastninger, men fra A2 i begge ark
Avatar billede j-kid Praktikant
20. september 2006 - 14:42 #27
Stadig samme resultat. Den laver bøvl i samme linie...
Avatar billede mrjh Novice
20. september 2006 - 14:46 #28
prøv at sende filen til alsikva snabela tiscali.dk
rens den evt. for følsomme data. Så kigger jeg på den
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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