Avatar billede gnaffe Nybegynder
24. februar 2003 - 10:46 Der er 25 kommentarer og
2 løsninger

Excel Sheet (haster)

Hvordan overfører man værdier til et Excel-sheet i VB?
Avatar billede scb Praktikant
24. februar 2003 - 11:11 #1
Først:

Dim ex As Excel.Application
Set ex = New Excel.Application
Dim work As Excel.Workbook
Set work = ex.Workbooks.Open(NAVN PÅ EXELFIL)
   
Sådan puttes der data i:   
   

work.Worksheets(ARK NR).Range("a").Value = "Hej"
work.Worksheets(ARK NR).Range("b").Value = "Næste felt"

-SCB
Avatar billede martin_moth Mester
24. februar 2003 - 11:13 #2
Hvis du vil indsætte et eksisterende regneark i din VB6-applikation, kan du gøre følgende:

Du skal bruge en OLE-komponent på din form sammen med metoden CreateLink. Metoden CreateLink anvendes til at skabe et link til objektet. Syntaksen er således:

  Object.CreateLink sourcedoc [, sourceitem]

Hvor
  ·  sourcedoc er navnet på den fil der ønskes skabt et link til
  ·  sourceitem er et element i sourcedoc

F.eks. kan der skabes et link til celleområdet R1C1:R8C2 (række 1-8, kolonne 1-2) i Excel-regnearket Budget.xls i samme bibliotek som VB-projektet, således:

  OLE1.CreateLink App.Path & "\Budget.xls", "R1C1:R8C2"

For at metoden CreateLink kan anvendes, skal OLE-kontrollens egenskab OLETy-peAllowed forinden sættes til Linked eller both. Anvend f.eks. systemkonstanten vbOLELinked.

At der er skabt et link til Excel-regnearket Budget.xls betyder, at hvis der dobbelt-klikkes på det i OLE-kontrollen, vil Excel starte op, og der kan arbejdes med regne-arket.

Voilà!
Avatar billede gnaffe Nybegynder
24. februar 2003 - 11:21 #3
Jeg har et mindre problem, da VB ikke forstår når jeg definerer noget som Excel.Application
Avatar billede martin_moth Mester
24. februar 2003 - 11:31 #4
Så brug min løsning;o)

For at rette fejlen du får ved scb's løsning, gå til Project > References og tilvælg Microsoft Excel Object X.X Library
Avatar billede martin_moth Mester
24. februar 2003 - 11:34 #5
PS: Hvis du bruger scb's løsning, så husk at skrive
  Set work = Nothing
Inden du afslutter :o)
Avatar billede gnaffe Nybegynder
24. februar 2003 - 11:44 #6
Set work = ex.Workbooks.Open(NAVN PÅ EXELFIL)
når jeg skriver navnet på en excel fil siger den, at den ikke er defineret
Avatar billede gnaffe Nybegynder
24. februar 2003 - 11:48 #7
har fået den til at virke med
Set work = ex.Workbooks.Open(NAVN PÅ EXELFIL), nu kan jeg bare ikke få adgang til excel filen, prøver igen i eftermiddag.
Avatar billede martin_moth Mester
24. februar 2003 - 11:53 #8
Husk at putte stien i gåseøjne - prøv at vis din kode
Avatar billede martin_moth Mester
24. februar 2003 - 11:54 #9
Altså:

Set work = ex.Workbooks.Open("c:\minfil.xls")
Avatar billede martin_moth Mester
24. februar 2003 - 16:20 #10
Har du fået det til at virke, gnaffe?
Avatar billede gnaffe Nybegynder
24. februar 2003 - 21:22 #11
Jeg har droppet den første metode, og er gået over til OLE-metoden, som ser ud til at virke, men hvordan ændrer jeg data i regnearket fra programmet?
Avatar billede martin_moth Mester
25. februar 2003 - 09:27 #12
Se sidste linie i mit svar 24/02-2003 11:13:53 :o)
Avatar billede martin_moth Mester
25. februar 2003 - 10:05 #13
Altså:

Opret et project med en form
Smid en OLE1 på formen, og træk den tilpas stor
Smid en knap på
Indsæt følgende kode i kodevinduet, og kør programmet - voilà

Private Sub command1_Click()
    OLE1.CreateLink App.Path & "\MinFil.xls", "R1C1:R8C2"
End Sub

Private Sub Form_Load()
    Command1.Caption = "Load regneark"
    OLE1.OLEDropAllowed = False
    OLE1.OLETypeAllowed = vbOLELinked
End Sub

Dobbeltklik for at redigere
Avatar billede gnaffe Nybegynder
25. februar 2003 - 10:30 #14
Jeg mener, hvis programmet selv skal ændre en værdi i tabellen.
I mit program skal jeg kunne samle 10 værdier i en tabel.
Avatar billede martin_moth Mester
25. februar 2003 - 11:01 #15
Så skal du IKKE bruge min løsning. Brug

Private Sub Command1_Click()
  Dim Ex As Excel.Application
  Dim Work As Excel.Workbook
 
  Set Ex = New Excel.Application
  Set Work = Ex.Workbooks.Open("C:\Minfil.xls")
 
  Work.Worksheets("Ark1").Range("a1").Value = "Hej"
  Ex.Workbooks.Close
 
  Set Work = Nothing
  Set Ex = Nothing
End Sub

Som scb skriver... :o)

PS: Hvis det haster, så vær omhyggelig med at skrive præcis hvad du ønsker - bare et tip ;o)
Avatar billede martin_moth Mester
25. februar 2003 - 11:26 #16
PS: Du bør nok tilføje en

Ex.Application.Quit lige før du sætter objekterne = Nothing :o)
Avatar billede gnaffe Nybegynder
25. februar 2003 - 12:50 #17
Jeg får en runtime error og den viser frem til denne sætning:
  Set Ex = New Excel.Application
Nogen ideer om hvad det kan være?
Avatar billede martin_moth Mester
25. februar 2003 - 13:32 #18
Citerer lige mig selv:

"..., gå til Project > References og tilvælg Microsoft Excel Object X.X Library"
Avatar billede gnaffe Nybegynder
25. februar 2003 - 13:34 #19
Det har jeg gjort, men det virker stadig ikke.
Avatar billede martin_moth Mester
25. februar 2003 - 13:48 #20
Hvilken fejl får du?

Prøv at vise din kode, samt den fejlbesked du får
Avatar billede gnaffe Nybegynder
25. februar 2003 - 13:53 #21
Private Sub Command1_Click()
  Dim Ex As Excel.Application
  Dim Work As Excel.Workbook
 
  Set Ex = New Excel.Application
  Set Work = Ex.Workbooks.Open("L:\jakob\bioreact\test.xls")
 
  Work.Worksheets("Ark1").Range("a1").Value = "Hej"
  Ex.Workbooks.Close
  Ex.Application.Quit
  Set Work = Nothing
  Set Ex = Nothing
End Sub

Jeg fejlen
"Run-time error '-2147319779 (8002801d)':
Automation error"

Når jeg trykker Debug markerer den sætningen:
"Set Ex = New Excel.Application"
Avatar billede martin_moth Mester
25. februar 2003 - 14:08 #22
Hmm - det ved jeg ssu ikke. Du HAR vel Excel installeret, og HAR tilføjet Microsoft Excel Ob...

Er du sikker på at arket ikke er skrivebeskyttet/låst/whatever - prøv at oprette et nyt ark, luk Excel og forsøg når du peget på det nye ark...

Ovenstående virker fejlfrit ved mig...
Avatar billede gnaffe Nybegynder
25. februar 2003 - 14:13 #23
jeg prøver i aften, når jeg sidder hjemme. Jeg ved ikke om det kan være fordi jeg kører VB 5 her. Men VB 6 derhjemme, så det kan være det virker derhjemmme.
Mht excel, ja det er installeret, og jeg har tilføjet det i references.
Avatar billede martin_moth Mester
26. februar 2003 - 14:52 #24
Fik du det til at virke :o)
Avatar billede gnaffe Nybegynder
26. februar 2003 - 16:17 #25
Ja jeg fik det til at virke der hjemme. Tak for alt jeres hjælp.
Mht pointfordeling får scb 50 point, da det var ham der kom med ideen, men havde nogle småting, der skulle rettes. 100 point til Martin_moth da det var ham der hjalp mig gennem det. hvis der er kommentarer til pointfordeling, så skriv det
Avatar billede martin_moth Mester
26. februar 2003 - 17:44 #26
Helt fint for mig :o)
Avatar billede scb Praktikant
26. februar 2003 - 18:56 #27
Det samme her..  Ville gerne have hjulpet mere, men jeg fik ingen mail fra eksperten i ca. 2 døgn.
-SCB
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

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