簡體   English   中英

將工作表復制到另一個工作簿

[英]Copy sheet to another workbook

我在一個帶有以下代碼的模塊中有一個子例程:

Set wkbGraph_Generator = ActiveWorkbook

在另一個模塊中,我有這個全局變量。

Public wkbCompiledDataTable As New Collection

在另一個模塊中,我有一個具有以下功能的子程序:

wkbCompiledDataTable.Add Workbooks.Open(FileName:=FilePath, ReadOnly:=True, IgnoreReadOnlyRecommended:=True)

我遇到問題的功能:

Function RTFN_GetDataActual(wkbCompiledDataTable As Collection, _
                            wkbGraph_Generator As Workbook)

    wkbCompiledDataTable(1).Sheets(1).Copy After:=wkbGraph_Generator.Sheets(Sheets.Count)
    wkbGraph_Generator.Sheets(Sheets.Count).Name = TagArray(1)

End Function

我得到

運行時錯誤“9”:下標超出范圍

如果我有時通過它會起作用。 我認為它在“Sheets.Count”中,因為有時sheets.count = 3 是不正確的。 其他時候 sheet.count 是正確的。

我認為在執行 sheet.count 時重點是錯誤的工作表。

代碼在那一行上有一個錯誤,然后我點擊了“wkbGraph_Generator”,有效地激活了它,代碼工作了。

好吧......昨晚為此掙扎......在發布問題時基本上想出了我自己的答案。

改變:

wkbCompiledDataTable(1).Sheets(1).Copy After:=wkbGraph_Generator.Sheets(Sheets.Count)

到:

wkbCompiledDataTable(1).Sheets(1).Copy After:=wkbGraph_Generator.Sheets(wkbGraph_Generator.Sheets.Count)

PS:網上到處都顯示簡單的“Sheets.Count”,用於將工作表從一個工作簿復制到另一個......根據我的發現......它似乎永遠不會起作用。

Sheets.Count有一個隱式的ActiveWorkbook 明確- 指定工作簿。 With語句是實現此目的的好方法。 請注意. Sheets所有實例之前,包括在.Sheets.Count

Function RTFN_GetDataActual(wkbCompiledDataTable As Collection, _
                        wkbGraph_Generator As Workbook)

    With wkbGraph_Generator
        wkbCompiledDataTable(1).Sheets(1).Copy After:=.Sheets(.Sheets.Count)
        .Sheets(.Sheets.Count).Name = TagArray(1)
    End With

End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM