Асинхронная загрузка файлов из VBA (Excel)

Я уже пробовал использовать много разных техник с этим ... Тот, который работает довольно хорошо, но все еще связывает код при запуске, использует вызов api:

Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long

и

IF URLDownloadToFile(0, "URL", "FilePath", 0, 0) Then
End If

Я также использовал (успешно) код для написания vbscript из Excel, а затем запускал с ним wscript и ждал обратного вызова. Но опять же, это не полностью асинхронно и все еще связывает часть кода.

Я бы хотел иметь файлы загружаются в управляемом событиями классе, а код VBA может делать другие вещи в большом цикле с «DoEvents».Когда один файл готов, он может активировать флаг, и код может обработать этот файл, ожидая другого.

Это извлекает файлы Excel с сайта интрасети. Если это поможет.

Поскольку я уверен, что кто-то спросит, я не могу использовать ничего, кроме VBA. Он будет использоваться на рабочем месте, и 90% компьютеров являются общими. Я очень сомневаюсь, что они тоже потратят деньги на приобретение Visual Studio. Так что мне приходится работать с тем, что у меня есть.

Любая помощь будет принята с благодарностью.

7
задан Jean-François Corbett 13 October 2011 в 13:00
поделиться