Vba 正在尝试将工作表中的范围复制到新工作簿中。自学资料
以下是我所拥有的:Vba 正在尝试将工作表中的范围复制到新工作簿中。自学资料,vba,excel,export,export-to-excel,Vba,Excel,Export,Export To Excel,以下是我所拥有的: Sub exportDataAM() Dim wbS As Workbook, wbT As Workbook Dim wsS As Worksheet, wsT As Worksheet Set wbS = ThisWorkbook 'workbook that holds this code Set wsS = wbS.Worksheets("Recap").Range("A1:R5") wsS.Copy Set wbT = ActiveWorkbook 'assig
Sub exportDataAM()
Dim wbS As Workbook, wbT As Workbook
Dim wsS As Worksheet, wsT As Worksheet
Set wbS = ThisWorkbook 'workbook that holds this code
Set wsS = wbS.Worksheets("Recap").Range("A1:R5")
wsS.Copy
Set wbT = ActiveWorkbook 'assign reference asap
Set wsT = wbT.Worksheets("Recap").Range("A1:R5")
wsT.Name = "Recap" 'rename sheet
wbT.SaveAs wbS.Path & "\" & "Recap AM" & Format(Now, " dd-mm-yyyy ") 'save new workbook
End Sub
我得到了一个类型不匹配,这对于第6行的.Range来说没有意义。我知道还有其他的方法可以做到这一点,但是如果没有.Range,这是很好的,我想弄清楚为什么会这样
在此方面的任何帮助都将不胜感激。您已将变量
wsS
和wsT
声明为工作表。但是,您可以尝试将范围添加到变量中。这将导致不匹配
将变量声明为
范围
,或仅将工作表添加到变量中。以下操作应有效
Private Sub Copy()
Set newBook = Workbooks.Add
With newBook
.Title = "Recap Am"
.Subject = "RFQ"
.SaveAs Filename:="Recap.xls"
Dim rng As Excel.Range
Set rng = ThisWorkbook.Worksheets("SheetName").Cells.SpecialCells (xlCellTypeVisible)
rng.Copy newBook.Worksheets("Sheet1").Range("A1")
End With
End Sub
好的,非常感谢你的帮助。我想我还是很困惑。。为什么我可以将.worksheets添加到变量wbS,而不是.range?我想基本上是一样的。对不起,我不是专业人士,我对编码相当熟悉,但对VB比较新。我之所以这么说是因为,Workbook.worksheets().range()可以工作?它可以归结为变量声明。当您将
Dim wsS写入工作表时,系统会为工作表分配内存。当它收到一个范围而不是工作表时,会抛出一个错误。声明后,变量可以使用您描述的层次结构。你可以写“wsS.Range”(“A1”)“没问题。您不能将范围添加到变量中。这有意义吗?是的,确实有意义,我想我唯一的困惑是为什么我可以将.Worksheets添加到wbT中,而wbT已经声明为工作簿?很抱歉问了一些很明显的问题,但这确实帮助我理解这个困境,我真的很感激。我应该这样做吗?Set rcS=wsS.Range(“A1:E9”)
Yah我不知道该尝试什么,我已经尝试了一些方法。我终于得到了只复制到新工作簿的范围,但它没有格式。我会继续搞乱它,查看其他帖子。谢谢你的帮助