-2

(编辑:在随后的编辑中,发布者声明问题已经解决并且是由于拼写错误,然后删除了整个问题文本。添加此评论的文本恢复)


我有 2 个需要安排的宏:

Macro1 "GetData" - 这需要每 35 分钟运行一次 - 从我的数据库中检索数据。Macro2 "RefreshData" - 这需要在 GetData 完成后每 1 分钟运行一次 - 以更新我的数据。

我试过了:

Private Sub workbook_open()

Application.OnTime Now + TimeValue("00:35:10"), "GetData"
Application.OnTime Now + TimeValue("00:01:00"), "RefreshData"

End Sub

但是,我收到了:

“无法运行宏“c:\document and settings\alex\desktop\data.xlsm'!GetData'/此工作簿中可能不可用宏,或者所有宏都可能被禁用”

Sub GetData ()

'' GetData ///////////////////////////////////////////////////////////////////////

Dim sh1 As Worksheet, data As Worksheet

Set sh1 = Worksheets("Sheet1")

Set data = Workbooks.Open(Filename:="C:\Documents and Settings\alex\Desktop\source.XLS"). _
    Worksheets("Report 1")

Sheets("Report 1").Select
Set Rng = Sheets("Report 1").Range("A2:K350")
Selection.Copy

sh1.Activate
Rng.SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Sheet1").Range("A2")

portfolioName.Activate
ActiveWorkbook.Close

End Sub

Sub RefreshData()

MsgBox ("-- Update every 1min --")

End Sub

任何帮助表示赞赏。

- 更新 - - - -

我现在创建了一个单独的 GetData 模块:

Private Sub workbook_open()

Application.OnTime Now + TimeValue("00:35:10"), "GetData"
'Application.OnTime Now + TimeValue("00:01:00"), "RefreshData"

End Sub

Public Sub GetData()
'' GetData ///////////////////////////////////////////////////////////////////////
....
....
End Sub

仍然收到相同的错误..

- 更新 - - -

好的,在 Sheet1 中我有:

Public Sub workbook_open()

Application.OnTime Now + TimeValue("00:35:10"), "GetData"
'Application.OnTime Now + TimeValue("00:01:00"), "RefreshData"

End Sub

我现在有 Insert > Module 并将模块重命名为 GetData

在该 GetData 模块中,我有:

Public Sub GetData()
'' GetData ///////////////////////////////////////////////////////////////////////
....
....
End Sub

欢迎任何意见

4

1 回答 1

1

OnTime 要求引用的宏位于标准模块中。sub 也必须是公共的,这是模块的默认设置。插入一个模块,并将 GetData 和 RefreshData 移入其中。

于 2012-09-17T13:30:51.673 回答