11. september 2006 - 16:16Der 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.
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.
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
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.
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.
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?
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 ?
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.
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 ?
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...:-/
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
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!
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??
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
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
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
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!
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.
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...
prøv at sende filen til alsikva snabela tiscali.dk rens den evt. for følsomme data. Så kigger jeg på den
Synes godt om
Ny brugerNybegynder
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.