我在将工作表复制到新工作表时遇到困难

时间:2018-11-29 13:47:03

标签: excel vba copy worksheet

我一直在寻找答案,并且一切似乎都与我的工作相吻合,但是由于某种原因,它只是无法正常工作。该代码将执行并且不会生成错误消息,但是不会生成新的工作表。对工作表的所有其他编辑都可以正常进行。任何帮助将不胜感激!

我将包括执行此操作的代码部分:

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 :(得分:1)

尝试看这个人。如果这样做没有帮助,我确定如果您环顾YouTube,您会发现很多像这样的视频。

https://youtu.be/G-KlCkMt9Fw

答案 1 :(得分:1)

从未初始化templateMixins的值。

这应该解决

CurrSheet

答案 2 :(得分:0)

缺少Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)之前的时间段。

With JohnWB
    .Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
End With