Zany. 2023-08-01 05:35 采纳率: 0%
浏览 19
已结题

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

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

  • 写回答

12条回答 默认 最新

  • 这一次有糖 2023-08-01 05:40
    关注
    获得0.90元问题酬金

    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
    
    
    评论 编辑记录
    threenewbee 2023-08-01 05:47

    太谦虚了,这位是微软大神,非常高的高手!

    回复
    这一次有糖 回复 threenewbee 2023-08-01 05:50

    你谦虚了,vba这块还是一个月前学你的

    回复
  • threenewbee 2023-08-01 05:39
    关注
    获得1.05元问题酬金
    Sheets("Sheet1").Select
    Range("A1").Select
    Selection.Copy  'A1复制到剪贴板
    
    Sheets("Sheet2").Select
    Range("A1").Select
    ActiveSheet.Paste  ' 将剪贴板内容粘贴到A1
    
    
    评论
  • Web3&Basketball 全栈领域优质创作者 2023-08-01 05:55
    关注
    获得0.90元问题酬金

    要使用 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 运行。

    评论
  • Marst·Zhang 2023-08-01 05:54
    关注
    获得0.45元问题酬金

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

    http://t.csdn.cn/byCKW

    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-01 08:17
    关注
    获得0.90元问题酬金
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
  • 技术宅program 2023-08-01 08:45
    关注
    获得0.45元问题酬金

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

    评论
  • yy64ll826 2023-08-02 03:22
    关注
    获得0.45元问题酬金

    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
    
    

    展开全部

    评论
  • Richard.sysout 2023-08-07 08:55
    关注
    获得0.45元问题酬金

    要使用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中跨工作簿进行批量复制粘贴的操作。记得保存并备份你的工作簿文件,以防发生意外情况。

    展开全部

    评论
  • 阳光宅男xxb 2023-08-08 02:52
    关注
    获得0.75元问题酬金

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

    '选择要复制的区域  
        Set rng = wsA.Range("起始单元格:结束单元格")  
          
        '计算工作簿B的指定区域最后一行  
        lastRowB = wsB.Cells(wsB.Rows.Count, "A").End(xlUp).Row + 1  
          
        '将复制的区域粘贴到工作簿B的指定区域  
         rng.Copy wsB.Cells(lastRowB, "A")  
    
    
    评论 编辑记录
  • 会跑的小鹿 2023-08-08 03:22
    关注
    获得0.30元问题酬金

    用python来处理,更方便

    评论
  • GIS工具开发 2023-08-08 12:46
    关注
    获得0.45元问题酬金
    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
    
    评论
  • Minuw 2023-08-08 08:13
    关注

    参考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 过程即可实现跨工作簿的批量复制粘贴。

    展开全部

    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 8月8日
  • 修改了问题 8月4日
  • 修改了问题 8月1日
  • 修改了问题 8月1日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部