我目前正在尝试更新格式为
的工作簿连接Messergebnisse-2018年3月22日
我每天都链接一个文件,所以我想只更新最新的连接。
这是我一直在使用的代码,但总是会出现错误:
Sub Refresh()
Dim LDate As String
LDate = Date
If Day(Today) >= 10 Then
Application.ScreenUpdating = False
ActiveWorkbook.Connections("Messergebnisse-" & format(Date,"yyyy-m-dd")).Refresh
Sheets("OK").Select
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
Sheets("Summary").Select
Else
Application.ScreenUpdating = False
ActiveWorkbook.Connections("Messergebnisse-" & LDate).Refresh
Sheets("OK").Select
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
Sheets("Summary").Select
End If
End sub
尝试使用变量作为日期和实际格式函数。
但格式化功能带有错误:
编译错误:
参数数量错误或属性分配无效
有什么想法吗?
答案 0 :(得分:2)
编译错误是因为If Day(Today) >= 10 Then
。
应为If Day(Now) >= 10 Then
为避免编译错误,请在模块/类/工作表的顶部写入Option Explicit
,然后在运行代码之前从VB功能区中选择Debug>Compile
。它总是会告诉您代码是否可以编译以及错误在哪里。
检查这个小样本:
Sub TestMe()
MsgBox Day(Now)
End Sub
答案 1 :(得分:1)
您需要替换
If Day(Today) >= 10 Then
带
If Day(Date) >= 10 Then
注意:您应该避免使用Select
和ActiveSheet
,而是完全定义和Set
所有对象。您可以通过调整以下代码来实现:
Dim OKSht As Worksheet
Dim PvtTbl As PivotTable
' set the worksheet object
Set OKSht = ThisWorkbook.Sheets("OK")
' set the Pivot-Table object
Set PvtTbl = OKSht.PivotTables("PivotTable1")
' refresh the Pivot-Table PivotCache
PvtTbl.PivotCache.Refresh
答案 2 :(得分:0)
LDate = Date
中,您依赖于区域设置。这是错的。Day(Today)
(意为Date
或Now
)format(Date,"yyyy-m-dd")
。ScreenUpdating
未恢复。总之,它必须看起来像这样(不考虑我面前发布的所有其他重要说明):
Sub Refresh()
Dim dDate As Date
Dim sDate$, sCncStr$
dDate = Date
sCncStr = "Messergebnisse-"
' Select Case (Day(Today) >= 10) ' remained for the case of I misunderstand you
' Case True ' Format it on your choice
' sDate = 'Format$(dDate, "yyyy-m-dd")
' Case False
' sDate = 'CStr(dDate)
' End Select
sDate = Format$(dDate, "yyyy-m-d")
sCncStr = sCncStr & sDate
Application.ScreenUpdating = False
ActiveWorkbook.Connections(sCncStr).Refresh
Sheets("OK").Select
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
Sheets("Summary").Select
Application.ScreenUpdating = True
End Sub