VBA EXCEL批量平衡复制数据

2025-10-26 16:45:09

1、按照下图整理需要统计的来源文件夹(当前文档目录下的文件夹),工作薄名,工作表名,目标文件夹(当前文档目录下的文件夹),目标工作薄,工作表,对应返回数据(可以为空),是否更新,

 亲!格式不一样也可以哦,需要微调代码啊!

VBA EXCEL批量平衡复制数据

2、启用开发工具选项卡;

1,点击选项,2,点击自定义功能区,3,勾选开发工具

VBA EXCEL批量平衡复制数据

3、设置控件;

1,插入命令控件;

2,修改控件名称及显示名;

VBA EXCEL批量平衡复制数据

4、 进入VBA编程界面;复制以下代码到编辑窗口

Private Sub 查询更新数据_Click()

config = vbYesNo + vbQuestion + vbDefaultButton1

 ans = MsgBox("你确认更新数据吗?", config, "提示")

    If ans = vbYes Then

     Dim cnn As Object, rs As Object, SQL$, i&, A&, B&, C&, D&, E&, sFile$

     Dim wb As Object, ws As Object

     Dim wb1 As Object, ws1 As Object    

   '取得当前工作表的最后行列

   C = ActiveSheet.UsedRange.Rows.Count

   E = ActiveSheet.UsedRange.Columns.Count        

   '创建需要更新工作表的循环数据   

    For D = 2 To C   

         '来源文件夹

      sFile1 = ActiveSheet.UsedRange.Cells(D, 1).Text    

          '来源工作薄

      sFile2 = ActiveSheet.UsedRange.Cells(D, 2).Text

          '来源工作表

      sFile3 = ActiveSheet.UsedRange.Cells(D, 3).Text      

         '目标文件夹

      sFile4 = ActiveSheet.UsedRange.Cells(D, 4).Text

         '目标工作薄

      sFile5 = ActiveSheet.UsedRange.Cells(D, 5).Text   

         '目标工作表

      sFile6 = ActiveSheet.UsedRange.Cells(D, 6).Text 

         '对应返回数据

      sFile7 = ActiveSheet.UsedRange.Cells(D, 7).Text     

         '是否更新

      sFile8 = ActiveSheet.UsedRange.Cells(D, 8).Text    

         '来源路径

     If sFile1 = "" Then

       sFile9 = ThisWorkbook.Path & "\" & sFile2 & ".xlsx"

       Else

       sFile9 = ThisWorkbook.Path & "\" & sFile1 & "\" & sFile2 & ".xlsx"

       End If

        '目标路由

     If sFile4 = "" Then

       sFile10 = ThisWorkbook.Path & "\" & sFile5 & ".xlsx"

       Else

       sFile10 = ThisWorkbook.Path & "\" & sFile4 & "\" & sFile5 & ".xlsx"

       End If

            '判断是否查询

             If sFile8 = "是" Then

              Cells(1, 11) = "正在更新:" & sFile2 & sFile3

              '锁定工作薄焦点         

               Application.ScreenUpdating = False

              Application.ShowWindowsInTaskbar = False

              '打开来源工作薄,工作表

               Set wb = Workbooks.Open(sFile9, False, False)

               '打开目标工作薄,工作表

               Set wb1 = Workbooks.Open(sFile10, False, False)  

               '返回数据及更新时间

               Cells(D, 9) = Now()

               '设置平行复制起止行数

                  For A = 1 To 95

                    '设置平行复制起止列数

                     For B = 1 To 30

                      '设置对应关系

                       wb1.Worksheets(sFile6).Cells(A, B) = wb.Worksheets(sFile3).Cells(A, B).Value                     

                      Next

                    Next

                wb.Close Savechanges:=True

                wb1.Close Savechanges:=True               

               '解除工作薄焦点             

             Application.ShowWindowsInTaskbar = True

            Application.ScreenUpdating = True        

            Cells(1, 11) = "更新完成!"

        End If

        Next

  MsgBox "更新完成!", vbInformation

  If ans = vbNo Then

  Exit Sub

End If 

End If

End Sub

VBA EXCEL批量平衡复制数据

5、提示:用户定义类型未定义异常处理办法

处理办法:点击工具-引用-勾选<microsoft outlook 14.0 object library>

6、提示:点击发送OUTLOOK安全提示

处理办法:点击文件-选项-信任中心-信任中心设置-编程访问-勾选从不向我发出可以活动警告

7、提示:编程访问无法勾选显示灰色时

处理办法:控制面板-用户帐号-点击用户帐号-更改用户账户控制设置-调到从不通知,重启电脑,调整完毕OUTLOOK设置可以再调整回来。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢