在Excel 2010 VBA中刷新数据连接

在Excel 2010 VBA中刷新数据连接,vba,excel,Vba,Excel,所以我把我所有的VBA代码都记下来了,它似乎是对的,但它只是没有刷新工作簿。我能想到的唯一一件事是,当我打开工作表时,我必须启用编辑功能,因此我是否需要向代码中添加一些内容 编辑:我正在通过VBScript运行此操作 Public wb As Workbook Sub executeUpdate() `some code openBook path & testArray(i) & ext, True saveBookAs path & te

所以我把我所有的VBA代码都记下来了,它似乎是对的,但它只是没有刷新工作簿。我能想到的唯一一件事是,当我打开工作表时,我必须启用编辑功能,因此我是否需要向代码中添加一些内容

编辑:我正在通过VBScript运行此操作

Public wb As Workbook

Sub executeUpdate()
    `some code
     openBook path & testArray(i) & ext, True
     saveBookAs path & testArray(i)
End Sub

Sub openBook(ByVal fileName As String, ByVal refresh As Boolean)

    Set wb = Workbooks.Open(fileName, 0, False)

    If refresh = True Then
        wb.RefreshAll
    End If
End Sub

Sub saveBookAs(ByVal fName As String)
    wb.SaveAs fileName:=fName & "_posReport.xlsx"
End Sub
我在以下位置找到此代码:

我还没有测试过,但可能对你有用

- 引述:

代码将绕过用户选择功能区下方消息栏上的“启用编辑”按钮的需要。另一个注意事项[…]如果工作簿不在ProtectedView中,代码将出错。因此,为了避免这种情况,以下代码仅在工作簿启用了ProtectedView时才启用编辑


哦,看起来很有希望。你知道我每次打开新工作簿时是否需要这样做吗?因为我有一个循环,通过代码一个接一个地打开和刷新工作簿。我想您必须为每个工作簿启用编辑功能。然后这条线将被添加到你的openBook程序中。没有骰子。。。它以我希望的方式保存工作簿,但是当我打开它并手动单击“刷新”“昨天的新数据”时…您是否尝试手动打开工作簿,启用编辑,然后运行RefreshAll代码检查它是否工作?我所做的是打开工作簿,在启用编辑之前,我开始录制宏并完成刷新表的所有步骤。看看代码,上面写的都是ActiveWorkbook.RefreshAllOk,我知道你是如何记录代码的。但要检查RefreshAll是否正常工作,我建议您手动打开工作簿,启用编辑,然后运行RefreshAll。@JazzyJoop所以我这么做了,当时正在处理它,在点击refresh之前,我必须关闭背景刷新。但是,昨晚当VBScript运行时,在某个地方出现了一个错误。。。所以现在我只是想弄明白。
If Application.ProtectedViewWindows.Count > 0 Then
    Application.ActiveProtectedViewWindow.Edit
End If