Вам необходимо добавить рабочую книгу в качестве параметра к сабвуферу, например:
Option Explicit
Sub FnGetSheetsName(ByRef mainworkBook As Workbook)
Dim i As Long
For i = 1 To mainworkBook.Sheets.Count
'Either we can put all names in an array , here we are printing all the names in Sheet 2
mainworkBook.Sheets("Sheet2").Range("A" & i) = mainworkBook.Sheets(i).Name
Next i
End Sub
Sub TestIt()
FnGetSheetsName ActiveWorkbook
End Sub
Обновление: если вы хотите запустить макрос из командной строки, вы можете изменить имя TestIt на Auto_open итогда этот подпрограмма будет запускаться при открытии файла
Sub Auto_Open()
FnGetSheetsName ActiveWorkbook
End Sub
Другой способ - изменить событие workbook_open. Но вам нужно добавить этот код в модуль кода ThisWorkbook.
Private Sub Workbook_Open()
FnGetSheetsName ActiveWorkbook
End Sub