PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerExcelExcelFå in info från flera filer till en huvudfil Få in info från flera filer till en huvudfil
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2012-04-17 10:34
 

Hej.

Jag är helt ny med att använda mig av makron och har kollat runt lite de senaste dagarna för att försöka hitta info om hur man läser in flera excelfiler till en. Jag har hittat lite här och där, och tror att jag har fått en uppfattning om vad jag behöver göra. Och jag antar att för de som är vana så är detta ett enkelt "problem". Det jag är ute efter är:
* Jag har en huvudfil där jag trycker igång makrot
* Den ska då ta data (specifierat område) från alla filer som slutar på .xlsx i en specifik mapp utan att öppna upp dem (kommer vara omkring 100 filer)
* Datan ska sedan klistras in i huvudfilen
* Då data har tagits från en fil i den specifika mappen, så ska filen flyttas till en arkivmapp

Jag är säker på att jag glömt ngt/missuppfattat ngt med vad makron kan göra, men all hjälp vore uppskattat!

Nytt inlägg
 2012-04-20 12:19
 

Hej!

Detta är lite komplicerat och inte gjort i en handvänding. Låt oss ta det lite stegvis.

*** 1. Hämta filnamnen och deras sökväg ***

Börja med att göra en referens till Microsoft.Scripting.Tuntime (vilket vi gör i VBA-editorn, menyval verktyg/tools och alternativet referenser/references)

Skriv därefter koden nedan men korrigera sökvägen som nedan är c:\temp\done till den sökväg du vill använda. Testkör koden. Den kommer att i direktfönstret skriva ut namnen på filerna du vill öppna.

Public Sub FindXlsx()
    Dim objFso As Scripting.FileSystemObject
    Dim objFolder As Scripting.Folder
    Dim vFilePath As Variant

    Set objFso = New Scripting.FileSystemObject
    Set objFolder = objFso.GetFolder("c:\temp\done")
   
    For Each vFilePath In objFolder.Files
        If Right(vFilePath, 5 = ".xlsx" Then
            Debug.Print vFilePath
        End If
    Next
End Sub

 

*** 2. Öppna fil ***

Nästa pusselbit är att öppna en fil, välja ett ark i denna fil och flytta över data från det arket till det ark där vi vill att data skall hamna.

Metoden nedan

Public Sub OpenExcelFile()
    Dim wbImport As Workbook
    Dim wsImport As Worksheet
    Dim wsTarget As Worksheet
   
    Dim sFilePath As String
    Dim rngImport As Range
    Dim vData As Variant

    sFilePath = "C:\Temp\Done\CRE05_2011-11-06.xls"
   
    Set wbImport = Workbooks.Open(sFilePath)
    ' Här väljs ark 2, men det går även att ange namnet på arket, t.ex. wbImport.Worksheets("Blad 3")
    Set wsImport = wbImport.Worksheets(2)
    Set rngImport = wsImport.Range("A1", "B10") ' Dessa celler vill jag ha tag i.
    
    ' Här väljer vi arket vi vill att data skall hamna i
    Set wsTarget = ThisWorkbook.Sheets(1)
   
    ' Hämta data från källarket till en matris: vData
    vData = rngImport.Value
   
    ' Vi skall lägga värden i cellen A1 och fylla till höger och nedom denna cell.
    ' Därför gör vi en resize med hjälp av antalet rader respektive antalet kolumner i vData
    ' Till sist fyller vi detta resizade område med data från vData
    wsTarget.Range("A1").Resize(UBound(vData, 1), UBound(vData, 2)).Value = vData
   
    ' Glöm inte stänga. Argumnetet false innebär att vi inte sparar innan vi stänger
    Call wbImport.Close(False)
End Sub

 

*** 3. Kombinera finna filnamn och öppna filer ***
Sista steget får du knåpa ihop själv. Du har ovan en metod som tar fram sökvägen till filerna och en metod som öppnar filen med en viss sökväg. Ändra på den sista metoden så att den tar emot sökvägen som argument. Ändra vidare på koden så att den letar upp första tomma raden i målarket och börjar fylla på med data där. Då kommer det att fungera.

Lycka till!

/Kihlman


Kihlman

Excelforum drivs av Excelspecialisten som bedriver utveckling av program, utbildning samt support och hjälp i Excel och VBA.

www.excelspecialisten.se

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerExcelExcelFå in info från flera filer till en huvudfil Få in info från flera filer till en huvudfil

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter