【发布时间】:2018-02-12 21:07:05
【问题描述】:
我使用的是 2013 32 位 Excel。
我正在尝试在代码中更改数据连接中文本文件的名称(见下文)。它最初是通过录制宏在电子表格中手动设置的:
Data标签→From Text→Get External Data group
这个电子表格中有几个连接,都是手动设置的,都需要在代码中更新。它们都是同一类型的连接:text。
当我执行下面的代码时,Excel 在 Refresh 语句中返回错误:
"Method 'Refresh' of object 'WorkbookConnection' failed"
然后我再一步,这一次它成功地执行了Refresh 语句,因为它没有返回错误。但是当我然后按F5 继续时,Excel 崩溃了。
Dim wC As WorkbookConnection
Dim rG As Range
Dim rSummary As Range
Dim sh As Worksheet
Dim sChangeValue As String
Dim sWorksheetName As String
Dim sDataTableName As String
Dim sConnection As String
Dim lo As ListObject
For Each wC In ActiveWorkbook.Connections
If wC.Type = xlConnectionTypeTEXT Then
'I say "For Each", but in practice there is only one range per sheet
For Each rG In wC.Ranges
Set rSummary = Sheets("Summary").ListObjects("d_QueryTable").Range
sChangeValue = Application.WorksheetFunction.VLookup(wC.Name, rSummary, 7, False)
If sChangeValue = "Y" Then
sWorksheetName = Application.WorksheetFunction.VLookup(wC.Name, rSummary, 2, False)
sDataTableName = Application.WorksheetFunction.VLookup(wC.Name, rSummary, 3, False)
sConnection = Application.WorksheetFunction.VLookup(wC.Name, rSummary, 10, False)
With wC
.TextConnection.Connection = sConnection
.Refresh
End With
'sh(sWorksheetName).ListObjects(sDataTableName).TableObject.Refresh
End If
Next rG
End If
Next wC
wC.TextConnection.Connection 字段取值
"TEXT;Y:\Investigations\run_49.csv"
为了测试目的,我将其更改为存储在sConnection 中的值是相同的。但是为什么我会收到 Refresh 错误?那么 Excel 为什么会崩溃呢?
感谢所有帮助。
【问题讨论】:
-
如果您Step 到下一行而不是推送
F5,会发生什么?答案将有助于确定哪一行实际上导致了错误。 -
@ashleedawg 请参阅下面您帖子下方的评论