Worksheets("Blad1").Range(Cells(eRow, 1), Cells(eRow, 7)).PasteSpecial Paste:=xlPasteValues
Men det blir lite kinkigt eftersom du har stängt källfilen innan du klistrar in.
Här är en variant där du låser målområdet redan innan du öppnar filen med anläggningsid och klistrar in innan du stänger den filen:
Dim mål As Range eRow = Blad1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Set mål = Worksheets("Blad1").Range(Cells(eRow, 1), Cells(eRow, 7))
Workbooks.Open (Filepath & MyFile) Range("P38").Copy eRow = Blad1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row mål.PasteSpecial Paste:=xlPasteValues Workbooks(MyFile).Close ' OBS jag ändrade så att du anger vilken fil som skall stängas, det minskar risken för att du stänger målfilen
För övrigt
Det finns egentligen ingen anledning att använda klipp/klistra om du bara vill skicka vidare ett värde. Tilldela bara MålCellen värdet från KällCellen. Det gör en ENORM skillnad i hastighet om ditt makro skall loopa några tusen gånger.
Dvs ersätt klipp och klistra i din kod med något i stil med:
Worksheets("Blad1").Range(Cells(erow, 1), Cells(erow, 7)).value =Range("P38").value
Återigen blir det svårt för excel att veta vilket blad du egentligen menar (vilken P38?). En variant är att Skapa en variabel som lagrar värdet från P38, typ:
Workbooks.Open (Filepath & MyFile) TempVariabel = Range("P38").Value Workbooks(MyFile).Close eRow = Blad1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Worksheets("Blad1").Range(Cells(eRow, 1), Cells(eRow, 7)).Value = TempVariabel
Men även här bygger det på att du står i rätt blad när du "klistrar in"
En bättre variant är att låsa målområdet redan innan du öppnas källfilen (samma som inklistringen ovan)
Det här skulle vara bättre, fast inte bra.
Sub test() Dim Filepath As String Dim MyFile As String Dim eRow As Integer Dim rTargetRange As Range
Filepath = "C:\tmp\" MyFile = "Anläggningsfil.xlsx"
' här borde du även låsa "mål-arbetsboken" eftersom du fortfarande kan hamna i fel flik eller liknande
' Hitta sista tomma i kolumn A eRow = Blad1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
' Lås målet innan du börjar öppna andra filer, skulle vara ännu bättre om du låst arbetsboken. Set rTargetRange = Worksheets("Blad1").Range(Cells(eRow, 1), Cells(eRow, 7))
'Hämtar Stationslittera/AnläggningsID ' Återigen, du har inte angett vilken arbetsblad denskall titta i i källdatafilen. Det här fungerar bara om det endast finns en flik eller om om personen som öppnade filen innan dig har lämnat rätt fliken öppen.
Workbooks.Open (Filepath & MyFile) rTargetRange.Value = Range("P38").Value Workbooks(MyFile).Close End Sub
Kort sagt. Försök att ange dina arbetsböcker och arbetsblad ordentligt. Det sparar dig många sorger
|