Jeg har et regneark med en kollone med en masse hyperlinks til forskellige billeder. I dag står der kun stien til billederne i cellerne fx. c:\billeder\vare1.jpg, c:\\billeder\vare2.jpg etc..
Det jeg ønkser er den viser billede af varen i cellen automatisk og ikke linket eller stien til billede.
Hvordan gør man dette og er det overhovedet muligt?
Du kan sagtens trækkke-og-slippe alle billederne over i arket og efterfølgende gøre billedet til et link med samme indhold, som du ser nu, men det er ret omstændigt.
Brug denne VBA kode :-) Du kan selv ændre værdierne og kolonnen den kigger i. Jeg har sat den til at hyperlinks er i kolonne A og at billedet bliver indsat i kolonne B. Option Explicit
Sub InsertPictures() Dim i As Long, v As String, LastRow As Long
On Error Resume Next
LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row ' Loop Through links For i = 2 To LastRow ' Column with hyperlinks v = Cells(i, "A").Value
' Exit procedure if no hyperlink exists If v = "" Then Exit Sub
' Insert picture With ActiveSheet.Pictures.Insert(v) ' Resize picture With .ShapeRange .LockAspectRatio = msoTrue .Width = 30 .Height = 15 End With ' Move picture .Left = ActiveSheet.Cells(i, 2).Left .Top = ActiveSheet.Cells(i, 2).Top .Placement = 1 .PrintObject = True End With Next i On Error GoTo 0 End Sub
Jeg tror lige jeg må konkretisere noget mere for umiddelbart syntes jeg ikke nogen af løsningerne vil virke. :-(
Jeg importerer Odata fra et crm system der indeholder en del data inkl. billeder. Når det vises i excel er det kun hyperlinket på billede der dukker frem i en af kolonnerne. Billede er lagret et sted på sharepoint som har connection til CRM systemet.
Så hvis jeg selv skal indsætte billederne manuelt ved siden af hyperlinket så bliver det meget omstændigt da det er forskellige billeder afhængig af segmentering og det er min. 200 billeder af gangen.
Så det jeg ønsker det er at kolonnen vi trækker ud af CRM systemet med hyperlinket viser os billedet i stedet for en sti.
Håber det giver lidt mere at arbejde ud fra og undskyld hvis jeg er dårlig til at forklare mig selv.
Er det ikke blot sådan en lille makro du har brug for?
Sub hentBillede() Cells(5, 5).Select 'bestemmer hvor billedet skal indsættes ActiveSheet.Pictures.Delete ' sletter det gamle billede ActiveSheet.Pictures.Insert("D:\test\" & Cells(1, 5) & ".jpg").Select ' indsætter billedet. Navn på billede taget fra celle E1 Selection.ShapeRange.LockAspectRatio = msoTrue 'bibeholder forholdet mellem højde og bredde på billedet Selection.ShapeRange.Height = 150 'justeres så billedet får den rigtige størrelse Cells(1, 1).Select End Sub
Synes godt om
Slettet bruger
01. marts 2017 - 03:33#6
det du vil er ikke noget man laver med et regneark...!
du bør istedet have det hele i en database, og du er nød til at have en kopi af alle billederne.
de kan godt indsættes i databasen med automatisering, men du bliver nød til at strikke det samme selv.
hjemmefusk med VBA en tilfældig har hjulpet dig med her, er ikke vejen frem. hvis du har 1000+ varer og deres billeder, bør du gøre som alle andre: smide dem i en database!
? (
hvis du bare viser nogle billeder, som ligger i nettet, jo det kan du, men du har ikke billederne lokalt, og hvad hvis nogen ændrer/sletter i dem ?
når du kopierer dem, ja så ender du med at de ikke længere har en URL.
DERFOR, fortsæt hvorfra du kom. CRM = DATABASE!
Synes godt om
Slettet bruger
01. marts 2017 - 03:36#7
jeg ville eksportere hele CRM databasen som kommasepareret tekst fil. (jeg har konverteret mange mange databaser til nyt format)
så ville jeg gemme alle billeder, og her vil en kopi af hjemmeside lavet med WGET, lægge hjemmesiden ned som den er. så dermed har jeg de originale URL + filnavne.
så vil jeg herefter nøjes med at konvertere, kun det jeg skal bruge (trække ud).
sådan ville jeg gøre, og det er lykkedes over 100 gange
Har du testet den makro jeg skrev? Du har en masse hyperlinks direkte til billeder som jeg forstår det ud fra det du skriver. Så det jeg ønsker det er at kolonnen vi trækker ud af CRM systemet med hyperlinket viser os billedet i stedet for en sti. Den makro indsætter billedet fra dit link, du skal blot ændre kolonnerne så det passer, da du ikke har skrevet i hvilken kolonne du har links. Hvis du vil have at hyperlinket skal slettes og billedet skal erstatte teksten, så er det ikke så svært at skrive ind - er det sådan det skal foregå?
Du behøver ikke hente alle billederne og lave en ny database, som en anden foreslår, hvis du blot vil vise billederne fra dine links - men det kommer an på din løsning og dit behov. Hvis dine billeder ligger på dit/jeres sharepoint og er linket op til jeres CRM system, så må man også gå ud fra at I har styr på hvem der styrer billederne og hvornår billederne skal skiftes. Og hvis det bliver skiftet i CRM systemet, skal det nye billede vel også vises i Excel arket? Det giver ingen mening at vise gamle billeder i hvert fald.
Prøv denne. Jeg har dog ikke gjort noget, så den sletter dine hyperlinks igen, den indsætter blot billedet. Det andet kan let fixes. Under Width og Height kan du ændre størrelsen på billederne, det skriver du nemlig heller ikke noget om :-)
Sub InsertPictures() Dim i As Long, v As String, LastRow As Long
On Error Resume Next
LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "F").End(xlUp).Row ' Loop Through links For i = 2 To LastRow ' Ændre 2 til den række hvor du starter med at have data, f.eks. hvis du har en header i række 1, vil du normalt have data i række 2. ' Column with hyperlinks v = Cells(i, "F").Value
' Exit procedure if no hyperlink exists If v = "" Then Exit Sub
' Insert picture With ActiveSheet.Pictures.Insert(v) ' Resize picture With .ShapeRange .LockAspectRatio = msoTrue .Width = 30 .Height = 15 End With ' Move picture .Left = ActiveSheet.Cells(i, 6).Left .Top = ActiveSheet.Cells(i, 6).Top .Placement = 1 .PrintObject = True End With Next i On Error GoTo 0 End Sub
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.