【问题标题】:Code only runs on Excel 2007 if file is opened from within Excel如果从 Excel 中打开文件,则代码仅在 Excel 2007 上运行
【发布时间】:2015-09-25 13:19:46
【问题描述】:

我有一些相对简单的代码循环遍历文件夹中的多个文件,打开每个文件并将一系列数据复制到一个新的工作表中。我使用 Excel 2013 编写了代码。一些用户的盒子上有 2007。如果 2007 用户从 Excel 中打开文件(即文件打开,然后导航到目录),它运行良好。如果 2007 用户从 Windows 资源管理器打开文件,所有宏都会运行,除了我在循环中使用的文件名变量“myFile”始终为 EMPTY。就像它不会导航到目录一样。我没有收到任何错误,它只是执行代码并一直到循环的结尾(当“myFile”为空时停止)——然后继续执行下一个宏。使用 Excel 2013,无论程序如何打开,程序都能正常运行。我认为我的答案可能已包含在此线程中:Excel Workbook Open Event macro doesn't always run 但问答似乎并不直接适用于我的问题,因为宏实际运行。似乎只是导航到文件位置不起作用。这是运行循环的代码的 sn-p:

    Dim myfile As String
Dim wb As Workbook
Dim ws As Worksheet
Dim DataBlock As Range

'Optimize Macro Speed
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

Set wb = Workbooks("ComboFile.xlsm")
Set ws = wb.Sheets("Sheet1")    'change desired sheet

ChDir "r:\BSI\Sys9000"
myfile = Dir("*.xlsx")

Do Until myfile = ""
    Workbooks.Open Filename:=myfile
    Set DataBlock = Range("A2").CurrentRegion
    DataBlock.Copy ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(1)
    Windows(myfile).Close
    myfile = Dir
Loop

'Reset Macro Optimization Settings
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic

欢迎提出任何建议。谢谢你。

【问题讨论】:

    标签: excel excel-2007 excel-2013 vba


    【解决方案1】:

    我建议你替换这个:

    ChDir "r:\BSI\Sys9000"
    myfile = Dir("*.xlsx")
    

    只有这个:

    myfile = Dir("r:\BSI\Sys9000\*.xlsx")
    

    ChDir 不会更改驱动器,因此如果当前目录不在 R 驱动器上,代码将失败。

    您还需要更改此设置:

    Workbooks.Open Filename:=myfile
    

    包含路径:

    Workbooks.Open Filename:="r:\BSI\Sys9000\" & myfile
    

    【讨论】:

    • 谢谢。我试过你的代码。它在 Excel 2013 上运行良好,但在 Excel 2007 上它现在停止并出现错误。真奇怪。它说它找不到文件 701.xlsx 文件(“可能它已被移动”评论)。它怎么会知道去寻找那个恰好在那个目录位置的文件呢?我还尝试将 r:\ 替换为完整的服务器文件路径。结果相同。 @罗里
    • 这很有效,谢谢!为什么我需要在循环内再次指定路径?每次发出 Workbook.Open 时,它是否默认(有时......并且仅适用于 Excel 2007)回到默认目录?或者,如果您认为这样做还有其他原因,请告诉我。非常感谢您的帮助!
    • 除非您指定路径,否则默认为当前目录。
    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多