Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketIndsætning af billede......

 Besvar Besvar
Forfatter
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Emne: Indsætning af billede......
    Sendt: 10.Mar.2011 kl. 09:08

Vi har på arbejde udarbejdet et nyt skema i forbindelse med energibesparelse og i den forbindelse vil vi godt have et billede ind i skemaet af den enkelte bygning. Men da ikke alle kan finde ud af Excel på meget mere end brugerniveau (læs - indtaste data) havde jeg en ide om at indlægge en knap man bare trykkede på og så kom den alm. vindue frem hvor man bare skal markerer og hvilken file man skal bruge, og så skulle den self ligge i den forudbestemte celle med en forudbestemt størrelse (bredde*højde)

 
Er dette helt ude i hampen ???? Eller ligger den til venstre benet Wink
Hygge - Kim
Excel 365 DK user
Til top



Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 10.Mar.2011 kl. 10:05
Hej Kim,
 
Højrebenet vil jeg mene LOL 
Hvis du bruger denne kodestump i et modul, vil Excel egen 'Indsæt billede' dialog komme til syne.
 
Application.Dialogs(xlDialogInsertPicture).Show
 
//Allan
Til top
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Sendt: 10.Mar.2011 kl. 10:36
SUPER - vidste i havde det i Jer Tongue men nu bliver jeg lidt krævende - kan man bestemme HVOR den skal indsætte billedet - for lige nu smider den det bare i venstre hjørne.
Hygge - Kim
Excel 365 DK user
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 10.Mar.2011 kl. 10:51

Jo, hvis dine billeder er nogenlunde ens i størrelsen, kan du bare aktivere den celle som billedet skal være i.

 
Range("A10").select
Application.Dialogs(xlDialogInsertPicture).Show
 
Billedet bliver sat ind i A10
Vil du også kontrollere størrelsen?
 
//Allan
Til top
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Sendt: 10.Mar.2011 kl. 14:26
Ja hvis det var muligt Tongue
Hygge - Kim
Excel 365 DK user
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 10.Mar.2011 kl. 15:27
OK, så må vi give den lidt ekstra gas Wink
Som standard placerer denne kode billedet i A10, men det kan du ændre.
Højde og bredde er som standard 100 pixels, det kan du også ændre.
Dejlig kode LOL
 
Private Const Hoejde = "100" 'Hvis højde skal tilpasses cellens højde, ændres den til ""
Private Const Bredde = "100" 'Hvis bredde skal tilpasses celles højde, ændres den til ""
Private Const Placering = "A10" 'Hvis billedes skal være i aktive celle, ændres den til ""

Sub Indsaet_Billede()
Application.ScreenUpdating = False
ActCell = ActiveCell.Address
If Placering <> "" Then Range(Placering).Select
Set Billede = ActiveSheet.Pictures.Insert(Application.GetOpenFilename("Alle filer,*.*"))
With Billede
    .ShapeRange.LockAspectRatio = msoFalse
        If Hoejde = "" Then
                .Height = ActiveCell.Height
            Else
                .Height = Hoejde
            End If
        If Bredde = "" Then
                .Width = ActiveCell.Width
            Else
                .Width = Bredde
            End If
    .Top = ActiveCell.Top
    .Left = ActiveCell.Left
    .Placement = xlMoveAndSize
End With
Set Billede = Nothing
Range(ActCell).Select
Application.ScreenUpdating = True
End Sub

 
//Allan
Til top
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 10:02
hmm den giver fejl - kan det have noget at gøre med at jeg kører en US version ???
Private Sub CommandButton1_Click()
Private Const Hoejde = "" 'Hvis højde skal tilpasses cellen, ændres det til ""
Private Const Bredde = "100" 'Hvis bredde skal tilpasses cellen, ændres det til ""
Private Const Placering = "g3" 'Hvis aktivecelle ønskes, ændres det til ""
Sub Indsaet_Billede()
Application.ScreenUpdating = False
ActCell = ActiveCell.Address
If Placering <> "" Then Range(Placering).Select
Set Billede = ActiveSheet.Pictures.Insert(Application.GetOpenFilename("Alle filer,*.*"))
With Billede
    .ShapeRange.LockAspectRatio = msoFalse
        If Hoejde = "" Then
                .Height = ActiveCell.Height
            Else
                .Height = Hoejde
            End If
        If Bredde = "" Then
                .Width = ActiveCell.Width
            Else
                .Width = Bredde
            End If
    .Top = ActiveCell.Top
    .Left = ActiveCell.Left
    .Placement = xlMoveAndSize
End With
Set Billede = Nothing
Range(ActCell).Select
Application.ScreenUpdating = True
End Sub
Hygge - Kim
Excel 365 DK user
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 10:49
Hej igen,
 
Nej, det er koden som er sat forkert ind.
Brug denne i stedet.
Private Const xxxxx skal ALTID være i toppen af modulet, ellers vil koden fejle.
Du havde sat min kode ind i en anden kode, således at der var 2 sub'er og 2 kodenavne i samme kode, den går ikke Smile
 
 
Private Const Hoejde = "" 'Hvis højde skal tilpasses cellens højde, ændres den til ""
Private Const Bredde = "100" 'Hvis bredde skal tilpasses celles højde, ændres den til ""
Private Const Placering = "G3" 'Hvis billedes skal være i aktive celle, ændres den til ""

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
ActCell = ActiveCell.Address
If Placering <> "" Then Range(Placering).Select
Set Billede = ActiveSheet.Pictures.Insert(Application.GetOpenFilename("Alle filer,*.*"))
With Billede
    .ShapeRange.LockAspectRatio = msoFalse
        If Hoejde = "" Then
                .Height = ActiveCell.Height
            Else
                .Height = Hoejde
            End If
        If Bredde = "" Then
                .Width = ActiveCell.Width
            Else
                .Width = Bredde
            End If
    .Top = ActiveCell.Top
    .Left = ActiveCell.Left
    .Placement = xlMoveAndSize
End With
Set Billede = Nothing
Range(ActCell).Select
Application.ScreenUpdating = True
End Sub

//Allan
Til top
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 11:48

Ja så virker det - sådan da. Da cellen billedet skal sættes ind i er lavet ved at formaterer 6 kolonner og x antal rækker fylder den kun billedet ind i det der svarer til den første kolonne. Jeg kan godt få det til at virke hvis jeg taster BÅDE højde og bredde ind (340*745). Det gør måske ikke så meget - den strækker jo bare billedet. Men hvis man nu kunne få det til at funke ved en lille justering ville det være guld Big smile

BTW - fik jeg lige sagt at jeg synes i er nogel guder herinde Thumbs Up Beer
Hygge - Kim
Excel 365 DK user
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 12:49
Tak for de rosende ord Kim Embarrassed, jeg er glad for at forummet er blevet den succes det er. Det er fedt at kunne hjælpe så mange mennesker med deres udfordringer (i regnearksmæssig forstand LOL)
 
En lille rettelse af koden gør det muligt.
Prøv den lige af.
 
Private Const Hoejde = "" 'Hvis højde skal tilpasses cellens højde, ændres den til ""
Private Const Bredde = "" 'Hvis bredde skal tilpasses celles højde, ændres den til ""
Private Const Placering = "G3" 'Hvis billedes skal være i aktive celle, ændres den til ""
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
ActCell = ActiveCell.Address
If Placering <> "" Then Range(Placering).Select
Set Billede = ActiveSheet.Pictures.Insert(Application.GetOpenFilename("Alle filer,*.*"))
With Billede
    .ShapeRange.LockAspectRatio = msoFalse
        If Hoejde = "" Then
                .Height = Selection.Height
            Else
                .Height = Hoejde
            End If
        If Bredde = "" Then
                .Width = Selection.Width
            Else
                .Width = Bredde
            End If
    .Top = ActiveCell.Top
    .Left = ActiveCell.Left
    .Placement = xlMoveAndSize
End With
Set Billede = Nothing
Range(ActCell).Select
Application.ScreenUpdating = True
End Sub
 
//Allan
Til top
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 13:15
Jeps - så strækker den i begge retninger - men kan man få den til kun at tilpasse højden og så ignorerer bredden, men stadigvæk beholde image ratio ???

Jeg har forsøgt at ændre lidt i koden:
Private Const Hoejde = "" 'Hvis højde skal tilpasses cellens højde, ændres den til ""
Private Const Placering = "G3" 'Hvis billedes skal være i aktive celle, ændres den til ""
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
ActCell = ActiveCell.Address
If Placering <> "" Then Range(Placering).Select
Set Billede = ActiveSheet.Pictures.Insert(Application.GetOpenFilename("Alle filer,*.*"))
With Billede
    .ShapeRange.LockAspectRatio = msoFalse
        If Hoejde = "" Then
                .Height = Selection.Height
            Else
                .Height = Hoejde
            End If
    .Top = ActiveCell.Top
    .Left = ActiveCell.Left
    .Placement = xlMoveAndSize
End With
Set Billede = Nothing
Range(ActCell).Select
Application.ScreenUpdating = True
End Sub
 
og det ser ud til at virke til dels, dvs. den holder ikke image ratio hvis billedet er mindre end cellehøjden. Dog er der ingen problemer hvis billedet er højer end cellehøjden.
Hygge - Kim
Excel 365 DK user
Til top
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 13:22
Har også lige opdaget at hvis man trykker på knappen, men så annullerer det insert image vinduet så laver den en fejl.

Runtime Error '1004'
 
Unable to get the Insert Proberty of the picture class
 
Dette med både din kode og min kode.
Hygge - Kim
Excel 365 DK user
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 13:28

Image ratio kan du godt komme udenom.

.ShapeRange.LockAspectRatio = msoFalse
Skal udskiftes med
.ShapeRange.LockAspectRatio = msoTrue
 
//Allan
Til top
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 13:38
Citat: Allan Allan skrev:

Image ratio kan du godt komme udenom.
.ShapeRange.LockAspectRatio = msoFalse
Skal udskiftes med
.ShapeRange.LockAspectRatio = msoTrue
//Allan
 
Det havde jeg prøvet, men ak den vrider stadig - se billeder
 
 
Hygge - Kim
Excel 365 DK user
Til top
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 13:50
Kan det evt. have noget at gøre med at det er 2003 versionen af Excell ???
Hygge - Kim
Excel 365 DK user
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 14:16
Jeg kan godt se det, denne kode skalerer som den skal og virker i 2007
Jeg synes ikke jeg kan finde nogle steder som skriver at der skulle være forskel på versionerne mht. dette.
 
 
Private Const Hoejde = "" 'Hvis højde skal tilpasses cellens højde, ændres den til ""
Private Const Placering = "G3" 'Hvis billedes skal være i aktive celle, ændres den til ""
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
ActCell = ActiveCell.Address
If Placering <> "" Then Range(Placering).Select
Set Billede = ActiveSheet.Pictures.Insert(Application.GetOpenFilename("Alle filer,*.*"))
With Billede
    .ShapeRange.LockAspectRatio = msoTrue
        If Hoejde = "" Then
                .Height = Selection.Height
            Else
                .Height = Hoejde
            End If
    .Top = ActiveCell.Top
    .Left = ActiveCell.Left
    .Placement = xlMoveAndSize
End With
Set Billede = Nothing
Range(ActCell).Select
Application.ScreenUpdating = True
End Sub
Til top
kbno Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 07.Feb.2011
Land: Danmark
Status: Offline
Point: 500
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 16:33
Det virker også i min Excel 2010 versio, så det er åbentbart 2003 versionen som driller.

Så 1000000000000000000000 gange tak for hjælpen Clap
Hygge - Kim
Excel 365 DK user
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 11.Mar.2011 kl. 19:15
Det var da dejligt det virkede i Excel 2010.
Hvorfor det ikke virker i 2003 må stå hen i det uvisse, jeg har nemlig ikke 2003 på min computer mere.
 
God aften.
 
//Allan
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 15.Feb.2012 kl. 11:15
Som en lille tillægsinformation, findes denne funktion nu i BST Utilities.
 
//Allan
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk