Avatar billede Kriegbaum Juniormester
11. januar 2012 - 11:46 Der er 11 kommentarer og
1 løsning

Hent en værdi fra en fil til en anden

Hej jeg vil lige hører om der er nogle herinde der kan hjælpe mig.

Jeg har lavet en ordreseddel i Excel 2003.

Der er en ordre pr. excel fil

C:\Documents and Settings\Sten\Dokumenter\Ordreseddeler

De hedder Ordre.015244 og Ordre.015245 osv


mit spørgsmål er så. kan man trække en værdi ud fra celle O44, i alle de filer der ligger i mappen

sådan at det automatisk bliver lagt i en anden fil og lagt sammen så jeg nemmer kan få et overblik over hvad der er skrevet ordre for?

Jeg har prøvet med at oprette en bro. men jeg syndes det var lige bøvlet. kan det gøre på en anden måde


Venlig Hilsen

Jesper
Avatar billede supertekst Ekspert
11. januar 2012 - 13:54 #1
Er det kun en total eller ordrenr & værdi +total?

O44 er det på Ark1 eller?
Avatar billede Mads Larsen Nybegynder
11. januar 2012 - 14:07 #2
Sub HentData()

RowNr = 1
Kolonne = 1
  Dim i As Integer
  With Application.FileSearch
    .LookIn = "C:\temp\Excel test\Filer"
    .FileType = msoFileTypeExcelWorkbooks

      If .Execute > 0 Then

        For i = 1 To .FoundFiles.Count
            Filnavn = .FoundFiles(i)
            strarr = Split(Filnavn, "\")
            xlsfil = "[" & strarr(UBound(strarr)) & "]"
            Navn = ""
           
            For o = 0 To UBound(strarr) - 1
                Navn = Navn + strarr(o) & "\"
            Next o
           
            Dim Formel As String
            Formel = "='" & Navn & xlsfil & "Ark1'!O1"
                                   
            Cells(RowNr, Kolonne).Formula = Formel
            RowNr = RowNr + 1
        Next i
      End If
  End With
End Sub

Det kan være du kan bruge det her til noget :)
Avatar billede scape-goat Nybegynder
11. januar 2012 - 14:13 #3
Der er et tilføjelses program til Excel der hedder RDB Merge.

Det kan samle oplysninger fra samme celle fra flere excel ark.

Se nedenstående link:

http://www.rondebruin.nl/merge.htm
Avatar billede supertekst Ekspert
11. januar 2012 - 14:44 #4
Const drevSTi = "C:\Users\peter\Desktop\Kriegbaum\"      'JUSTERES
Rem const drevSTi = "C:\Documents and Settings\Sten\Dokumenter\Ordreseddeler"
Dim total As Double, xlsObj
Public Sub optællingsSystem()
    total = 0
    traverserMappe drevSTi
   
'    MsgBox total
    Range("A1") = total
End Sub
Private Sub traverserMappe(mappesti)
Dim fs, f, f1, fc, fNavn As String, ext As String, navnSplit As Variant

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(mappesti)
    Set fc = f.Files
   
    For Each f1 In fc
        If InStr(LCase(f1), "ordre.") > 0 Then
            Set xlsObj = CreateObject("Excel.Application")
            xlsObj.Workbooks.Open f1
            total = total + xlsObj.ActiveWorkbook.Sheets(1).Range("O44")
            xlsObj.Quit
            Set xlsObj = Nothing
        End If
    Next
End Sub
Avatar billede Kriegbaum Juniormester
11. januar 2012 - 14:50 #5
Supertekst.

Det ville være fint med ordre nr, værdi og total

det er i celle o44  "Ark1" hedder Ordre
Avatar billede supertekst Ekspert
11. januar 2012 - 15:03 #6
Ok - vender tilbage senere..
Avatar billede Kriegbaum Juniormester
11. januar 2012 - 15:52 #7
det lyder super
Avatar billede supertekst Ekspert
11. januar 2012 - 17:51 #8
Rem Version 2
Const drevSTi = "C:\Users\peter\Desktop\Kriegbaum\"      'JUSTERES
Rem const drevSTi = "C:\Documents and Settings\Sten\Dokumenter\Ordreseddeler"

Const tælOpFraFileDerIndeholder = "ordre."
Dim total As Double, xlsObj
Dim ræk As Long, ordreNr As Long, værdi As Double
Public Sub optællingsSystem()
    total = 0
    ræk = 1
   
    traverserMappe drevSTi
End Sub
Private Sub traverserMappe(mappesti)
Dim fs, f, f1, fc

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(mappesti)
    Set fc = f.Files
   
    For Each f1 In fc
        If InStr(LCase(f1), tælOpFraFileDerIndeholder) > 0 Then
            Set xlsObj = CreateObject("Excel.Application")
            xlsObj.Workbooks.Open f1
            værdi = xlsObj.ActiveWorkbook.Sheets(1).Range("O44")
            total = total + værdi
            ordreNr = isolerOrdreNr(f1.Name)
            xlsObj.Quit
            Set xlsObj = Nothing
           
            Range("A" & ræk) = ordreNr
            Range("B" & ræk) = værdi
            ræk = ræk + 1
        End If
    Next
   
    Range("B" & ræk) = total
End Sub
Private Function isolerOrdreNr(filNavn)
Dim p As Byte, navn As String
    navn = Mid(filNavn, 7)                      'ordrenr isoleres
    isolerOrdreNr = Left(navn, Len(navn) - 4)  '.xls fjernes
End Function
Avatar billede Kriegbaum Juniormester
12. januar 2012 - 07:49 #9
er der noget jeg skal fjerne eller lave om i den eller skal den bare sættes ind og så virker der?
Avatar billede supertekst Ekspert
12. januar 2012 - 09:22 #10
Const drevSTi = "C:\Users\peter\Desktop\Kriegbaum\"      'JUSTERES
Rem const drevSTi = "C:\Documents and Settings\Sten\Dokumenter\Ordreseddeler"

Slet den øverste og fjern Rem i den næste. Sæt koden ind i en ny xls-fil under Ark1. Denne fil kan du evt. kalde system.xls.

Ellers er du velkommen til at sende en mail - så returnere jeg min model. @-adresse under min profil.
Avatar billede Kriegbaum Juniormester
12. januar 2012 - 09:30 #11
Jeg har lige sendt dig en mail
Avatar billede Kriegbaum Juniormester
13. januar 2012 - 14:29 #12
Supertekst
Mange tak for hjælpen.
det har været en stor hjælp..


IT-GuFFe
Dit foreslag virkede faktisk også men der manglede jeg ordre nr. og total beløb.

men som koden var virkede den super
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