Avatar billede fobian Nybegynder
02. maj 2003 - 09:55 Der er 14 kommentarer og
1 løsning

Gem område i regneark som .gif fil

Hej eksperter

Jeg er i gang med at lave et program, som gemmer grafer i Excel, som .gif filer. Jeg vil gerne udbygge det med en funktionalitet, hvor man kan markere et område i regnearket og gemme det som en .gif fil. Det skal styres fra VBA - og ikke ved at man manuelt klikker på Gem som html. Det skal virke i Excel 97.

Er der nogen, som har en idé eller kode på, hvordan det kan gøres?
Avatar billede hcma Novice
02. maj 2003 - 10:05 #1
Kan ikke lige gennemskue formålet, men man kan jo altid markere et område (incl. grafer) i excel, kopiere og indsætte det i et grafikprogram, som så kan gemme som *.gif
Avatar billede renesvane Nybegynder
02. maj 2003 - 10:09 #2
:-)
Har lige rodet med et lignede problem. Det er ikke let, hvis det skal virke som du skriver....
Du kan godt lave et dump af skærmen, men så skal du croppe billedet, så du kun har det tilbage du har valgt.

Her kommer lige min kode, hvor jeg tager et dump af en userform i VBA

Option Explicit

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
  bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12


Private Sub UserForm_Activate()
    'Laver et dump af skærmen til et bitmap, og smider det på clipboard
    keybd_event VK_MENU, 0, 0, 0
    keybd_event VK_SNAPSHOT, 0, 0, 0
    keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
End Sub

Koden simulerer ALT+PRTSC ved brug af API kald. Det er det samme API kald, som Windows selv bruger, så det er på ingen måde ustabilt.
Avatar billede bak Forsker
02. maj 2003 - 10:31 #3
Avatar billede janvogt Praktikant
02. maj 2003 - 10:57 #4
Denne kode skulle kunne gøre det:

Set CurrentChart = Sheets("Sheet1").ChartObjects(1).Chart
Fname = ThisWorkbook.Path & "\Mychart.gif"
CurrentChart.Export Filename:=Fname, FilterName:="GIF"

Taget fra http://www.j-walk.com/ss/excel/faqs/xl97faq3.htm
Avatar billede fobian Nybegynder
02. maj 2003 - 11:09 #5
Det link, som bak har lagt ind, udfører lige nøjagtigt det jeg har behov for.
Jeg skal bruge gif filerne til at vise på html sider. Der er bare lidt med kanterne og rammerne, som ikke bliver vist helt korrekt, men det må studeres nærmere.
Det er næsten for nemt for dig bak, så hvis du vil have nogle point, så må du lige oprette et svar :-)

Jeg takker for de øvrige svar, men de var ikke helt præcist det jeg havde brug for :-)
Avatar billede janvogt Praktikant
02. maj 2003 - 11:26 #6
Tjekkede du den kode jeg har vist?
Baks link konverterer et område (range) til en GIF-fil, hvorimod min kode kun tager selve diagrammet.
Avatar billede janvogt Praktikant
02. maj 2003 - 11:36 #7
.... så der burde du ikke have problemer med kanter/rammer.
Avatar billede fobian Nybegynder
02. maj 2003 - 11:50 #8
Jeg har skam set din kode :-)
Men den har jeg allerede kode til i forvejen. Det jeg havde behov for var kode til at kopiere et område fra et regneark til en gif fil. Det kan Baks link.
Avatar billede janvogt Praktikant
02. maj 2003 - 12:31 #9
Ja, det skriver du selvfølgelig også i din overskrift, men jeg tog vist lidt fejl af, at du i teksten skriver om at gemme grafer som GIF-fil :-)
Avatar billede fobian Nybegynder
02. maj 2003 - 13:09 #10
Ja - det er ikke sådan, når man ikke læser spørgsmålet færdigt ;-)
- eller også skulle jeg ikke havde skrevet den overflødige første sætning :-)

Jeg har ellers fået det til at virke i et VB-program, hvor jeg kopierer et område i Excel til et Image på en userform og derefter gemmer imaget, som en gif fil. Men de virker desværre ikke i VBA.

Koden til mit VB program ser således ud:

Private Sub Command2_Click()
        Dim ex As Excel.Application
        Dim work As Excel.Workbook
        Set ex = New Excel.Application
        Set work = ex.Workbooks.Open("w:\regneark\gem tabel som gif.xls", , True)
        work.Sheets("ark1").Select
        Application.Goto Reference:="dataomr"
        Selection.Copy
        Form2.Image1.Picture = Clipboard.GetData
        work.Application.CutCopyMode = False
        Clipboard.Clear
        ex.Workbooks("gem tabel som gif.xls").Close (False)
        ex.Application.Quit
        Set work = Nothing
        Set ex = Nothing
        Set RDelOpgListe = Nothing
        Set RProjekt = Nothing
        SavePicture Form2.Image1.Picture, "w:\regneark\giftest.gif"
End Sub

Har du en idé om det kan komme til at virke i VBA? Der er bla. problemer med at anvende koden Clipboard.GetData, som den brokker sig over.
Avatar billede fobian Nybegynder
02. maj 2003 - 13:13 #11
Linierne forneden: Set RDelOpgListe = Nothing og Set RProjekt = Nothing skulle ikke havde været med i koden, så se lige bort fra dem :-)
Avatar billede bak Forsker
02. maj 2003 - 14:46 #12
Her et et svar, beklager mit fravær, men arbejdet skal jo også passes :-)
Avatar billede bak Forsker
02. maj 2003 - 15:38 #13
Jeg tror ikke overstående kommer til at  virke i VBA.
Den kender ikke GetData, kun GetText, som bare henter teksten der ståe i cellerne uden skelen til formatering.
Dette kan heller ikke umiddelbart smides ind i Image.Picture
Avatar billede fobian Nybegynder
02. maj 2003 - 18:03 #14
Jeg har også prøvet en del for at få det til at virke i VBA, men uden held.
Dit link virker lige præcis, som det jeg efterlyste :-)
Avatar billede Slettet bruger
30. august 2005 - 21:13 #15
Ved godt jeg er over 2 år for sent på den.. men faldt lige over denne kommentar:

"Koden simulerer ALT+PRTSC ved brug af API kald. Det er det samme API kald, som Windows selv bruger, så det er på ingen måde ustabilt."

Bed specielt mærke i 'Windows' og 'på ingen måde ustabilt'.. excel crasher for mig gennemsnitligt 2-3 gange om dagen.. Hvilket vil sige, jeg nogen gange går fri, men en dag som i dag har jeg mistet flere timers arbejde fordi excel er crashed mindst 5 gange..

Havde lige nogle frustrationer jeg skulle ud med - er træt af at have færdiggjort en macro hvorefter excel går ned og jeg ikke ved, hvor langt jeg er nået med macroen i den version, jeg har fået gemt..
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester