Я искал ответы, и все, кажется, согласны с тем, что я делаю, но по какой-то причине это просто не работает.Код выполняется и не генерирует сообщение об ошибке, но новый лист не генерируется.Все остальные правки на листе выполняются просто отлично.Любая помощь будет принята с благодарностью!
Я включу раздел кода, который выполняет эту операцию:
Function CheckCurrSheet() As Boolean
Dim NamePath As String
Dim CurrSheet As String
Dim JohnWB As Workbook
Dim ws As Worksheet
NamePath = "C:\Data Files\2018\" 'Directory path for files.
Set JohnWB = Workbooks.Open(Filename:=NamePath & "John\John Monthly Stats.xlsx")
If Not WorksheetExists(CurrSheet, JohnWB) Then
CheckCurrSheet = False
With JohnWB
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
End With
Else
CheckCurrSheet = True
End If
End Function
Function WorksheetExists(shtName As String, Optional ByVal wb As Workbook) As Boolean
Dim sht As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(shtName)
On Error GoTo 0
WorksheetExists = Not sht Is Nothing
End Function
Обновление: я только что узнал, что команда для копирования рабочей таблицы происходитв другую открытую книгу, а НЕ в JohnWB, несмотря на то, что я специально ссылаюсь на нее с помощью оператора WITH JohnWB ....
Другая книга должна быть открыта в это время, поэтому я не могу простопросто закройте его.У кого-нибудь есть идея о том, как конкретно убедиться, что команда COPY идет в книгу JohnWB, а не где-то еще?
Обновление: мне удалось заставить ее работать ....
' Old way of trying, which didn't work.
'With JohnWB
' Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
'End With
' New way of trying, which works!
JohnWB.Sheets(Sheets.Count).Copy After:=JohnWB.Sheets(Sheets.Count)
Благодарю тех из вас, кто помогал!