Excel VBA赢得';不要复制下一个表,而是继续粘贴第一个表
我有以下代码Excel VBA赢得';不要复制下一个表,而是继续粘贴第一个表,excel,vba,Excel,Vba,我有以下代码 Sub Workbook_Open() Dim x As Workbook Dim y As Workbook Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.DisplayAlerts = False Application.AlertBeforeOverwriting = False Set x = ThisWorkbook Set
Sub Workbook_Open()
Dim x As Workbook
Dim y As Workbook
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Application.AlertBeforeOverwriting = False
Set x = ThisWorkbook
Set y = Workbooks.Open("N:\\REAL PATH")
'Opens Data and Pastes Values
x.Worksheets("Event Data").Range("Table1[#All]").Copy
y.Worksheets("CoreData").Range("A1").PasteSpecial Paste:=xlPasteValues
x.Worksheets("Comments").Range("Table2[#All]").Copy
y.Worksheets("CommentsData").Range("A1").PasteSpecial Paste:=xlPasteValues
x.Worksheets("Match Data").Range("Table3[#All]").Copy
y.Worksheets("MatchDetails").Range("A1").PasteSpecial Paste:=xlPasteValues
y.Close SaveChanges:=True
ActiveWorkbook.Save
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
运行代码后,我转到名为y的工作簿,发现表1的数据已经粘贴了三次。因此,基本上,y.工作表行工作正常,但它不会复制表2或表3中的数据。如果我按ctrl+g并键入“Table2[#All]”,我将进入完整的表2,这样我就知道该范围存在,VBA应该能够找到它。表1包含相当多的数据(从131k行到DZ的列),但我不知道这是否相关 我发现创建和使用中间变量有助于解决数据传输中的任何问题。另外,您可以在调试时查看这些变量,以验证它们是否正确设置 试着做以下几点:
Option Explicit
Sub Example()
Dim srcWB As Workbook
Dim dstWB As Workbook
Set srcWB = ThisWorkbook
Set dstWB = Workbooks.Open("N:\\REAL PATH")
Dim srcData As Range
Dim dstData As Range
Set srcData = srcWB.Sheets("Event Data").Range("Table1[#All]")
Set dstData = dstWB.Sheets("CoreData").Range("A1").Resize(srcData.Rows.Count, _
srcData.Columns.Count)
dstData.Value = srcData.Value
Set srcData = srcWB.Sheets("Comments").Range("Table2[#All]")
Set dstData = dstWB.Sheets("CommentsData").Range("A1").Resize(srcData.Rows.Count, _
srcData.Columns.Count)
dstData.Value = srcData.Value
Set srcData = srcWB.Sheets("Match Data").Range("Table3[#All]")
Set dstData = dstWB.Sheets("MatchDetails").Range("A1").Resize(srcData.Rows.Count, _
srcData.Columns.Count)
dstData.Value = srcData.Value
dstWB.Close SaveChanges:=True
End Sub
您还混淆了使用此工作簿
和以后使用活动工作簿
。现在还不清楚你在存哪一块钱
这种类型的“仅值”数据拷贝速度非常快,您可能不需要禁用事件或屏幕更新。如果您还有捕获工作表更改的事件处理程序,则可能仍然需要禁用这些变量。我发现,创建和使用中间变量可以极大地帮助解决数据传输中的任何问题。另外,您可以在调试时查看这些变量,以验证它们是否正确设置 试着做以下几点:
Option Explicit
Sub Example()
Dim srcWB As Workbook
Dim dstWB As Workbook
Set srcWB = ThisWorkbook
Set dstWB = Workbooks.Open("N:\\REAL PATH")
Dim srcData As Range
Dim dstData As Range
Set srcData = srcWB.Sheets("Event Data").Range("Table1[#All]")
Set dstData = dstWB.Sheets("CoreData").Range("A1").Resize(srcData.Rows.Count, _
srcData.Columns.Count)
dstData.Value = srcData.Value
Set srcData = srcWB.Sheets("Comments").Range("Table2[#All]")
Set dstData = dstWB.Sheets("CommentsData").Range("A1").Resize(srcData.Rows.Count, _
srcData.Columns.Count)
dstData.Value = srcData.Value
Set srcData = srcWB.Sheets("Match Data").Range("Table3[#All]")
Set dstData = dstWB.Sheets("MatchDetails").Range("A1").Resize(srcData.Rows.Count, _
srcData.Columns.Count)
dstData.Value = srcData.Value
dstWB.Close SaveChanges:=True
End Sub
您还混淆了使用此工作簿
和以后使用活动工作簿
。现在还不清楚你在存哪一块钱
这种类型的“仅值”数据拷贝速度非常快,您可能不需要禁用事件或屏幕更新。如果您还有捕获工作表更改的事件处理程序,则可能仍需要禁用这些功能。有趣。您可能只需要使用值传输,就可以避免使用剪贴板。值传输基本上就像粘贴为值一样工作?我听说使用较小的数据集速度更快,但我实际上不知道如何编写。很有趣。您可能只需要使用值传输,就可以避免使用剪贴板。值传输基本上就像粘贴为值一样工作?我听说更小的数据集更快,但我实际上不知道如何编写。工作起来非常有魅力!看起来我可以访问剪贴板,而这段代码正在运行,这是一个巨大的加号m1。工作像一个绝对的魅力!看起来我可以在代码运行时访问剪贴板,这对m1来说是一个巨大的优势。