ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 926|回复: 1

[求助] 同一代码来核对数据,一个文件成功,一个失败,求原因?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-23 19:15 | 显示全部楼层 |阅读模式
核对数据的公式代码,在测试文件阶段的时候成功核对出错误数据,到真正用到实际文件的时候就代码就合不出来了错误数据了,不好使了,这是为什么,求大神帮忙解救一下,谢谢!
Sub lqxs6()
Dim Arr, myPath$, nm$, I&, Brr, aa, r, r1, l, l1, y&, j&, n&
Dim d, k, t, wk1 As Workbook, wk2 As Workbook, Crr
Set d = CreateObject("Scripting.Dictionary")
Dim Sht As Worksheet
Set wk1 = ThisWorkbook
For Each Sht In Sheets
    d(Sht.Name) = ""
Next
'Brr = Sheet3.[b1].CurrentRegion
'Brr = Sheet3.Range([b1], [b65536].End(3))

Brr = Sheet3.Range("b1:b" & Sheet3.[b65536].End(xlUp).Row) '对应-----bbbbb------这个才能正常运行


'myPath = ThisWorkbook.Path & "\b.xlsx"'-----固定打开工作簿---------对应aaa-----
'myPath = ("C:\Users\Administrator\Desktop\测试\同名表多表格数据的核对\b.xlsx")'-----固定打开工作簿---------对应aaa2222-----

   Dim fileName
fileName = Application.GetOpenFilename("EXCEL文件(*.xls;*.xlsx;*.csv;*.xlsm), *.xls;*.xlsx;*.csv;*.xlsm") '手动打开工作簿
  
   
     ' 打开数据源文件
    'fileName = Application.GetOpenFilename(FileFilter:="Excel 文件 (*.xls;*.xlsx;*.csv;*.xlsm),*.xls;*.xlsx;*.csv;*.xlsm", MultiSelect:=True)
'Workbooks.Open fileName:=fileName
' With ActiveWorkbook




'With GetObject(myPath)

With GetObject(fileName)


' Set wk2 = .GetFolder(ThisWorkbook.Path & "\b.xlsx")
   ''' Set wk2 = Workbooks("b.xlsx")'-----对应aaa-----

    ' Set wk2 = Workbooks(myPath)
        Set wk2 = Workbooks.Open(fileName) '指定手动打开的工作簿作为函数-----对应bbbbb--------
     
    ' Set wk2 = Workbooks("B.xlsx").Sheets(3).[B65536].End(xlUp).Row + 1-----对应bbbbb--------
     
    For I = 1 To UBound(Brr)
        s = Brr(I, 1) & "表格中有以下不同的单元格:" & vbCrLf
        If d.exists(wk2.Sheets(I).Name) Then
            Arr = wk1.Sheets(Brr(I, 1)).UsedRange
            Crr = wk2.Sheets(Brr(I, 1)).UsedRange
            For X = 1 To UBound(Arr)
                For y = 1 To UBound(Arr, 2)
               
                   ' If Arr(x, y) <> Crr(x, y) Then s = s & x & "|" & y & vbCrLf’这个显示数字坐标
                    
                   If Arr(X, y) <> Crr(X, y) Then s = s & Cells(X, y).Address(0, 0) & vbCrLf '这个显示字母坐标
                                 
                Next
            Next
           'If InStr(s, "|") <> 0 Then MsgBox s’对应显示数字坐标
            If s <> 0 Then MsgBox s '对应显示字母坐标
            Else
        MsgBox s & "表格没有不同。"
   
        End If
    Next
    wk2.Close False '关闭指定工作簿
End With
End Sub
上面成功了
  1. Sub lqxs6()
  2. Dim Arr, myPath$, nm$, I&, Brr, aa, r, r1, l, l1, y&, j&, n&
  3. Dim d, k, t, wk1 As Workbook, wk2 As Workbook, Crr
  4. Set d = CreateObject("Scripting.Dictionary")
  5. Dim Sht As Worksheet
  6. Set wk1 = ThisWorkbook
  7. For Each Sht In Sheets
  8.     d(Sht.Name) = ""
  9. Next
  10. 'Brr = Sheet3.[b1].CurrentRegion
  11. 'Brr = Sheet3.Range([b1], [b65536].End(3))

  12. Brr = Sheet60.Range("b2:b" & Sheet60.[b65536].End(xlUp).Row) '对应-----bbbbb------这个才能正常运行


  13. 'myPath = ThisWorkbook.Path & "\b.xlsx"'-----固定打开工作簿---------对应aaa-----
  14. 'myPath = ("C:\Users\Administrator\Desktop\测试\同名表多表格数据的核对\b.xlsx")'-----固定打开工作簿---------对应aaa2222-----

  15.    Dim fileName
  16. ' fileName = Application.GetOpenFilename("EXCEL文件(*.xls;*.xlsx;*.csv;*.xlsm), *.xls;*.xlsx;*.csv;*.xlsm") '手动打开工作簿
  17.    fileName = Application.GetOpenFilename("EXCEL文件(*.xlsm),*.xlsm") '手动打开工作簿
  18.    
  19.      ' 打开数据源文件
  20.     'fileName = Application.GetOpenFilename(FileFilter:="Excel 文件 (*.xls;*.xlsx;*.csv;*.xlsm),*.xls;*.xlsx;*.csv;*.xlsm", MultiSelect:=True)
  21. 'Workbooks.Open fileName:=fileName
  22. ' With ActiveWorkbook




  23. 'With GetObject(myPath)

  24. With GetObject(fileName)


  25. ' Set wk2 = .GetFolder(ThisWorkbook.Path & "\b.xlsx")
  26.    ''' Set wk2 = Workbooks("b.xlsx")'-----对应aaa-----

  27.     ' Set wk2 = Workbooks(myPath)
  28.         Set wk2 = Workbooks.Open(fileName) '指定手动打开的工作簿作为函数-----对应bbbbb--------
  29.      
  30.     ' Set wk2 = Workbooks("B.xlsx").Sheets(3).[B65536].End(xlUp).Row + 1-----对应bbbbb--------
  31.      
  32.     For I = 1 To UBound(Brr)
  33.         s = Brr(I, 1) & "表格中有以下不同的单元格:" & vbCrLf
  34.         If d.exists(wk2.Sheets(I).Name) Then
  35.             Arr = wk1.Sheets(Brr(I, 1)).UsedRange
  36.             Crr = wk2.Sheets(Brr(I, 1)).UsedRange
  37.             For X = 1 To UBound(Arr)
  38.                 For y = 1 To UBound(Arr, 2)
  39.                
  40.                    ' If Arr(x, y) <> Crr(x, y) Then s = s & x & "|" & y & vbCrLf’这个显示数字坐标
  41.                     
  42.                    If Arr(X, y) <> Crr(X, y) Then s = s & Cells(X, y).Address(0, 0) & vbCrLf '这个显示字母坐标
  43.                                  
  44.                 Next
  45.             Next
  46.            'If InStr(s, "|") <> 0 Then MsgBox s’对应显示数字坐标
  47.             If s <> 0 Then MsgBox s '对应显示字母坐标
  48.             Else
  49.         MsgBox s & "表格没有不同。"
  50.    
  51.         End If
  52.     Next
  53.     wk2.Close False '关闭指定工作簿
  54. End With
  55. End Sub

复制代码
这个失败了


测试.rar

814.49 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2018-9-26 10:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主的两段代码不是一致的啊
建议楼主对比下代码及相应附件内容吧
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-16 04:02 , Processed in 0.019092 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表