Option Explicit 'Variable that holds last date data was obtained. 'Prevents the script from obtaining data more than once a day Dim LastHistoricDataDate 'Variables to hold historic data Dim YearAgoTempHigh Dim YearAgoTempLow Dim YearAgoRainfall Dim YearAgoMaxWind YearAgoTempHigh=-1000 YearAgoTempLow=-1000 YearAgoRainFall=-1000 YearAgoMaxWind=-1000 'Constant for NOAA path--needs ending backslash. Assumes files are called "200X_XX.txt" Const NOAA_DIRECTORY="X:\vws1021\data\noaa\" 'Set Initial Values LastHistoricDataDate=0 YearAgoTempHigh=-1000 YearAgoTempLow=-1000 YearAgoRainFall=-1000 YearAgoMaxWind=-1000 'Tags are: , , , Sub Interval() 'Check to see if today is different than the last time we got the historic data. 'If so, call GetHistoricData to update variables. Dim Today Today=Int(CDbl(Now)) If LastHistoricDataDate<>Today Then LastHistoricDataDate=Today Call GetHistoricData(Today) End If End Sub Sub TextUpdate(Canvas,Index) Dim TextLine TextLine=Portfolio.Canvas(CLng(Canvas)).Text(CLng(Index)).ProcessedString If InStr(UCase(TextLine),"")<>0 Then Call Replace(TextLine,"",vbFormat(YearAgoTempHigh,"0.0")) Portfolio.Canvas(CLng(Canvas)).Text(CLng(Index)).ProcessedString=CStr(TextLine) End If If InStr(UCase(TextLine),"")<>0 Then Call Replace(TextLine,"",vbFormat(YearAgoTempLow,"0.0")) Portfolio.Canvas(CLng(Canvas)).Text(CLng(Index)).ProcessedString=CStr(TextLine) End If If InStr(UCase(TextLine),"")<>0 Then Call Replace(TextLine,"",vbFormat(YearAgoRainFall,"0.00")) Portfolio.Canvas(CLng(Canvas)).Text(CLng(Index)).ProcessedString=CStr(TextLine) End If If InStr(UCase(TextLine),"")<>0 Then Call Replace(TextLine,"",vbFormat(YearAgoMaxWind,"0")) Portfolio.Canvas(CLng(Canvas)).Text(CLng(Index)).ProcessedString=CStr(TextLine) End If End Sub Private Sub GetHistoricData(Today) 'Reset variables (-1000 is N/A) YearAgoTempHigh=-1000 YearAgoTempLow=-1000 YearAgoRainFall=-1000 YearAgoMaxWind=-1000 'Opens monthly NOAA report and extracts data for today Dim NOAAFileName NOAAFileName=vbFormat(CLng(vbFormat(Today,"YYYY"))-1,"0000")+"_"+vbFormat(Today,"MM")+".txt" Dim FSO Set FSO=CreateObject("Scripting.FileSystemObject") Dim TS Err.Clear On Error Resume Next Set TS=FSO.OpenTextFile(NOAA_DIRECTORY+NOAAFileName,1,False) Dim NOAAText NOAAText=TS.ReadAll TS.Close Set TS=Nothing Set FSO=Nothing If Err.Number<>0 Then Exit Sub On Error Goto 0 If NOAAText="" Then Exit Sub 'no file Dim NOAATextArray NOAATextArray=Split(NOAAText,vbCrLf) Dim i Dim NOAAData For i=0 to UBound(NOAATextArray) 'single space the data While InStr(NOAATextArray(i)," ")<>0 NOAATextArray(i)=Left(NOAATextArray(i),InStr(NOAATextArray(i)," ")-1)+" "+ _ Mid(NOAATextArray(i),InStr(NOAATextArray(i)," ")+2) Wend NOAAData=Split(NOAATextArray(i)," ") If UBound(NOAAData)>=12 Then 'make sure it has valid data If IsNumeric(NOAAData(0)) Then If CLng(NOAAData(0))=CLng(vbFormat(Today,"DD")) Then 'We are at today's data YearAgoTempHigh=CDbl(NOAAData(2)) YearAgoTempLow=CDbl(NOAAData(4)) YearAgoRainFall=CDbl(NOAAData(8)) YearAgoMaxWind=CDbl(NOAAData(10)) Exit For End If End If End If Next End Sub Private Sub Replace(SearchString, FromString, ToString) If IsNumeric(ToString) Then If CDbl(ToString) = -1000 Then ToString = "N/A" End If While InStr(UCase(SearchString), UCase(FromString)) <> 0 SearchString = left(SearchString, InStr(UCase(SearchString), UCase(FromString)) - 1) + _ ToString + Mid(SearchString, InStr(UCase(SearchString), UCase(FromString)) + Len(FromString)) Wend End Sub