Print side | Luk vindue

Liste samme celle fra samme ark i mange excelfiler

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=61
Udskrevet den: 19.Maj.2024 kl. 15:01


Emne: Liste samme celle fra samme ark i mange excelfiler
Besked fra: AnnetteTR
Emne: Liste samme celle fra samme ark i mange excelfiler
Posteringsdato: 21.Aug.2010 kl. 12:57
Hej
 
Jeg har nogle gange brug for at hente specifikke celler fra flere excelfiler med samme opsætning, men med mange ark (alle hedder det samme). Det er kun værdien af cellerne der skal kopieres - ikke formlerne.
 
Det er lykkedes at lave en makro der kan gøre det, men man skal kode om hver gang den skal bruges.
 
Det kunne være rart hvis der kom et pop-up billede, hvor man valgte hvilke filer oplysningerne skal tages fra, og hvilket ark, samt hvilken celle.
 
Man skal hardkode sti for placering af filerne, som skal ligge i samme folder, og der må ikke ligge andre filer.
Ligeledes skal man hardkode hvilke celler der skal kopieres.
Jeg vedlægger den kode jeg bruger - nederst i mailen.
 
Mvh Annette
 

Option Explicit
Sub GetMyData()
Dim myDir As String, fn As String, sn As String, sn2 As String, sn3 As String, n As Long, NR As Long
'***** Change Folder Path *****
'myDir = "C:\TestData"  'for testing
myDir = "C:\TestData
'***** Change Sheetname(s) *****
sn = "Samleark"
sn2 = "DATA"
sn3 = "VALG"
fn = Dir(myDir & "\*.xls")
Do While fn <> ""
  If fn <> ThisWorkbook.Name Then
    With ThisWorkbook.Sheets("Summary")
      NR = .Cells(Rows.Count, 1).End(xlUp).Row + 1
     
      'A1, P51 and P52 from worksheet "Samleark"
      With .Range("B" & NR)
        .Formula = "='" & myDir & "\[" & fn & "]" & sn & "'!P51"
        .Value = .Value
      End With
      With .Range("D" & NR)
        .Formula = "='" & myDir & "\[" & fn & "]" & sn & "'!P52"
        .Value = .Value
      End With
     
      'M3 from worksheet "DATA"
      With .Range("C" & NR)
        .Formula = "='" & myDir & "\[" & fn & "]" & sn2 & "'!M3"
        .Value = .Value
      End With
      'E4 from worksheet "VALG"
      With .Range("A" & NR)
        .Formula = "='" & myDir & "\[" & fn & "]" & sn3 & "'!E4"
        .Value = .Value
      End With
   
    End With
  End If
  fn = Dir
Loop
End Sub
'Before you run the macro, you will have to change this section of code:
'***** Change Folder



Svar:
Besked fra: Allan
Posteringsdato: 23.Aug.2010 kl. 13:09
Hej Annette,
 
Det kan godt lade sig gøre, på flere måder.
 
  1. Vi opretter en 'Masterfil' hvor du taster informationerne i nogle celler og trykker på en knap for at køre funktionen.
  2. Køre det hele via 'et input af gangen', inputbokse som spørger om informationerne 1 af gangen.
  3. Vi laver en 'Userform' som 'popper op' med de felter som du skal skrive i.

Hvilken er du mest til?

//Allan


Besked fra: AnnetteTR
Posteringsdato: 24.Aug.2010 kl. 07:55
Hej Allan
 
Jeg er ikke helt sikker på hvad du mener.
 
Den måde jeg forestiller mig, den skal virke på er, at man står i det ark, hvor man vil have dataene listet.
Så aktiverer man funktionen, og der popper et vindue op, hvor man vælger hvilke filer, der skal hentes data fra.
Evt i samme billede, eller i et nyt billede - er der et rullegardin, hvor man vælger mellem de arknavne der findes i de udvalgte filer, og et felt, hvor man skriver de "celler" (f.eks. A1, N7) der skal listes.
Det kunne være smart hvis man samtidig inddaterer en overskrift, som skal stå over de data, der kommer fra cellerne "Arknavn A1" .
Muligvis skal man angive, hvor mange celler man vil hente data fra.
Det skal være muligt at hente celler fra flere forskellige ark.
 
Jeg tror det minder mest om din mulighed 3.
 
Jeg har kørt den kode, som jeg vedlagde. Den sætter den rigtige værdi ind i 2 af cellerne, men de 2 andre er på en eller anden måde systematisk forkert.
De rigtige er dem der kommer fra arkene Valg og Data. De er værdier.
Dem der er forkert fra arket Samleark indeholder formler.
Til trods for de 2 sidste er forkerte - ser de rigtige ud (den ene skal være den anden divideret med værdien fra arket data)
 
Mvh Annette



Print side | Luk vindue