/ Forside/ Teknologi / Administrative / MS-Office / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
MS-Office
#NavnPoint
sion 18709
refi 14474
Klaudi 9389
Rosco40 5695
berpox 5456
dk 5398
webnoob 4919
Benjamin... 4870
o.v.n. 4637
10  EXTERMINA.. 4373
Formelhjælp i excel 2000
Fra : boro23
Vist : 1025 gange
300 point
Dato : 02-03-07 10:42

Når jeg skriver et bestemt tal i celle B6, vil jeg gerne have indsat et foto i celle F6 som ligger et andet sted på computeren. Filnavnet på billedet er det samme som tallet i celle B6.

Kan det lade sig gøre at lave en simpel formel i celle F6, så den henter og indsætter foto'et i celle F6? Eller findes der en anden måde at indsætte et foto ved at indtaste et nr?

 
 
Kommentar
Fra : myg


Dato : 02-03-07 11:19

Jeg er ikke bekendt med at man kan indsætte et foto i en celle. Du kan indsætte det i et regneark, ja - men ikke så det er bundet til en celle.
Hvis man - mod forventning - alligevel kan det, ville jeg nok overveje muligheden af, at kalde en makro, som så indsætter billedet, men som sagt: jeg mener ikke ......

Kommentar
Fra : berpox


Dato : 02-03-07 11:39

Nej....for fotoet bliver jo ikke indsat i cellen.....men "ovenpå" - du kan jo rykke rundt med billedet bagefter.

Hvis du vil have noget der skifter billedet ud - så skal du bruge noget visual basic kode i en form der validerer indholdet i din celle, og opdaterer i henhold til dette.



Kommentar
Fra : sion


Dato : 02-03-07 11:48

Nedenstående makro kan gøre noget af arbejdet. Du skal dog først skrive filnavnet i en celle og derefter aktivere makroen (eventuelt kan makroen tildeles en knap). Det må også være mulig at køre en makro eller en anden VB-kommando, når en celle ændres, men jeg ved ikke lige hvordan.

Kode
Sub Makro1()

' Skriv mappe og filtyper herunder:
Mappe = "C:\Documents and Settings\Simon\Dokumenter\Billeder\Blandet\"
Filtype = "bmp"

'Vælg hvilken celle, der skal skrives filnavn i:
Filnavn = Range("A1").Value

'Billede indsættes. Du kan ændre placering i de to nederste linier:
ActiveSheet.Pictures.Insert(Mappe & Filnavn & "." & Filtype).Select
Selection.ShapeRange.IncrementLeft 200
Selection.ShapeRange.IncrementTop 100

End Sub

Simon

Kommentar
Fra : boro23


Dato : 02-03-07 13:42

Hej simon

Din løsning ser ud som noget jeg kan bruge, har kopieret kode ind i VB og ændret stien i mappe og filtypen til jpg. slettet linierne ' Skriv mappe og filtyper herunder:+'Vælg hvilken celle, der skal skrives filnavn i:+'Billede indsættes. Du kan ændre placering i de to nederste linier: så burde det virke hvis jeg skriver filnavnet i celle A1, men det gør det ikke. Jeg har måske ikke helt forstået koden, kan du uddybe lidt hvad du mener med: Selection.ShapeRange.IncrementLeft 200
Selection.ShapeRange.IncrementTop 100

Kommentar
Fra : sion


Dato : 02-03-07 14:58

Du behøver ikke slette noget fra koden. Apostroffen angiver, at det er en kommentar, som ikke læses som kode.

I A1 skal filnavnet stå uden mappe eller filtype. Altså skal "C:\Documents and Settings\Simon\Dokumenter\Billeder\Blandet\pic001.jpg" stå som "pic001". Det kræver så, at du angiver mappen som "C:\Documents and Settings\Simon\Dokumenter\Billeder\Blandet\" (husk at slutte med backslash ("\")) og filtypen som ".jpg".

Hvis det stadig ikke virker, så prøv at skrive din makro i spørgsmålet. Så kan jeg bedre se, om der er fejl.

Mht. "Selection.ShapeRange.IncrementLeft 200" og "Selection.ShapeRange.IncrementTop 100" så er det placeringen af billedet fra venstre og fra toppen i pixels. Erstat "200" og "100" med de værdier, som passer dig.

Simon

Kommentar
Fra : sion


Dato : 02-03-07 15:00

Husk forresten også at tillade makroer i Excel. Det gøres under Funktioner->Makro->Sikkerhed. Vælg sikkerhedsniveau MELLEM.

Simon

Kommentar
Fra : boro23


Dato : 02-03-07 15:33

Hej igen Simon

Jeg vil prøve det efter weekenden, da jeg sidder på mit arbejde med problemet.
Go' weekend

boro23

Kommentar
Fra : amoko


Dato : 04-03-07 19:28

Hi Boro23 og Sion
Den funktion I efterlyser er:
Private Sub Worksheet_Change(ByVal Target as Range).
Men, som jeg ser det, er der også et problem med at få slettet de "brugte" billeder.
Hvis du ikke er alt for presset for tid Boro23, skal jeg gerne prøve at komme med en komplet løsning.
Men det bliver først efter Weekenden den 10. - 11. da jeg er meget optaget i næste uge.
Amoko


Kommentar
Fra : sion


Dato : 04-03-07 22:30

Med ovenstående hjælp fra amoko har jeg ændret koden. Som amoko også skriver, er der dog problemer med at slette de "brugte" billeder... Kan ikke lige finde på en løsning nu, så jeg har ladet den ufærdige kode stå som kommentar (med apostroffer foran).

Kode
Dim Celle, Mappe, Filtype, X, Y As String

Private Sub Worksheet_Change(ByVal Target As Range)

'Vælg hvilken celle, der skal skrives filnavn i:
Celle = "A1"

'Indtast billedets position (i pixels) i forhold til cellen med filnavn:
TilHoejre = 200
Nedad = 100

'Skriv mappe og filtype herunder:
Mappe = "C:\Documents and Settings\Simon\Dokumenter\Billeder\Blandet\"
Filtype = "bmp"


If Not Intersect(Target, Range(Celle)) Is Nothing Then

' ActiveSheet.Shapes("Picture 1").Select
' Selection.Delete

On Error GoTo NoFile
ActiveSheet.Pictures.Insert(Mappe & Target.Value & "." & Filtype).Select
Selection.ShapeRange.IncrementLeft TilHoejre
Selection.ShapeRange.IncrementTop Nedad
NoFile:

Range(Celle).Select

End If

End Sub

Koden skal stå i "VBAProject -> Microsoft Excel Objects -> Ark1". Ikke i Modules ligesom makroer skal.

Simon

Kommentar
Fra : boro23


Dato : 05-03-07 12:43

Hej Sion, kan ikke få det til at virke, som ønsket. Jeg har prøvet at lave en makro med knap og kan godt få det til at virke, men kan ikke slette billedet automatisk. Det er egentligt heller ikke den måde jeg havde håbet på, meningen var at skrive et nr. i en celle og så blev billedet indsæt i arket, men den måde jeg har har lavet makroknapperne på, vil jeg få en masse knapper som bliver svært at overskue. Ville gerne om jeg må sende en zipfil med billeder og excelfil til dig, så kan du måske se meningen med det hele.

Hej Amoko, du skal være velkommen til at gøre et forsøg, får jeg det lavet rigtig, er det værd at vente på. Kan også sende dig en zipfil, hvis du er interesseret

Mange tak til Jer begge indtil videre.

Kommentar
Fra : sion


Dato : 05-03-07 13:41

Den kode, jeg skrev i aftes kl. 22:30, virker uden knapper. Der skal du bare ændre indholdet i den pågældende celle, og så indsættes billedet.

Eneste problem er sådan set, at jeg ikke kan få slettet det gamle billede, når der indsættes et nyt.

Jeg sender lige en privat besked til dig med min mailadresse. Så kan du sende zip-filen til mig. så skal jeg se, hvad jeg kan gøre.

Jeg opdager lige nu, at du bruger Excel 2000 - jeg ved ikke ,om det har nogen betydning for VBA-scriptet... jeg tror det nu ikke.

Simon

Kommentar
Fra : berpox


Dato : 05-03-07 16:31

...problemet er jo "Picture 1" der øges med "1" for hvert billed man sætter ind....

Nedenstående sletter det sidst indsatte billed hver gang.

Kode
Option Explicit

Sub DeleteAllPictureShapes()

Dim n As Integer
Dim selName As String

For n = 1 To 1000
On Error Resume Next
ActiveSheet.Shapes("Picture " & n).Select
selName = ActiveSheet.Shapes("Picture " & n).Name

If Left(selName, 7) = "Picture" Then
ActiveSheet.Shapes("Picture " & n).Delete
Exit Sub
End If

Next n

End Sub


- problemet er blot, at koden vil have enten begrænset levetid hvis ikke FOR løkken skal løbe i en uendelighed,

Eller blive ulideligt langsom efterhånden som du skifter billederne ud - for hver gang øges excel-arkets interne løbenummer med 1....

Helt ærligt - glem alt om at bruge Excel som billed-fremviser..... du skal bruge ren VBA og en form, eller et billed-object i stedet....



Kommentar
Fra : boro23


Dato : 05-03-07 16:47

Hej igen, har haft lidt travlt på jobbet i dag og har ikke haft meget tid til at kikke på det, sender zip filen i morgen. Kan man ikke lave en VB kode der deleter billedet når man lukker filen? Skal lige sige at det drejer om ca. 75 billeder jeg skal kan hente frem når jeg skal bruge dem, hvis det har nogen betydning.


Kommentar
Fra : berpox


Dato : 05-03-07 16:53

Du skal gøre således:

1) Få vist værktøjslinien "Kontrolelementer"
2) Tryk på knappen "Design tilstand" så denne er aktiv. (den med tegnetrekant, og lineal)
3) Tryk på knappen "Billede" (den med et par bjerge og en sol over disse)
4) Tegn en ramme dér hvor du vil have billedet.
5) Tryk på knappen "Design tilstand" igen, så denne er inaktiv.
6) Gør værktøjslinien "Kontrolelementer" usynlig igen.
7) Aktivér VBA editoren vha. ALT+F11
8) Indsæt følgende kode i modulet "Ark1" hvis det var på Ark1 du indsatte billedobjekltet i trin 3.
Kode
Option Explicit
Dim fname, ftype, ffolder As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

' Skriv mappe og filtyper herunder:
ffolder = "C:\Billeder\"
ftype = ".bmp"

'Vælg hvilken celle, der skal skrives filnavn i:
fname = Range("A2").Value

'Billede indsættes. Du kan ændre placering i de to nederste linier:
Ark1.Image1.Picture = LoadPicture(ffolder & fname & ftype)

End Sub


Ret hvad der skal rettes.
Jeg aflæser nummeret i celle A2. Billedtypen er BMP, og de er placeret i folderen c:\billeder

Afslut VBA editoren.

Indsæt tal i celle A2 og forlad cellen.... nu skifter billedet som ønsket.




Kommentar
Fra : berpox


Dato : 05-03-07 17:10

Lige en lille forbedring - nu kontrolleres det nemlig at filnavnet eksisterer, før billedet indsættes. Så går koden ikke i fejl ved fejlindtastninger.....

Kode
Option Explicit
Dim fname, ftype, ffolder As String
Dim FSO As Object

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Set FSO = CreateObject("Scripting.Filesystemobject")

' Skriv mappe og filtyper herunder:
ffolder = "C:\Billeder\"
ftype = ".jpg"


'Vælg hvilken celle, der skal skrives filnavn i:
fname = Range("A2").Value

'Billede indsættes når det er checket om filen eksisterer!
If FSO.fileexists(ffolder & fname & ftype) Then
Ark1.Image1.Picture = LoadPicture(ffolder & fname & ftype)
Else
MsgBox "Filen " & ffolder & fname & ftype & " eksisterer ikke.", vbCritical
End If

End Sub



Kommentar
Fra : sion


Dato : 05-03-07 17:57

Det virker perfekt Berpox! Det var vist godt, at der kom en VB-ekspert ind over denne tråd.

Man kan med fordel gå ind i Egenskaber for billedrammen (ved at højreklikke i designtilastand) og ændre baggrundsfarve, ramme osv. samt lade billedet vises øverst til venstre i rammen (under PictureAlignment). Sidstnævnte kan være smart, hvis billederne er af forskellig størrelse.

Simon

Kommentar
Fra : sion


Dato : 05-03-07 18:13

Lidt forbedringer (efter min smag):

Kode
Option Explicit
Dim fname, ftype, ffolder, cell As String
Dim FSO As Object

Private Sub Worksheet_Change(ByVal Target As Range)

'Skriv mappe og filtype herunder:
ffolder = "C:\Documents and Settings\Simon\Dokumenter\Billeder\Blandet\"
ftype = ".bmp"

'Vælg hvilken celle, der skal skrives filnavn i:
cell = "A2"


If Not Intersect(Target, Range(cell)) Is Nothing Then

Set FSO = CreateObject("Scripting.Filesystemobject")

fname = Range(cell).Value

'Billede indsættes når det er checket om filen eksisterer!
If FSO.fileexists(ffolder & fname & ftype) Then
Ark1.Image1.Picture = LoadPicture(ffolder & fname & ftype)
Else
MsgBox "Filen " & ffolder & fname & ftype & " eksisterer ikke.", vbCritical
End If

End If

End Sub

Nu er det kun ved ændring af den pågældende celle, at billedet ændres. Det er dejligt, når man har skrevet et forkert filnavn Derudover er der ryddet lidt op i koden, så de tre konfigurable strenge står først.

Det kræver stadig noget tilpasning af koden, at få den til at passe til Boro23's konkrete problem, hvor der åbenbart er 75 billeder.

Simon

Kommentar
Fra : berpox


Dato : 05-03-07 18:41

Sikkert - men det der er tilbage må være i småtingsafdelingen Fin tilføjelse med kun at kigge på den aktuelle celle...det er selvfølgelig et must





Kommentar
Fra : boro23


Dato : 06-03-07 12:26

Hej berpox og sion

DET VIRKER BARE PERFEKT, også med de 75 billeder. Mange tak skal I have, jeg vil gerne give Jer hver 300 point, hvordan gør jeg det?

Det er rart at få noget seriøst hjælp, når firmaets hotline stod af inden jeg fik forklaret hvad jeg ville. Endnu engang 1000 tak




Kommentar
Fra : sion


Dato : 06-03-07 12:36

Hej Boro23

Det er godt at høre, at det virker

Det er desværre ikke muligt at dele pointene i to, men praksis herinde er vist, at man opretter et nyt spørgsmål i samme kategori med overskriften "Til [navn]". Her kan vedkommende skrive et "svar", og modtage de udloddede point.

Venlig hilsen
Simon

Accepteret svar
Fra : berpox

Modtaget 300 point
Dato : 06-03-07 13:08

Sådan er Kandu, når Kandu er bedst - dejligt at det virker (perfekt), og tak for samarbejdet Simon, så vi fandt en god løsning til Boro23

mvh berpox



Godkendelse af svar
Fra : boro23


Dato : 06-03-07 14:37

Tak for svaret berpox.

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste