Когда вы откроете рабочую книгу sh, вы должны использовать метод Workbooks.Open. Рабочие книги (индекс) применяются только к рабочим книгам, которые уже открыты. Вы можете проверить, открыта ли рабочая книга, например,
Dim wb as workbook, isOpen as boolean, myName as string
myName = "PLC"
bIsOpen = false
For each wb in Workbooks
If wb.Name = myName Then
bIsOpen = true
End if
Next wb
и использовать результат на следующем шаге.