Hente data fra flere excelfiler automatisk
jeg vil gerne hente 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 med samme kolonneoverskrifter og ens opbygget for alle filerne.
Overskrifterne er i række 3 og dataområdet er fra række 4 til og med række Xfr sidste række. Dataene der skal overføres er fra række 3 og ned. Den skal ikke hente de 3 første rækker med over.
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 arket, hvorefter den gennemser alle filerne igen.
Filerne ligger altid i samme mappe og opdateringer bliver ført over og gemt med det oprindelige navn.
Sidste opdateringsdato skal gerne være i kolonne A i samle arket og kan hentes fra alle filerne i felt "B1".
Har set på flere forslag herinde men har endnu 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
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 slået til. Lige lidt hjælper det...
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
Kabbak er det ikke en opgave for dig? Jeg er sikker på du kan komme op med en løsning på problemet. Har har selvfølgelig også lov til at komme med forslag.
