оставляя пока оставшуюся часть вашего кода в одиночку, для чего нужно следующее: установите «ws» для обозначения книги с именем «TEST» (я думаю, она должна быть уже открыта). Затем вы активируете его и дадите какой бы то ни было лист на имя «Лист1». После этого вы активируете лист «LV» в этом листе «TEST». Я не уверен, что вы пытаетесь сделать с этими шагами?
Set ws = Workbooks("TEST")
ws.Activate
ActiveSheet.Name = "Sheet1"
' Insert row and formula
ws.Worksheets("LV").Activate
ws.Sheets("LV").Rows("1:1").Select
Я предполагаю, что вы хотите нажать кнопку, открыть другой лист и затем ввести свой код на этом листе? Как насчет того, чтобы просто скопировать весь код, создать новую подпрограмму и затем изменить строку набора на то, что открывает другую рабочую книгу? Может быть, так:
Sub test()
Dim lastColumn As Integer
Dim rng_source As Range
Dim rng_Destination As Range
'Filepath of the file in some cell on the workbook (Pick one)
FilePath = ThisWorkbook.Sheets("NameOfTheSheet").Range("B2").Value
'Filepath of the file hard coded in here, simply copy the path and name (Pick one)
FilePath = "C:\Users\TheMan\Desktop\Test.xlsx"
'Open the file
Set ws = Workbooks.Open(FilePath, ReadOnly:=False)
'Now you do everything with the other workbook that you did to "ws" before.
'Not sure you really need/want this.
ws.Activate
ActiveSheet.Name = "Sheet1"
'Insert row and formula
ws.Worksheets("LV").Rows(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ws.Worksheets("LV").Range("A1").FormulaR1C1 = "=COLUMN(C)"
' Drag formula until last column
lastColumn = ws.Worksheets("LV").Cells(2, Columns.Count).End(xlToLeft).Column
Set rng_source = ws.Sheets("LV").Range("A1")
Set rng_Destination = ws.Sheets("LV").Range(rng_source.Cells(1), Cells(rng_source.Cells(1), lastColumn))
rng_source.AutoFill Destination:=rng_Destination, Type:=xlFillDefault
End Sub
Если честно, я не совсем понимаю, что вы пытаетесь делать со своим кодом. Я использую немецкий Excel, но для меня формула "= COLUMN (C)" в основном просто нумерует первую строку. Также вы устанавливаете диапазон («А1»), а затем запрашиваете строку этого диапазона. Почему? его всегда 1 и никогда не привыкаешь. Но если по какой-то другой причине вам действительно нужно его перетащить, см. Отредактированный код.