her en vba kode som kan hente filer ind som faner (den henter det hele, men så kan man bagefter lave formateringen mm på alle fanerne)..
Obs filen skal hedde Master.xls , ellers skal koden rettes
Option Explicit
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
'32-bit API declarations
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) _
As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Function GetDirectory(Optional msg) As String
'fra
http://www_j-walk.com/ss/excel/tips/tip29.htm Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, x As Long, pos As Integer
' Root folder = Desktop
bInfo.pidlRoot = 0&
' Title in the dialog
If IsMissing(msg) Then
bInfo.lpszTitle = "Select a folder."
Else
bInfo.lpszTitle = msg
End If
' Type of directory to return
bInfo.ulFlags = &H1
' Display the dialog
x = SHBrowseForFolder(bInfo)
' Parse the result
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function
Sub Combine()
'inspireret af
http://www_ozgrid.com/forum/showthread.php?t=16343&s=bfb6951e1c9bd645f541835938440347&p=83045#post83045 'Definerer variabler
Dim fPath, fName, Master, fNamemaster, msg, filepth, FaneNavnFindes As String
Dim oprAntalFaner As Integer
On Error GoTo fejl
oprAntalFaner = Sheets.Count 'tæller antal faner før koden kører
msg = "Vælg Mappen med filerne"
fPath = GetDirectory(msg) & "\" ' alternativt skriv stien til fx "C:\tester\" for at undgå popup
fName = Dir(filepth & "*.xls")
Master = "Master.xls" 'det som din "samlefil hedder af navn - se i toppen når den er åben"
Do While fName <> ""
Workbooks.Open fPath & fName
Sheets(1).Copy After:=Workbooks(Master).Sheets(Workbooks(Master).Sheets.Count)
Workbooks(fName).Close SaveChanges:=False
FaneNavnFindes = findesFane(fName)
fNamemaster = fName
If FaneNavnFindes = 1 Then 'findes i forvejen - burde IKKE være et problem
fNamemaster = Replace(fName, ".xls", Replace(TimeValue(Now()), ":", "") & ".xls")
End If
Workbooks(Master).Activate 'så er vi sikker på at vi tager det rigtige ark
ActiveSheet.Name = Replace(fNamemaster, ".xls", "") 'omdøber fanen til filnavnet uden .xls
fName = Dir
Loop
MsgBox Sheets.Count - oprAntalFaner & " faner er importeret :)"
Exit Sub
fejl:
MsgBox "der er sket en fejl"
End Sub
Function findesFane(ByVal fName As String) As String
Dim i As Integer
Dim aktivFane As String
findesFane = 0 '0 er findes ikke
aktivFane = ActiveSheet.Name 'så ender vi hvor vi startet egentlig spildkode og just in case
For i = 1 To Sheets.Count 'kører igenmnem alle faner..
Sheets(i).Select
If ActiveSheet.Name & ".xls" = fName Then
findesFane = 1
End If
Next
Sheets(aktivFane).Select
End Function