Я сталкивался со старым модулем vba, который использует метод RefreshFile . Предположительно, он берет путь к файлу из столбца B и обновляет файл соединений / запросов / сводок.
Моя проблема в том, что я не знаю, безопасно ли это использовать, поскольку я не смог найти где-либо информацию об этом методе, касающуюся Excel. Мне интересно, есть ли какие-либо проблемы или подводные камни с этим, так как никто, кажется, не использует его. Будет ли это действовать так же, как .RefreshAll?
Заранее спасибо.
Столбцы Excel:
VBA:
Sub Main()
Dim thisWB As Workbook
Dim wbArray() As String
Dim wbCount As Integer
Dim wbSheet As Worksheet
Dim i As Integer, j As Integer
Dim lastUpdate As Date
Dim lastUpdateStr As String, freqStr As String
Dim pword As String
Dim refreshBool As Boolean, proceedBool As Boolean
Dim nonRefreshStr As String
Set thisWB = ThisWorkbook
Set wbSheet = thisWB.Worksheets("Workbooks")
Application.Calculation = xlCalculationAutomatic
If wbSheet.Range("J2") = "N" Then
Exit Sub
Else
End If
With wbSheet
wbCount = .Cells(.Rows.Count, 1).End(xlUp).row
wbCount = wbCount - 1
ReDim wbArray(1 To wbCount, 1 To 3)
For i = 1 To UBound(wbArray)
For j = 1 To 3
wbArray(i, j) = .Cells(i + 1, j).Value
Next j
Next i
End With
pword = "test"
'this works so that "i" represents the row number minus 1 (e.g. if you want to start with the Late Fee Dashboard
'which is on row 3, enter i = 2. Or else start at the LBound(wbArray)
'For i = 1 To 1
For i = LBound(wbArray) To UBound(wbArray)
freqStr = wbArray(i, 3)
If freqStr = "Each Day" And wbSheet.Range("J2").Value = "Y" Then
proceedBool = True
ElseIf freqStr = "3rd Business Day" And wbSheet.Range("J3").Value = "Y" Then
proceedBool = True
ElseIf freqStr = "1st Business Day" And wbSheet.Range("J4").Value = "Y" Then
proceedBool = True
Else
proceedBool = False
End If
If proceedBool Then '******************!!!SEE RefreshFile BELOW!!!*****************
refreshBool = RefreshFile(wbArray(i, 1), wbArray(i, 2), pword)
If refreshBool Then
lastUpdate = Now
lastUpdateStr = FormatDateTime(lastUpdate, vbShortDate)
lastUpdateStr = lastUpdateStr & " " & FormatDateTime(lastUpdate, vbShortTime)
With wbSheet
.Cells(i + 1, 4).Value = lastUpdateStr
End With
Else
If nonRefreshStr = "" Then
nonRefreshStr = wbArray(i, 1)
Else
nonRefreshStr = nonRefreshStr & ", " & wbArray(i, 1)
End If
End If
Else
End If
Next i