Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
On.Time problem
I have some workbooks which contain links to an external data retrieval
service. When a file is opened it takes about 30 seconds for that linked data to be updated. My objective is to open each file in turn, wait untill the data comes in (say 30 seconds), convert the linked cells to values so that they are no longer volatile and finally save the file to a different folder. I have no difficulty doing the entire process in a loop EXCEPT that I have a problem with introducing that delay between each pass of the loop which is absolutely essential. The WAIT method does not work because it locks up the machine and prevents the data from coming in. I have used the ON.TIME method in the past to trigger a partucular procedure but I'm not sure how to apply it to introduce a delay between each pass of the loop. Any other suggestions would be appreciated. THANK YOU |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
On.Time problem
Ben,
give this a try. Create a new module and paste the code below. You run it by calling the ProcessFiles subroutine. It works by having the files to be opened in a collection object. Each file is then opened and "waits" 5 seconds by using OnTime, and then closes the workbook and opens the next one... and so on. you'll need to change the part where the files are put in the collection and you'll need to put your code in the part after the workbook is opened. Private colFiles As Collection Private iIndex As Integer Private curWB As Workbook Sub ProcessFiles() Set colFiles = New Collection Set curWB = Nothing iIndex = 1 'put all files in the colFiles collection here. 'replace this part with your code colFiles.Add "D:\TEMP\book1.xls" colFiles.Add "D:\TEMP\book2.xls" 'Start "looping". If colFiles.Count 0 Then OpenFiles End If End Sub Sub OpenFiles() Dim NextTime As Date 'if a workbook is open, work with it. If Not curWB Is Nothing Then 'do something with the workbook. '30 second delay would have expired by now. 'when done. close the workbook and set curwb to nothing curWB.Close Set curWB = Nothing 'increment the Index iIndex = iIndex + 1 End If 'we are done. If iIndex colFiles.Count Then Exit Sub If curWB Is Nothing Then 'there is no current workbook. open a new one Set curWB = Workbooks.Open(colFiles(iIndex)) End If NextTime = Now + TimeValue("00:00:05") Application.OnTime NextTime, "OpenFiles" End Sub -- Hope that helps. Vergel Adriano "Ben" wrote: I have some workbooks which contain links to an external data retrieval service. When a file is opened it takes about 30 seconds for that linked data to be updated. My objective is to open each file in turn, wait untill the data comes in (say 30 seconds), convert the linked cells to values so that they are no longer volatile and finally save the file to a different folder. I have no difficulty doing the entire process in a loop EXCEPT that I have a problem with introducing that delay between each pass of the loop which is absolutely essential. The WAIT method does not work because it locks up the machine and prevents the data from coming in. I have used the ON.TIME method in the past to trigger a partucular procedure but I'm not sure how to apply it to introduce a delay between each pass of the loop. Any other suggestions would be appreciated. THANK YOU |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
On.Time problem
That was helpful, Thank you
"Ben" wrote: I have some workbooks which contain links to an external data retrieval service. When a file is opened it takes about 30 seconds for that linked data to be updated. My objective is to open each file in turn, wait untill the data comes in (say 30 seconds), convert the linked cells to values so that they are no longer volatile and finally save the file to a different folder. I have no difficulty doing the entire process in a loop EXCEPT that I have a problem with introducing that delay between each pass of the loop which is absolutely essential. The WAIT method does not work because it locks up the machine and prevents the data from coming in. I have used the ON.TIME method in the past to trigger a partucular procedure but I'm not sure how to apply it to introduce a delay between each pass of the loop. Any other suggestions would be appreciated. THANK YOU |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
On.Time problem
Vergel, I have one more request. As part of the solution, you suggest
creating a collection as follows: colFiles.Add "D:Temp\book.xls" ... etc Instead of explicitly specifying each file I'd like specify one folder and then add all the files in that folder to colFiles. Thanks again "Ben" wrote: That was helpful, Thank you "Ben" wrote: I have some workbooks which contain links to an external data retrieval service. When a file is opened it takes about 30 seconds for that linked data to be updated. My objective is to open each file in turn, wait untill the data comes in (say 30 seconds), convert the linked cells to values so that they are no longer volatile and finally save the file to a different folder. I have no difficulty doing the entire process in a loop EXCEPT that I have a problem with introducing that delay between each pass of the loop which is absolutely essential. The WAIT method does not work because it locks up the machine and prevents the data from coming in. I have used the ON.TIME method in the past to trigger a partucular procedure but I'm not sure how to apply it to introduce a delay between each pass of the loop. Any other suggestions would be appreciated. THANK YOU |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
On.Time problem
Ben,
try this Dim colFiles As New Collection Dim strPath As String Dim strFile As String strPath = "D:\TEMP\" strFile = Dir(strPath) While strFile < "" colFiles.Add strPath & strFile strFile = Dir Wend -- Hope that helps. Vergel Adriano "Ben" wrote: Vergel, I have one more request. As part of the solution, you suggest creating a collection as follows: colFiles.Add "D:Temp\book.xls" ... etc Instead of explicitly specifying each file I'd like specify one folder and then add all the files in that folder to colFiles. Thanks again "Ben" wrote: That was helpful, Thank you "Ben" wrote: I have some workbooks which contain links to an external data retrieval service. When a file is opened it takes about 30 seconds for that linked data to be updated. My objective is to open each file in turn, wait untill the data comes in (say 30 seconds), convert the linked cells to values so that they are no longer volatile and finally save the file to a different folder. I have no difficulty doing the entire process in a loop EXCEPT that I have a problem with introducing that delay between each pass of the loop which is absolutely essential. The WAIT method does not work because it locks up the machine and prevents the data from coming in. I have used the ON.TIME method in the past to trigger a partucular procedure but I'm not sure how to apply it to introduce a delay between each pass of the loop. Any other suggestions would be appreciated. THANK YOU |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Time problem | New Users to Excel | |||
Time problem - Help please | Excel Discussion (Misc queries) | |||
Time Problem | Excel Discussion (Misc queries) | |||
Time Problem | Excel Programming | |||
Problem when multipple users access shared xl-file at the same time, macrocode for solve this problem? | Excel Programming |