Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2149|回复: 4

[已解决]跨文件引用的宏,运行中要点击确定,如何避免?

[复制链接]
发表于 2016-1-10 07:36 | 显示全部楼层 |阅读模式
本帖最后由 arter_2006 于 2016-1-10 12:56 编辑

宏为跨文件引用,要引用几百甚至上千的数据,每引用一个文件一个单元格的数据,就要点击“确定“按钮,如何在执行宏的过程中,如果有提示框跳出是否以只读模式打开,自动点击“确定“。如何实现?非常感谢。
注明,因为上层的要求,被引用文件的只读属性不能改。


非常感谢指教。
最佳答案
2016-1-10 09:25
Sub 名称()
    Dim arr, brr(), i
    arr = Range("A2:A" & [A666].End(3).Row)
    For i = 1 To UBound(arr)
       Application.ScreenUpdating = False
         Set wb = Workbooks.Open(ActiveWorkbook.Path & "\" & arr(i, 1) & ".xlsm", , True)
           ReDim Preserve brr(1 To UBound(arr), 1 To 1)
             brr(i, 1) = wb.Sheets("Sheet1").Range("B2")
          wb.Close False
        Application.ScreenUpdating = True
    Next
    Range("B2").Resize(UBound(brr), 1) = brr
End Sub
跨文件引用的宏,运行中要点击确定,如何避免?.PNG

跨文件引用的宏,运行中要点击确定,如何避免?.rar

127.19 KB, 下载次数: 8

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-1-10 08:45 | 显示全部楼层
        Set wb = Workbooks.Open(ActiveWorkbook.Path & "\" & arr(i, 1) & ".xlsm", , True)
就可以了,下面的结构避免闪屏
==========================
     Application.ScreenUpdating = True
Set wb = Workbooks.Open(文件名, , True)
wb.Windows(1).Visible = False

    wb.Windows(1).Visible = True
    wb.Close True
    Application.ScreenUpdating = True

评分

参与人数 1 +1 收起 理由
arter_2006 + 1 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-1-10 09:21 | 显示全部楼层
非常感谢您的指教,
本人宏是个菜鸟;
我改成了:

Sub 名称()
    Dim arr, brr(), i
    arr = Range("A2:A" & [A666].End(3).Row)
    For i = 1 To UBound(arr)
        Set wb = GetObject(ActiveWorkbook.Path & "\" & arr(i, 1) & ".xlsm")
        ReDim Preserve brr(1 To UBound(arr), 1 To 1)
        brr(i, 1) = wb.Sheets("Sheet1").Range("B2")
        wb.Close False
    Next
    Range("B2").Resize(UBound(brr), 1) = brr

         Application.ScreenUpdating = True
  Set wb = Workbooks.Open(ActiveWorkbook.Path & "\" & arr(i, 1) & ".xlsm", , True)
wb.Windows(1).Visible = False

    wb.Windows(1).Visible = True
    wb.Close True
    Application.ScreenUpdating = True
End Sub

、能否请您把上面的宏改下,或把附件改下,非常感谢您。

跨文件引用的宏,运行中要点击确定,如何避免?.rar

126.69 KB, 下载次数: 8

回复

使用道具 举报

发表于 2016-1-10 09:25 | 显示全部楼层    本楼为最佳答案   
Sub 名称()
    Dim arr, brr(), i
    arr = Range("A2:A" & [A666].End(3).Row)
    For i = 1 To UBound(arr)
       Application.ScreenUpdating = False
         Set wb = Workbooks.Open(ActiveWorkbook.Path & "\" & arr(i, 1) & ".xlsm", , True)
           ReDim Preserve brr(1 To UBound(arr), 1 To 1)
             brr(i, 1) = wb.Sheets("Sheet1").Range("B2")
          wb.Close False
        Application.ScreenUpdating = True
    Next
    Range("B2").Resize(UBound(brr), 1) = brr
End Sub

评分

参与人数 1 +1 收起 理由
arter_2006 + 1 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-1-10 12:57 | 显示全部楼层
可惜只有一分了,否则的多加些,非常感谢各位。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-20 06:09 , Processed in 0.293072 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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