我正在尝试使用我的代码调用我的工作表的几个数组。
ThisWorkbook.Sheets(Array("Sheet1", "Sheet3"))
ThisWorkbook.Sheets(Array("Sheet2", "Sheet5"))我想知道是否有任何方法可以设置一个类似于下面的变量:
Dim ArrayOne As String
Dim ArrayTwo As String
ArrayOne = ThisWorkbook.Sheets(Array("Sheet1", "Sheet3"))
ArrayTwo = ThisWorkbook.Sheets(Array("Sheet2", "Sheet5"))
ArrayOne 'Call this Array then save
Filename:="C:\Data\testfile.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _,
CreateBackup:=False
ArrayTwo 'Call this array then save
Filename:="C:\Data\testfile.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _,
CreateBackup:=False 如果你能帮助我,请让我知道!
发布于 2013-06-18 21:00:08
尝试使用记录宏功能。它将允许您选择多个工作表,然后将它们复制到新书中。下一步,保存这本书,你就到了那里。现在对代码进行修补,让它以您想要的方式工作。
归根结底是:
ThisWorkbook.Sheets(Array("Sheet1", "Sheet3")).Copy
ActiveWorkbook.SaveAs ...如果您想要预定义数组,这也很容易做到;这些数组只需包含表的名称。可以使用变量变量创建数组:
Dim ArrayOne as Variant
ArrayOne = Array("Sheet1", "Sheet3")并在.Sheets().Copy中使用它:
ThisWorkbook.Sheets(ArrayOne).Copy发布于 2013-06-18 21:12:40
以下是VBA中的数组工作方式的示例:
Sub Example()
Dim ArrayOne() As String
Dim ArrayTwo() As String
Dim ArrayThree As Variant
Dim i As Long
ReDim ArrayOne(1 To Sheets.Count)
ReDim ArrayTwo(1 To 2)
For i = 1 To Sheets.Count
ArrayOne(i) = Sheets(i).Name
Next
ArrayTwo(1) = "Sheet1"
ArrayTwo(2) = "Sheet2"
ArrayThree = Array("Sheet1", "Sheet3")
End Sub现在,据我所知,您不想使用数组。您可以在工作簿中引用工作表,如下所示:
Sheets("SheetName") 'SheetName is the name of your sheet
Sheets(1) '1 = sheet index将工作表复制到要保存的新工作簿的一种方法是:
Sub Example()
Dim wkbk As Workbook
ThisWorkbook.Sheets("Sheet1").Copy
Set wkbk = ActiveWorkbook
ThisWorkbook.Sheets("Sheet3").Copy After:=wkbk.Sheets(wkbk.Sheets.Count)
wkbk.SaveAs FileName:="C:\New Excel Book.xlsx", _
FileFormat:=xlOpenXMLWorkbook
wkbk.Close
End Sub发布于 2014-04-11 21:01:47
我在尝试创建动态数组时遇到了类似的问题(不知道有多少张表需要我处理)。我简单地使用了这个:
Sub copyArrayOfSheets()
Dim loopArray() As Variant
ReDim Preserve loopArray(1 To 1)
loopArray(1) = "Sheet1" ' a Sheet I know I need to export
j = 1
For Each loopSheet In ThisWorkbook.Sheets
If loopSheet.Name <> "Sheet1" Then
theName = loopSheet.Name
j = j + 1
ReDim Preserve loopArray(1 To j)
loopArray(j) = theName ' Assign the name of the sheets to j-th position of loopArray()
End If
Next loopSheet
Sheets(loopArray()).Copy
Set newBook = ActiveWorkbook
newBook.Activate
End Sub希望这对你有任何帮助。
https://stackoverflow.com/questions/17169208
复制相似问题