关于#vba#的问题,如何解决?(关键词-批量复制粘贴)

如何用vba实现跨工作簿批量复制粘贴(选择工作簿a的某一个工作表的指定区域去复制粘贴到另一份工作簿b的某工作表的某区域)
刚学习的,一直不太懂,想问问大家,或者有没有相关的这类功能工具呢,有很多工作簿需要批量操作

vba貌似可以,我对vba也是刚了解,认为它能做很多事情,可以帮你尝试下,已经实现,自己打开宏编辑下换路径

img

Sub Test()
    Dim sourcePath As String
    Dim destinationPath As String
    Dim sourceWorkbook As Workbook
    Dim destinationWorkbook As Workbook
    Dim sourceWorksheet As Worksheet
    Dim destinationWorksheet As Worksheet
    Dim sourceRange As Range
    Dim destinationRange As Range
    
    sourcePath = "C:\Users\Microsoft\Desktop\4.XLSX"
    destinationPath = "C:\Users\Microsoft\Desktop\3.XLSX"
    
    Set sourceWorkbook = Workbooks.Open(sourcePath)
    Set destinationWorkbook = Workbooks.Open(destinationPath)
 
    Set sourceWorksheet = sourceWorkbook.Worksheets(1) 
    Set destinationWorksheet = destinationWorkbook.Worksheets(1) 

    Set sourceRange = sourceWorksheet.Range("A1:B3") 
    Set destinationRange = destinationWorksheet.Range("A3:B5") 
    
    sourceRange.Copy destinationRange
    
    sourceWorkbook.Close SaveChanges:=False
    destinationWorkbook.Close SaveChanges:=True
End Sub

Sheets("Sheet1").Select
Range("A1").Select
Selection.Copy  'A1复制到剪贴板

Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste  ' 将剪贴板内容粘贴到A1

要使用 VBA 在多个工作簿之间进行批量复制粘贴,以下是一个示例代码:

Sub CopyRangeToAnotherWorkbook()  
  Dim SourceWorkbook As Workbook  
  Dim TargetWorkbook As Workbook  
  Dim SourceRange As Range  
  Dim TargetRange As Range
  ' 设置源工作簿和目标工作簿的路径  
  Set SourceWorkbook = Workbooks.Open("路径\与\文件名.xlsx")  
  Set TargetWorkbook = Workbooks.Open("路径\与\文件名.xlsx")
  ' 设置源范围和目标范围  
  Set SourceRange = SourceWorkbook.Range("A1:B10") ' 示例:源范围为 A1 到 B10  
  Set TargetRange = TargetWorkbook.Range("C1:D10") ' 示例:目标范围为 C1 到 D10
  ' 复制并粘贴源范围到目标范围  
  SourceRange.Copy  
  TargetRange.PasteSpecial xlPasteValues
  ' 关闭工作簿  
  SourceWorkbook.Close SaveChanges:=False  
  TargetWorkbook.Close SaveChanges:=False  
End Sub  

在使用此代码之前,请确保将 路径\与\文件名.xlsx 替换为您要使用的实际工作簿文件名。同时,根据需要更改源范围和目标范围。
要运行此代码,请在 Excel VBA 编辑器中按下 F5,或者将代码复制到模块中,然后使用 Run > Run Sub/Function > CopyRangeToAnotherWorkbook 运行。

VBA批量复制粘贴功能,可以参考下面链接

http://t.csdn.cn/byCKW

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

工具 链接: https://pan.baidu.com/s/13NUAPBZ_1ZYpi_9vAtPUrw 提取码: ftsj

VBA来实现跨工作簿的批量复制粘贴

Sub CopyPasteData()
    Dim sourceWorkbook As Workbook
    Dim destinationWorkbook As Workbook
    Dim sourceWorksheet As Worksheet
    Dim destinationWorksheet As Worksheet
    
    ' 设置源工作簿和目标工作簿
    Set sourceWorkbook = Workbooks.Open("C:\路径\源工作簿.xlsx")
    Set destinationWorkbook = Workbooks.Open("C:\路径\目标工作簿.xlsx")
    
    ' 设置源和目标工作表
    Set sourceWorksheet = sourceWorkbook.Worksheets("Sheet1")
    Set destinationWorksheet = destinationWorkbook.Worksheets("Sheet1")
    
    ' 定义源和目标区域
    Dim sourceRange As Range
    Dim destinationRange As Range
    
    Set sourceRange = sourceWorksheet.Range("A1:B10") ' 源范围
    Set destinationRange = destinationWorksheet.Range("A1") ' 目标范围
    
    ' 复制和粘贴数据
    sourceRange.Copy destinationRange
    
    ' 关闭工作簿,保存更改
    sourceWorkbook.Close SaveChanges:=False
    destinationWorkbook.Close SaveChanges:=True
    
    ' 清除对象引用
    Set sourceRange = Nothing
    Set destinationRange = Nothing
    Set sourceWorksheet = Nothing
    Set destinationWorksheet = Nothing
    Set sourceWorkbook = Nothing
    Set destinationWorkbook = Nothing
    
End Sub

要使用VBA实现跨工作簿的批量复制粘贴操作,你可以按照以下步骤进行操作:

打开需要操作的两个工作簿:首先,打开源工作簿A和目标工作簿B。

在源工作簿A的VBA编辑器中创建一个新的宏:按下Alt + F11打开VBA编辑器,然后在“项目资源管理器”面板中选择源工作簿A,并在其下创建一个新的模块。

在新创建的VBA模块中编写代码:在新的模块中,编写VBA代码以完成复制粘贴操作。以下是一个示例:

Sub CopyPasteData()
    Dim sourceWorkbook As Workbook
    Dim targetWorkbook As Workbook
    Dim sourceWorksheet As Worksheet
    Dim targetWorksheet As Worksheet
    Dim sourceRange As Range
    Dim targetRange As Range
    
    ' 设置源工作簿和目标工作簿
    Set sourceWorkbook = Workbooks("SourceWorkbook.xlsx")
    Set targetWorkbook = Workbooks("TargetWorkbook.xlsx")
    
    ' 设置源工作表和目标工作表
    Set sourceWorksheet = sourceWorkbook.Worksheets("Sheet1")
    Set targetWorksheet = targetWorkbook.Worksheets("Sheet2")
    
    ' 设置源区域和目标区域
    Set sourceRange = sourceWorksheet.Range("A1:B10") ' 修改为你的源区域
    Set targetRange = targetWorksheet.Range("C1:D10") ' 修改为你的目标区域
    
    ' 复制源区域到目标区域
    sourceRange.Copy targetRange
    
    ' 关闭源工作簿
    sourceWorkbook.Close SaveChanges:=False
End Sub

请注意,以上代码中的工作簿和工作表名称需要根据你的实际情况进行修改。

运行宏:返回Excel界面,按下Alt + F8打开宏对话框,选择刚才创建的宏并点击“运行”按钮。这将执行你的VBA代码,将源工作簿A中的指定区域复制到目标工作簿B中的指定区域。
以此方式,你可以实现在VBA中跨工作簿进行批量复制粘贴的操作。记得保存并备份你的工作簿文件,以防发生意外情况。

可以实现,这属于基本操作,之前我实现过一个python语言实现的这个功能。大致的代码哈,你自己改改:

'选择要复制的区域  
    Set rng = wsA.Range("起始单元格:结束单元格")  
      
    '计算工作簿B的指定区域最后一行  
    lastRowB = wsB.Cells(wsB.Rows.Count, "A").End(xlUp).Row + 1  
      
    '将复制的区域粘贴到工作簿B的指定区域  
     rng.Copy wsB.Cells(lastRowB, "A")  

用python来处理,更方便

Sub CopyPasteData()
    Dim sourceWorkbook As Workbook
    Dim destinationWorkbook As Workbook
    Dim sourceWorksheet As Worksheet
    Dim destinationWorksheet As Worksheet
    Dim sourceRange As Range
    Dim destinationRange As Range
    
    ' 设置源工作簿和目标工作簿的路径和文件名
    Set sourceWorkbook = Workbooks.Open("C:\路径\工作簿A.xlsx")
    Set destinationWorkbook = ThisWorkbook ' 或者 Workbooks.Open("C:\路径\工作簿B.xlsx")
    
    ' 设置源工作表和目标工作表的名称或索引
    Set sourceWorksheet = sourceWorkbook.Sheets("Sheet1")
    Set destinationWorksheet = destinationWorkbook.Sheets("Sheet2")
    
    ' 设置要复制和粘贴的区域
    Set sourceRange = sourceWorksheet.Range("A1:B10")
    Set destinationRange = destinationWorksheet.Range("C1")
    
    ' 执行复制和粘贴操作
    sourceRange.Copy Destination:=destinationRange
    
    ' 关闭源工作簿并保存更改
    sourceWorkbook.Close SaveChanges:=False
End Sub

参考newbing
要使用 VBA 实现跨工作簿的批量复制粘贴,你可以使用以下代码作为参考:

Sub CopyPasteData()
    Dim wbSource As Workbook
    Dim wbDestination As Workbook
    Dim wsSource As Worksheet
    Dim wsDestination As Worksheet
    Dim sourceRange As Range
    Dim destinationRange As Range
    
    ' 打开源工作簿
    Set wbSource = Workbooks.Open("C:\路径\源工作簿.xlsx")
    ' 打开目标工作簿
    Set wbDestination = Workbooks.Open("C:\路径\目标工作簿.xlsx")
    
    ' 指定源工作表和目标工作表
    Set wsSource = wbSource.Worksheets("源工作表名")
    Set wsDestination = wbDestination.Worksheets("目标工作表名")
    
    ' 指定源区域和目标区域
    Set sourceRange = wsSource.Range("A1:C10") ' 指定源区域的范围
    Set destinationRange = wsDestination.Range("D1:F10") ' 指定目标区域的范围
    
    ' 复制粘贴数据
    sourceRange.Copy destinationRange
    
    ' 关闭工作簿
    wbSource.Close SaveChanges:=False
    wbDestination.Close SaveChanges:=True
End Sub

在上面的代码中,你需要根据实际情况修改源工作簿和目标工作簿的路径,以及源工作表和目标工作表的名称。你还需要指定源区域和目标区域的范围。

将上述代码复制到 VBA 编辑器中的一个模块中,然后运行 CopyPasteData 过程即可实现跨工作簿的批量复制粘贴。