永发信息网

excel求教vba,从后台使用其他表格数据

答案:3  悬赏:40  手机版
解决时间 2021-01-13 07:28
  • 提问者网友:棒棒糖
  • 2021-01-12 07:19
excel求教vba,从后台使用其他表格数据
最佳答案
  • 五星知识达人网友:举杯邀酒敬孤独
  • 2021-01-12 08:06
也许可以试试这个代码:
Sub 按钮2_Click()
    Dim d As Object, arr
    Dim myworkbook As Workbook
    Dim mysheet As Sheets
    Set myworkbook = Workbooks.Open("d:2.xlsx")
    Set d = CreateObject("scripting.dictionary")
    arr = myworkbook.Sheets("Sheet1").Range("A1:B" & myworkbook.Sheets("Sheet1").Range("A" & Rows.Count).End(3).Row)
    For i = 1 To UBound(arr)
        d(arr(i, 1)) = arr(i, 2)
    Next i
    myworkbook.Close
    Set myworkbook = Nothing
    
    arr = ActiveSheet.Range("A1:B" & ActiveSheet.Range("A" & Rows.Count).End(3).Row)
    For i = 1 To UBound(arr)
         arr(i, 2) = d(arr(i, 1))
    Next i
    ActiveSheet.Range("A1:B" & ActiveSheet.Range("A" & Rows.Count).End(3).Row) = arr
End Sub追问你这个字典的方式让我醍醐灌顶。。。。居然没想到过,,,再请教一下,我用的是set myworkbook = getobject("D:\2.xlsx"),这和你的workbooks.open比较是效率高一些还是低一些?我那个2.xlsx体积较大,打开会有点慢,我不知道我那种是不是会把速度拉的更低。
全部回答
  • 1楼网友:長槍戰八方
  • 2021-01-12 10:04
当然是set myworkbook = getobject("D:\2.xlsx")更快一下
  • 2楼网友:怙棘
  • 2021-01-12 09:37
RMB 50 可以 做, 包括什么后续 可以一起说明 报个价追问来来来,你给我5块钱红包,我下午就把代码给你。
我只是自己写的代码不够成熟,效果能达到,但是可能比较冗长,希望找到更好的代码。
你要50?!也是真够神奇。包括后续是不是?前面我写了900多行了,估计还要400多行,你那个50就敢接后续?追答
你 900多行  可以 减为  90行
你看清楚, 

你那代码 ,我出1毛。  录的吧
等你 能 把900行 变成  50行的 时候 ,可以 考虑接单,你现在 还不行,追问你的想法真有意思,能把900变50的时候,用你干啥,变回900吗。追答
真是脑残,我 说你自己接单,傻冒, 话都不会读,有兴趣 哥可以 收你,比你上班工资高
追问你不脑残,我就是来问个问题,你让我接什么单,你扯到哪去了。你不是回答问题的吗,你告诉提问者学好了可以接单是个什么鬼。追答你不是 要收我钱么, 我告诉你收钱的途径啊,把你的代码 900行变成 50行,就可以收别人钱了.追问
免费,四不四傻问个问题,你能答就回答,不能答给别人让路,在这比比啥。东拉西扯的,不干正事。滚犊子追答
用 Ado
一会写个Sub test()
Set cnn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
arr = ActiveSheet.[a1].CurrentRegion
For i = 2 To UBound(arr)
   cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';data source=D:2.xlsx"
Sql = "Select F2 from [Sheet1$] where F1='" & arr(i, 1) & "'"
   Set rs = cnn.Execute(Sql)
  Cells(i, 2).CopyFromRecordset cnn.Execute(Sql)
  cnn.Close
  Set cnn = Nothing
Next
End Sub
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯