ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 遍历工作簿时如何关闭弹窗

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-17 09:53 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
由于我的工作簿存在链接,所以在执行遍历工作簿的时候会弹出是否更新链接的弹窗。求助各位老师,如何添加代码可以使打开所有工作簿的时候选择“不更新”选项或者直接关闭弹窗



Sub Opiona()

    Rem 禁止系统刷屏?触发其他事件等
    'On Error Resume Next    '// 发生错误,自动执行下一句,就是忽略错误
    Application.ScreenUpdating = False '//关闭屏幕刷新
    Application.DisplayAlerts = False '//关闭系统提示
    Application.EnableEvents = False  '//禁止触发其他事件
    Application.StatusBar = True   '关闭系统状态条

    T = Timer   '//开始时间
    Set SHX = Worksheets("汇总")
    SHX.Range("A5:HZ1048576").ClearContents

    Rem  获取各个分表清单
    FileArr = FileAllArr(ThisWorkbook.Path, "*.xls?", ThisWorkbook.Name, True, False)
    ICINT = UBound(FileArr) + 1
    For I = 0 To UBound(FileArr)
        Rem  提示信息,在状态栏显示
        Application.StatusBar = "文件总数:" & ICINT & " 当前是第:" & I + 1 & " 当前提取的文件是:" & GetPathFromFileName(FileArr(I), True)  '
        DoEvents

        Rem 打开分表
        Set WB = Workbooks.Open(FileArr(I))
        Rem 找到对应表格
        For Each SH In WB.Worksheets
            If SH.Name = SHX.Range("B1").Value Then
                Rem 写入文件名
                SHX.Cells(I + 5, 1).Value = GetPathFromFileName(FileArr(I))
                Rem 找到需要的单元格位置
                For ICOL = 2 To SHX.Range("HZ4").End(xlToLeft).Column
                    If Len(SHX.Cells(3, ICOL).Value) > 0 Then
                        SHX.Cells(I + 5, ICOL).Value = SH.Range(SHX.Cells(3, ICOL).Value).Value
                    End If
                Next
                Exit For
            End If
        Next SH
        WB.Close False
        Set WB = Nothing
    Next I

    Application.StatusBar = False   '恢复系统状态条
    Application.EnableEvents = True  '//  '//恢复触发其他事件
    Application.ScreenUpdating = True '//恢复屏幕刷新
    Application.DisplayAlerts = True '//恢复系统提示
    MsgBox "一共用时:" & Format(Timer - T, "#0.0000") & " 秒", , "北极狐提示!!"  '//提示所用时间

End Sub

TA的精华主题

TA的得分主题

发表于 2018-6-17 10:48 | 显示全部楼层
application.asktoupdatelinks=false

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-17 12:16 | 显示全部楼层
看见星光 发表于 2018-6-17 10:48
application.asktoupdatelinks=false

谢谢星光老师,我太小白了,在下列这串代码里,在哪里增加才有效呢?谢谢



Sub Openfile()

Dim 表 As String
Dim 开始列 As String
Dim 结束列 As String
Dim 开始行 As String
Dim 结束行 As String
Dim chazhi As Integer
Dim sumall As Integer
表 = Sheets("数据").Cells(2, 3).Value
开始列 = Sheets("数据").Cells(2, 4).Value
结束列 = Sheets("数据").Cells(2, 5).Value
开始行 = Sheets("数据").Cells(2, 6).Value
结束行 = Sheets("数据").Cells(2, 7).Value
chazhi = 结束行 - 开始行
sumall = 0
X1 = Asc(开始列) - 64
X2 = Asc(结束列) - 64
Dim X As Integer
X = X2 - X1
Dim Statrow As Integer
Statrow = 4
Dim aa As Single
Application.Calculation = xlAutomatic
Sheets("数据").Select
Sheets("数据").Range("a" & Statrow & ":AZ50000").Select
Selection.ClearContents
Dim keyword As String
keyword = "*.xls"
Call App_SearchSubFolder(keyword, True)
aa = Timer
On Error Resume Next

If UBound(strArr) > 0 Then
Dim Exc As New Excel.Application
For i = 0 To UBound(strArr) - 1
Exc.Workbooks.Open strArr(i)
Exc.Visible = False
Exc.Application.DisplayAlerts = False
Sheets("数据").Range(Cells(Statrow + sumall, 1), Cells(Statrow + sumall + chazhi, 1)) = strName(i)
'------------------------解密码,设置页脚---------------
'Sheets("数据").Range(Cells(Statrow + sumall, 2), Cells(Statrow + sumall + chazhi, 2 + X)).Value = Exc.Sheets(表).Range(Exc.Cells(Sheets("数据").Cells(2, 6).Value, X1), Exc.Cells(Sheets("数据").Cells(2, 7).Value, X2)).Value
'MsgBox 开始列 & 开始行 & ":" & 结束列 & 结束行 & "B" & (Statrow + sumall) & ":" & Chr(X + 1) & (Statrow + sumall + chazhi) & "  " & Chr(X + 1)
Sheets("数据").Range("B" & (Statrow + sumall) & ":" & Chr(X + 1 + 64) & (Statrow + sumall + chazhi)).Value = Exc.Sheets(表).Range(开始列 & 开始行 & ":" & 结束列 & 结束行).Value

Exc.Quit
sumall = sumall + chazhi
Next

Exc.Quit
End If
MsgBox Timer - aa
End Sub
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-6-17 14:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-17 14:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
朱荣兴 发表于 2018-6-17 14:40
Set WB = Workbooks.Open(FileArr(I))
改为这样试试看
Set WB = Workbooks.Open(FileArr(I),0)

谢谢老师,一楼的问题用星光老师的方法解决了,同样的问题,三楼的链接该如何修改呢?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 03:51 , Processed in 0.028327 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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