24. januar 2014 - 17:12Der er
5 kommentarer og 1 løsning
Indsætte billeder som bliver gemt med Excel fil - VBA
Jeg har denne kode - som sammen med øvrig kode finder og indsætter 100 billeder fra et bibliotek i min Excelfil
Men, men. Billeder indsat således er fortsat linket til det oprindelige billede. Så filen kan ikke sendes ud af huset med billederne i - samt øvrige problemer med linket filer. Jeg har behov for at billederne kan blive gemt og un-linked med oprindelige billedfiler. Kender nogen en metode til dette.
Her et udsnit af min nuværende kode:
Range(Z.Offset(-1, -8), Z.Offset(4, -5)) Set myPict = ActiveSheet.Pictures.Insert(strPath & strFileName) With myPict myPict.Top = ActiveCell.Top myPict.Width = ActiveCell.Width myPict.Height = ActiveCell.Height myPict.Left = ActiveCell.Left myPict.Placement = xlMoveAndSize End With With myPict .ShapeRange.Height = 70# '53.8582677165 .ShapeRange.IncrementLeft 10 .ShapeRange.IncrementTop 6 End With
Som jeg har forstået skal man bruge metoden: ActiveSheet.Shapes.AddPicture - for at få det un-linked - men jeg kan ikke få det til at virke med indsættelse i definerede ranges.
Hej - tak for hurtig respons - det er denne kode jeg gerne vil have ændret således den bruger "shape" i stedet så billederne ligges i filen.
Hensigten er at den skal slå en sti op i kolonne O og indsætte billedet i kolonne A. Det er mest klippe / klistre så det kan sagtens være at koden "ser forfærdelig ud" :-)
Jeg tester også på om billedet er bredere end højden og optimerer størrelsen så den passer til cellen - kan det lade sig gøre med "shapes" også ?
Pft.
Sub InsertPic() Dim pic As String 'file path of pic Dim myPicture As Picture 'embedded pic Dim rng As Range 'range over which we will iterate Dim cl As Range 'iterator Dim sti As String
sti = Range("sti").Value
Set rng = Range("A21:A500") For Each cl In rng
If Not IsEmpty(cl.Offset(0, 1)) Then
pic = (sti & cl.Offset(0, 15))
If pic <> sti Then
If Dir(pic) <> "" Then
Set myPicture = ActiveSheet.Pictures.Insert(pic)
If myPicture.Width > myPicture.Height Then
With myPicture .ShapeRange.LockAspectRatio = msoTrue .Width = cl.Width .Top = Rows(cl.row).Top .Left = Columns(cl.Column).Left End With
Else
With myPicture .ShapeRange.LockAspectRatio = msoTrue .Height = cl.Height .Top = Rows(cl.row).Top .Left = Columns(cl.Column).Left End With
Hej - har du haft lejlighed til at kigge på udfordringen :-)
Pft.
Vh
Jens
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.