У меня проблемы с копированием листа на новый лист - PullRequest
0 голосов
/ 29 ноября 2018

Я искал ответы, и все, кажется, согласны с тем, что я делаю, но по какой-то причине это просто не работает.Код выполняется и не генерирует сообщение об ошибке, но новый лист не генерируется.Все остальные правки на листе выполняются просто отлично.Любая помощь будет принята с благодарностью!

Я включу раздел кода, который выполняет эту операцию:

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)

Благодарю тех из вас, кто помогал!

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Значение CurrSheet никогда не инициируется.

Это должно исправить это

CurrSheet = ActiveSheet.Name
Set JohnWB = Workbooks.Open(Filename:=NamePath & "John\John Monthly Stats.xlsx")
0 голосов
/ 12 августа 2019

Отсутствует период, предшествующий Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count).

With JohnWB
    .Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
End With
0 голосов
/ 29 ноября 2018

Попробуйте посмотреть этого человека.Если это не поможет, я уверен, что если вы посмотрите на YouTube, вы найдете много таких видео.

https://youtu.be/G-KlCkMt9Fw

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...