Avatar billede olehen Nybegynder
20. november 2007 - 11:02 Der er 13 kommentarer og
1 løsning

Kopiere fra 20 excel filer til en excel fil

jeg vil gerne kopiere bestemte rækker fra flere excel filer til en excel fil.

Dataene der skal hentes fra filerne står i kolonne A til F og er ens i alle filerne.
Der er overskrift i række 3 og disse er alle ens i alle filerne. Dataområdet er fra række 4 og til række X der er sidste række.

For dataene i række E og F skal disse deles med 1.000.000, så tallene står med 2 decimaler. F.eks. 150.000 bliver til 0,15

Når den har fundet alle rækker i en fil og hente dem over skal den forsætte til næste fil og gøre det samme.

Næste gang jeg køre macroen skal den slette hele Data arket, hvor dataene er hentet over i og derefter opdatere, da der kan være kommet flere rækker til.

Har set på flere forslag herinde men ednu ikke fundet en der virker selvom jeg retter dem til..

http://www.eksperten.dk/spm/413238
http://www.eksperten.dk/spm/673876
http://www.eksperten.dk/spm/279147
Avatar billede olehen Nybegynder
20. november 2007 - 11:03 #1
Dataområdet er ens ikke dataene..
Avatar billede luffeladefoged Praktikant
20. november 2007 - 14:28 #2
Kan se at svarene du har søgt alle er makro baserede svar. Har du overvejet at samle dine 20 sheets via en pivot tabel? Når du danner din pivot vælger du blot multiple consolidation ranges - og kan så vælge de enkelte ranges som hele kolonner, så du er uafhængig af antal rækker. Især når dine sheets er ens opbygget indeholdende de samme variable skulle det ikke volde problemer. Og når nye data kommer ind er det bare at trykke refresh, så opdateres alle dine opsummeringer.
Blot en idé.
Hilsen Luffe
Avatar billede olehen Nybegynder
20. november 2007 - 16:37 #3
Hej Luffe,

dataene samles i en fil/ark hvorefter der dannes 10-15 forskellige pivot tabeller i forskellige ark.. Alt efter hvad man har behov for at analysere. Problemet er bare at dataene indgår i en større dataindsamling, hvortil der også kommer ydereligere data  via vlookups fra nogle andre tabeller.. Disse tabeller har ikke samme opbygningen som de 20 excel filer som jeg indsamler fra.

Kan man undgå at overføre de 3 første rækker når man henter hele kolonnen..

Jeg skal måske lige tilføje at de 20 filer altid har det samme navn.

Og ja, en macro løsning vil være at fortrække da den gør det nemmere at arbejde med..

Lidt modificisering af en af de macros jeg har linket til tror jeg vil kunne gøre det..
Avatar billede luffeladefoged Praktikant
20. november 2007 - 22:35 #4
Forstår godt du helst vil samle det i et sheet linje for linje under hinanden. Specielt når du har bygget dine analyse pivot'er op som bygger på dette format. Man kan dog bygge en pivot på en pivot.
Jeg ville nok vælge en pivot løsning alligevel, især fordi jeg ikke er nogen ørn til VBA :-) Enten ved at køre pivot'en på de 20, tage en copy values og tilføje de øvrige data, eller bedre, at få de øvrige data til i opbygning at ligne de 20, så man kun skal køre en pivot. Man kan eventuelt fylde med blanke kolonner eller lave pivot til på disse øvrige data hvis muligt og så siden sammenkoble.
En simpel måde at undgå de tre første rækker: vælg fra a3:a40000 istedet for kolonnen.
At filerne har samme navn har jeg aldrig prøvet. Er det ikke bedre at rename dem, så man kan have dem åbne på samme tid? Ihvertfald hvis du vælger at data skal overføres via pivot, går det langt hurtigere hvis filerne er åbne.
Håber du finder en tilfredsstillende løsning.
/Luffe
Avatar billede olehen Nybegynder
20. november 2007 - 22:54 #5
Jeg mente ikke de havde samme navn. Det giver problemer. Men at de altid har det samme navn. F.eks. HK, TH, NL osv.

Ved at bruge macro kan jeg slippe for at åbne dem. Da jeg i forvejen har proppet dem med macroer vil jeg helst undgå dette..

Ren og skær "copy - past" fra en fil til en anden..
Avatar billede jlemming Nybegynder
21. november 2007 - 12:33 #6
Jeg kigge på en vba løsning, dine fil navne er de i system, eller har du en liste med dem?
Avatar billede olehen Nybegynder
21. november 2007 - 15:08 #7
Hvad mener du med at mine fil navne er i system???

Filerne ligger altid i den samme sti med samme navn. Opdateringer bliver lagt ovenpå.

Jeg kan se at de eksempler jeg har fundet alle henter stien med over i arket. Dette vil jeg gerne undgå. Så hellere et bestemt felt hvorfra jeg kan aflæse sidste opdateringsdato. Mener den ligger i felt "A4"

En liste over filnavne kan jeg sende i morgen.. Så kontrollere jeg også lige datofeltet i filerne - dette felt er det samme felt i alle 20 filer.

I hver af de tyve filer er der to ark. Det ark hvori dataen ligger hedder "Bank"
Avatar billede olehen Nybegynder
22. november 2007 - 13:14 #8
Hej Jlemming,

super du kigger på en vba løsning..
Sidste opdateringsdato findes i felt "B1"
Overskrifterne for kolonnerne er i række 3. Fra kolonne A til M men pt skal jeg kun bruge datene fra kolonne A til F.

Vil du have en liste over filnavne eller hvad mente du med at filnavne er i system?
De er sorteres efter alfabetisk orden fra AU til US og der er faktisk pt 24 filer.
Avatar billede jlemming Nybegynder
22. november 2007 - 13:55 #9
Ja, tak jeg vil gerne have en liste

med system mener jeg f.eks  fil1.xls, fil2.xls, fil3 osv.
Avatar billede olehen Nybegynder
22. november 2007 - 15:49 #10
Jeps, det er de..

Listen:
AU,CA,CN,CNT,CNW,DACH,ECE,EW,HK,HKE,ID,IDT,IN,PTG,SCA,SG,SGCHH,SGCHW,SGTH,SK,TH,THT,TW,US
Avatar billede olehen Nybegynder
22. november 2007 - 15:50 #11
alle .xls
Avatar billede jlemming Nybegynder
26. november 2007 - 08:56 #12
Hej olehen
Jeg beklager, jeg må desværre melde fra, da vi har fået sygdom i familien. så min tid ser ikke for god ud. Beklager
Avatar billede olehen Nybegynder
26. november 2007 - 13:57 #13
Hej Jlemming,

det var da ærgeligt.. Håber det bliver bedre for jer..

Jeg har selv været i gang med en kode a la den fra http://www.eksperten.dk/spm/413238.
Har også forsøgt med forskellige ActiveX 2.0, 2,1 at slå til. Lige lidt hjælper det...

Men den strander ved:

rsData.Open szSQL, szConnect, adOpenForwardOnly, _
                adLockReadOnly, adCmdText

Run-time error'-2147467259(80004005)':
Could not find installable ISAM.


Hvad betyder dette???



Min code der ud som følgende:

Sub GetAllData()
Dim FS As FileSearch
Dim FilePath As String, FileSpec As String
Dim i As Long
Dim v As Variant
Dim szSQL As String
Dim rTarget As Range
Dim ToSheet As Worksheet
'******************************
FilePath = "J:\updatere"
FileSpec = "*.xls"
Set ToSheet = ThisWorkbook.Worksheets("Data")
szSQL = "SELECT [CC],[Bk], [Fc],[Cur],[Max]/1000000,[Act]/1000000 FROM [Bk Ovw$]"
'******************************
'find excel filerne
Set FS = Application.FileSearch
With FS
  .LookIn = FilePath
  .Filename = FileSpec
  .SearchSubFolders = False          'skal underfoldere også søges
  .Execute
  If .FoundFiles.Count = 0 Then
      MsgBox ("Ingen filer fundet")
      Exit Sub
  End If
End With
'hent data
For i = 1 To FS.FoundFiles.Count
  Set rTarget = ToSheet.Range("A1000").End(xlUp).Offset(1, 0)
  rTarget.Offset(4, 0) = FS.FoundFiles(i)
  QueryWorksheet FS.FoundFiles(i), szSQL, rTarget
Next
End Sub

Public Sub QueryWorksheet(szFName As String, szSQL As String, rTarget As Range)
    Dim rsData As ADODB.Recordset
    Dim szConnect As String
    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & szFName & ";" & _
                "Extended Properties=Excel 11.5;"
   
    Set rsData = New ADODB.Recordset
    rsData.Open szSQL, szConnect, adOpenForwardOnly, _
                adLockReadOnly, adCmdText
               
   
    ' Check at data er modtaget
    If Not rsData.EOF Then
        rTarget.CopyFromRecordset rsData
    Else
        MsgBox "No records returned.", vbCritical
    End If
   
    ' Clean up.
    rsData.Close
    Set rsData = Nothing
End Sub
Avatar billede olehen Nybegynder
27. november 2007 - 22:58 #14
Lukker spg.
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