Попробуйте, код довольно понятен, но если вам нужно что-то понять, дайте мне знать.
Option Explicit
Sub CopyPaste()
Dim wb As Workbook, wbSource As Workbook, ws As Worksheet, wsSource As Worksheet 'variables for workbooks and sheets
Dim LastRow As Long, LastCol As Integer 'variables for number rows and columns
'To avoid selecting you must reference all the workbooks and sheets you are working on, and this is how:
Set wb = ThisWorkbook 'this way you reference the workbook with the code
Set ws = wb.Sheets("ChangeThis") 'name of the worksheet where you are going to pase
Set wbSource = Workbooks.Open("C:\Users\xxx\Desktop\NewFolder\asal-gc.xlsx", UpdateLinks:=False, ReadOnly:=True) 'the source data workbook
Set wsSource = wbSource.Sheets("Sheet1") 'the source data worksheet
'Finding the range you want to copy
With wsSource
LastCol = .Cells(6, .Columns.Count).End(xlToLeft).Column 'this will get the last column on row 6, change that number if you need to
LastRow = .Cells(.Rows.Count, LastCol).End(xlUp).Row 'this will get the last row on the last column, change the number of the col if there is more data on another column
'this is taking the whole range from A1 to last col and row
.Range("A1", .Cells(LastRow, LastCol)).Copy _
Destination:=ws.Range("A1") 'this is where it will paste, if not range A1, change it wherever you need
End With
wbSource.Close Savechanges:=False 'this will close the source data workbook without saving
End Sub
Кроме того, вам не нужно знать букву столбца, вы можете работать с ячейками (Row, Column), они работают с их порядковым номером: 1 = A, 2 = B и для строк равно числу в строке.