Avatar billede andmm Nybegynder
20. juli 2010 - 08:49 Der er 1 kommentar

VBA kode til at kopire værdier i mange excel filer til en samle excelfil.

Indtil videre har jeg nedenstående kode som kan kopire celle A1 i det åbne regne ark og indsætte dem i en andet excel fil ved navn "anden".
Er der nogle som ved hvordan man skriver en kode som åbner alle excelfiler i en mappe, og kopire f.eks. celle A1 ind i excel-filen "anden"
Dvs. den skal åbne alle filerne i en angivet mappe, hvor der kopires celle A1 ind i filen "anden". Og hver gang den har kopiret skal den næste kopiring være på næste linje i regnearket "anden".

F.eks._______________
Der er 3 excelfiler i en mappe på c drevet.
Der står i excelfil
nr. 1: A1 står der 155
nr. 2: A1 står der 177
nr. 3: A1 står der 135

Så skal der i excel arket "anden" stå
A1 155
A2 177
A3 135
________________

Så koden skal åbne alle filerne i en angivet mappe. Kopire ind i filen "anden" og hoppe ned på en ny linje for hver kopiring




Sub COPYCELL()
Dim wbk As Workbook
Range("A1").Copy

strSecondFile = "S:\S3ASE\ingen_ekstranet_adgang\Intern Information\Intern Information\ASE\anden.xls"

Set wbk = Workbooks.Open(strSecondFile)
With wbk.Sheets("MyDate")
    Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
End With

End Sub
Avatar billede andmm Nybegynder
20. juli 2010 - 12:20 #1
JEg har denne kode fra en anden opgave som minder om dette problem
Sub IndsamlHjemlaan()
Dim fdBrowser As FileDialog, Mappenavn As String, Filnavn As String
Dim wb As Workbook, ws As Worksheet, samlws As Worksheet, _
lnr As Integer, rg As Range, rknr As Integer

Set fdBrowser = Application.FileDialog(msoFileDialogFolderPicker)

With fdBrowser
.Title = "Valg mappe hvorfra workbooks skal lases"
.Show
Mappenavn = .SelectedItems(1)
End With

Set samlws = Worksheets.Add
samlws.Name = "Indsaml hjemlån"
lnr = 1

Filnavn = Dir(Mappenavn & "\StudentID*.xls*", vbNormal)

Do While Len(Filnavn) > 0
Set wb = Workbooks.Open(Filename:=Filnavn, ReadOnly:=True)
Set ws = Worksheets("Hjemlån")
Set rg = ws.UsedRange

If lnr = 1 Then
  rg.Cells(1, 1).Copy
  samlws.Cells(1, 1).PasteSpecial
  rg.Cells(2, 1).Copy
  samlws.Cells(1, 2).PasteSpecial
  Range("A6", "G6").Copy
  samlws.Cells(1, 3).PasteSpecial
  lnr = lnr + 1
End If
For rknr = 7 To rg.Rows.Count
  rg.Cells(1, 2).Copy
  samlws.Cells(lnr, 1).PasteSpecial
  rg.Cells(2, 2).Copy
  samlws.Cells(lnr, 2).PasteSpecial
  rg.Rows(rknr).Copy
  samlws.Cells(lnr, 3).PasteSpecial
  lnr = lnr + 1
Next
Set rg = Nothing
Set ws = Nothing
wb.Close SaveChanges:=False
Filnavn = Dir
Columns("A:I").EntireColumn.AutoFit
Loop

End Sub
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
Kurser inden for grundlæggende programmering

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