Как предположил @BruceWayne, это проблема с выбором правильной книги.Как AddIn
, ThisWorkbook
будет рабочей книгой AddIn
, в то время как ActiveWorkbook
(перед открытием других) будет рабочей книгой, в которую вы запускаете AddIn
.
Простая замена Thisworkbook
с ActiveWorkbook
в вашем сценарии не будет работать, потому что вы просто скопируете листы из недавно открытой рабочей книги в ту же самую.
Хорошая идея объявить переменные для хранения этой информации, тогда выможно открыть столько книг, сколько вы хотите и из любого места.
См. ниже:
Application.ScreenUpdating = False
Dim wbDst As Workbook: Set wbDst = ActiveWorkbook 'Can also use Worbooks("book name here")
Dim wbSrc As Workbook
Dim Sht As Worksheet
Dim FolderPath As String: FolderPath = GetFolder() & "\"
Dim FileName As String: FileName = Dir(FolderPath & "*.xls*")
Do While FileName <> ""
Set wbSrc = Workbooks.Open(FileName:=FolderPath & FileName, ReadOnly:=True)
For Each Sht In wbSrc.Worksheets
Sht.Copy After:=wbDst.Sheets(1)
Next Sht
wbSrc.Close
FileName = Dir()
Loop
Application.ScreenUpdating = True