繁体   English   中英

将大量选定的数据从一个工作簿移动到另一个工作簿

Move a large set of selected data from one workbook to another

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试编写一些代码,以将大量用户选择的数据从一个打开的工作簿传输到另一个。 行/列的数量有所不同,目标工作簿中的起点也有所不同。 我收到调试运行时错误'13':在代码的最后一行键入不匹配 可能有一种更优雅的方法来进行某些操作,例如调整目标范围的大小,但其他所有操作似乎都按预期工作。

Public SourceWorkbook As Workbook
Public SourceWorksheet As Worksheet
Public DestWorkbook As Workbook
Public DestWorksheet As Worksheet
Public selectedRange As Range
Public selectedRows As Long
Public selectedColumns As Long
Sub SelectRange()
    Set SourceWorkbook = ActiveWorkbook
    Set SourceWorksheet = ActiveSheet
    'Display the Input Box to make selection
    On Error Resume Next
    Set selectedRange = Application.InputBox( _
        Prompt:="Select the range of cells you want to copy.", _
        title:="Select Range", _
        Default:=ActiveCell.Address, _
        Type:=8)
'   Was the Input Box canceled?
    If selectedRange Is Nothing Then
        MsgBox "Cancelled"
        Exit Sub
    End If
    selectedRange.Select
    'Set row and column number variables
    selectedRows = Selection.Rows.Count
    selectedColumns = Selection.Columns.Count
    'vbModeless Form that allows user to select another open workbook and start cell. The OK button simply calls the MoveData sub. 
    SwitchWorkbooksForm.Show vbModeless
End Sub

Sub MoveData()
    Dim DestRange As Range
    Set DestWorkbook = ActiveWorkbook
    Set DestWorksheet = ActiveSheet
'Start the desination range at the user select cell and Set it to the same size as the originally selected range
    StartRow = ActiveCell.Row
    finalRow = StartRow + selectedRows - 1
    StartColumn = ActiveCell.Column
    finalColumn = StartColumn + selectedColumns - 1
    Range(Cells(StartRow, StartColumn), Cells(finalRow, finalColumn)).Select
    Set DestRange = Selection

    'Debug error on the next line
    Workbooks(DestWorkbook).Worksheets(DestWorksheet).Range(DestRange).Value = _
    Workbooks(SourceWorkbook).Worksheets(SourceWorksheet).Range(selectedRange).Value
End Sub
1 个回复

您正在通过传入工作簿和工作表对象来使用Workbooks(...)Worksheets(...)集合。 您应该传递名称或使用直接分配的工作簿和工作表引用。

Workbooks(DestWorkbook.name).Worksheets(DestWorksheet.name).Range(DestRange.address).Value = _
   Workbooks(SourceWorkbook.name).Worksheets(SourceWorksheet.name).Range(selectedRange.address).Value

... 要么,

DestRange = selectedRange.Value

您不必继续重新定义已Set的范围对象的父级。

1 将大量单元格从一个工作簿移动到另一个工作簿

我对 VBA 相当陌生,而且我已经看过了,似乎无法在任何地方找到我需要的答案(如果我一直在寻找的话)。 这是一个简单的问题,但我想找出实现它的最佳方法。 我正在考虑将 750,000 个单元格从一个工作簿移动到另一个工作簿(有或没有格式都不是问题) 复制/移动它们的最佳或最快方法是什么? 先 ...

2018-10-09 12:51:14 1 33   excel/ vba
3 将命名范围数据从一个工作簿移动到另一个工作簿

我有两个相同的工作簿,其中有相同的命名范围。 在其中一个工作簿(wbSource)中,这些命名范围包含数据,而在另一个工作簿(wbTarget)中,命名范围为空。 我试图找到一个解决方案,如何将命名范围内的数据从wbSource传输到wbTarget。 如果有人在这里可以帮助我,我将不胜感 ...

2019-06-14 07:30:38 0 13   excel/ vba
4 使用Openpyxl将数据从一个工作簿移动到另一个工作簿

我正在尝试使用来自现有工作簿的数据创建一个新的工作簿。 现有工作簿非常大,因此我将其加载为只读工作簿。 因此,我需要遍历各行,但似乎无法弄清楚如何做到这一点并将数据获取到新工作簿中。 与此相关的是,数据来自A列,并且仅在B列中的单元格为“ IL”时才放入新工作簿中。 我不断收到不赞 ...

6 完成特定字段后,将数据从一个工作簿移动到另一工作簿

我看过许多其他文章,但找不到能够解决我遇到的问题的可行解决方案。 首先,我是VBA的新手,我的意思是总计。 我有一个电子表格,当我们成功与某人联系时,会在其中输入日期。 然后,需要将这些数据剪切并粘贴到主归档中,以便我们证明可以在需要时调用它们。 我需要的是一种将数据所在的整行剪切并粘贴 ...

7 将宏从一个Excel工作簿移动到另一个

我有带有宏的工作簿的2个版本。 最新版本是4。我的所有测试用例(测试用例的数量确实很多)都用Excel Workbook的宏的版本3编写。 现在,我需要将工作簿更新为宏的版本4。 除了复制/粘贴,最好的方法是什么? ...

9 将工作表从一个工作簿移动到另一个工作簿并更新公式(链接)

我已经解决了这个问题,对代码进行了一些调整,现在可以正常工作了。 我不会尝试发布新代码,因为每次尝试时,我最终都会在代码块的上方和下方出现一些代码。 我们在使用共享工作簿时遇到了主要问题,因此,为了快速解决问题,我编写了一些代码将一些工作表从共享工作簿移至单个工作簿,每个用户可以单独打 ...

10 将行从一个工作簿移动到另一个工作簿

我是StackOverflow的新手,但是已经在解决此问题已有一段时间了,并且非常棘手。 现在,我的代码从文本框中获取“名称”输入,如果A列中的数据与输入的名称匹配,它将从该工作表的整个行复制数据,将其复制到另一个工作表,然后从原始工作表,并告诉用户移动了多少行。 此代码在下面列出: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM