Gå til innhold

[Løst]Hente data fra en excelarbeidsbok til en annet via makroer


Anbefalte innlegg

Hei,

 

Jeg har en Excelarbeidsbok med veldig mange ark og formler. Denne arbeidsboken består både av "innput-celler" og låste celler med formler. Det er flere forskjellige som skal benytte denne arbeidsboken, og det vil således finnes mange forskjellige ark, der innputcellene inneholder forskjellige informasjon.

 

Ved en eventuell oppdatering av formlene i regnearket vil det være arbeidskrevende å legge inn alle data i arkene på nytt, og jeg lurte på om det er mulig å lage en makro, som henter all innputen fra innput-cellene i versjon 1, til versjon 2.

 

Jeg går ut fra at det må lages kommandoer for hver enkelt celle. Noen som har peiling på hvordan denne makroen kan lages. Jeg fant følgende eksempel fra "hjelp", men fant ikke ut hvordan man velger at det skal komme fra et ark til et annet.

 

Private Sub CommandButton1_Click()

Worksheets("Sheet1").Range("B3:C4").Copy _

Destination:=Worksheets("Sheet1").Range("B3")

End Sub

 

Noen som kan oppdatere denne formelen bare for å vise hvordan skal skrive det for å hente dataene i cellene B3 til C4 fra Test v1.0.xls til Test v1.1.xls

Lenke til kommentar
Videoannonse
Annonse

Hei og God jul !

 

 

Det du har der ser jo ut til å fungere innenfor en arbeidsbok

 

--------------------------

Dim olddoc As Workbook

 

Set olddoc = Workbooks.Open("c:\bok1.xlsm")

 

olddoc.Worksheets("Ark1").Range("B3:C4").Copy _

Destination:=Worksheets("Ark1").Range("B3")

 

Set olddoc = Nothing

 

--------------------------

 

Det fungerte hos meg med excel 2007 der den gamle boka ligger i c:\

Lenke til kommentar

Heisann,

 

Takk for god hjelp, og god jul til deg også.

 

Jeg måtte legge til en definisjon av dokumentet tallene skulle inn i også, for å få det til å funke slik at koden nå ser slik ut:

 

-------------------------

 

Private Sub CommandButton1_Click()

 

Dim olddoc As Workbook

Dim newdoc As Workbook

 

Set olddoc = Workbooks.Open("C:\Test v1.0.xls")

Set newdoc = Workbooks.Open("C:\Test v1.1.xls")

 

olddoc.Worksheets("Test").Range("B3:C4").Copy _

Destination:=newdoc.Worksheets("Test").Range("B3")

 

Set olddoc = Nothing

Set newdoc = Nothing

 

End Sub

 

-------------------------

 

Jeg har to oppfølgingsspørsmål som jeg lurer på om noen vet svaret på.

 

1. Er det mulig å benytte "relativ bane", i betegnelsen av filene. Slik at det ikke har noe å si hvilken mappe filene ligger i, bare de ligger i samme mappe som arket der jeg har laget makroen er?

2. Er det mulig å gjøre operasjonen uten å åpne arbeidsbøkene? De arbeidsbøkene makroen skal benyttes til er så store at på enkelte PC-er går det bare ann å åpne en av gangen, og det kommer opp at det er for lite minne om man prøver å åpne 2 stk.

Lenke til kommentar

Til 1, mappen med filen koden kjøres fra heter

Thisworkbook.Path

 

Til 2, se

http://spreadsheetpage.com/index.php/tip/a..._a_closed_file/

men hvis en excelfil er så stor at en kurant moderne pc har trøbbel, så er den et potensielt problem. Slike filer har det med å selvdestruere på verst mulige tidspunkt. Anbefaler veldig at dy rydder og renser.

 

Beste hilsen Harald

Lenke til kommentar

Hei igjen, og takk for hjelpa.

 

Har da fått satt opp en makro som fungerer etter intensjonen, og testet denne. Thisworkbook.Path funket bra, når det gjelder pkt 2 så dette forholdsvis omfattende ut, slik at jeg sparer nok å lære meg det til en senere anledning.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...