+ Reply to Thread
Results 1 to 11 of 11

Macro runs slow

Hybrid View

Guest Macro runs slow 09-16-2005, 01:05 PM
Guest Re: Macro runs slow 09-16-2005, 02:05 PM
Guest Re: Macro runs slow 09-16-2005, 03:05 PM
Guest Re: Macro runs slow 09-16-2005, 04:05 PM
Guest Re: Macro runs slow 09-19-2005, 08:15 AM
  1. #1
    Sandy
    Guest

    Macro runs slow

    Hello
    I posted this in General Question but now feel that it probably would be
    better served here.....
    I have a third party file that I use in conjunction with some of my own
    files. If I open their file alone the file performs as expected in terms of
    response time. However when I open my files the response goes from almost
    instantaneous to taking about 40 seconds. If I do repair when I open my
    file, the response is somewhat better but as soon as I save that file it
    reverts to the "SLOW" mode. I have deleted all macros in my file but this
    makes no difference. If I open a file of the relatively same size
    (600-700kb) their file works fine. Does any one have any ideas what may be
    casuing this problem?

    I have found that if I delete an arbirtary sheet or add a blank sheet
    the problem also goes away. But once saved and reopened the file it goes
    back to its old slow self. I did get the third party to release their code,
    but it is reather extensive. I will gladly post if it is a help but it seems
    as though that it is an Excel issue rather than code in that the code runs
    quickly when only the one file is open. If I turn off auto calc it works as
    though only their file is open. One of my files (that causes this behavior)
    has a macro that copies one sheet out to a new workbook(Values only no links
    no calcs no macros) and with only this newfile open with their file, the
    response bogs down. They sent me one of the macros that gets bogged down in
    a book by itself and I am still having the problem. Thier code goes way
    beyond my understanding. Does anyone see anything that might be causing a
    problem?

    Sub Initialize()
    Dim szPath As String, szDrive As String

    szPath = ThisWorkbook.Path
    szDrive = Left(szPath, 1)

    If (Right(szPath, 1) = "\") Then
    szPath = szPath & "Region"
    Else
    szPath = szPath & "\Region"
    End If

    ChDrive (szDrive)
    ChDir (szPath)

    End Sub

    Function Exist(fName As String, Optional attr As Integer = vbNormal)
    '
    'If attr = vbDirectory ==> Check directory
    '
    If (Trim(fName) = "") Then
    Exist = False
    Exit Function
    End If
    Exist = Len(Trim(Dir(fName, attr))) <> 0
    End Function

    Function YYMMDDtoDate(yy As Integer, mm As Integer, dd As Integer) As Date
    Dim dstr As String
    dstr = Trim(Str(mm)) & "/" & Trim(Str(dd)) & "/" & Trim(Str(yy))
    If IsDate(dstr) Then
    YYMMDDtoDate = DateValue(dstr)
    Else
    YYMMDDtoDate = DateValue("01/01/01")
    End If
    End Function

    Sub ForecastTemp()
    Dim mcell As Object
    Dim ndata As Integer
    Dim fno As Integer, ncol As Integer, hr As Integer
    Dim yy As Integer, mm As Integer, dd As Integer
    Dim mdate As Date
    Dim sTemp As String, fName As String
    Dim ss As String, sName As String
    Dim tok As New Tokenizer

    Call Initialize
    fName = "Temp.for"
    If (Not Exist(fName)) Then
    MsgBox "The desired file " & fName & " does not exist!",
    vbExclamation, "Error"
    Exit Sub
    End If

    sName = "Sheet1"
    Set mcell = Sheets(sName).Range("B2").Cells
    Sheets(sName).Range("B1:Z1000").Clear

    fno = FreeFile
    Open fName For Input As #fno
    ncol = 0
    While (Not EOF(fno))
    Input #fno, ss
    Call tok.Initialize(ss)
    yy = Val(tok.NextToken())
    mm = Val(tok.NextToken())
    dd = Val(tok.NextToken())
    mdate = YYMMDDtoDate(yy, mm, dd)
    mcell.Offset(0, ncol).Value = Format(mdate, "mm/dd/yyyy")
    For hr = 1 To 24
    ndata = Val(tok.NextToken())
    mcell.Offset(hr, ncol).Value = ndata
    Next hr
    ncol = ncol + 1
    Wend
    Close (fno)

    End Sub

    Temp.for is a text file that is laid out as follows.
    A1=YR
    B1=M
    C1=DD
    D1:AA1 are 24 hourly forecasted temperatures
    there are 7 days of data in A1:AA7

    When the macro runs the data is reformatted with the day1 Date in B2
    (DDMMYYYY) with temps for hours 1-24 in the column below it. Day 2 in C2 etc.

    Thanks in advance for the help



  2. #2
    Tom Ogilvy
    Guest

    Re: Macro runs slow

    Think you have already stated what the problem is. If you turn off
    autocalc, it runs fine. So turn off autocalc before you run the macro.

    --
    Regards,
    Tom Ogilvy

    "Sandy" <Sandy@discussions.microsoft.com> wrote in message
    news:078F6A87-0CA7-4A7E-AA03-1FCE346730E5@microsoft.com...
    > Hello
    > I posted this in General Question but now feel that it probably would be
    > better served here.....
    > I have a third party file that I use in conjunction with some of my own
    > files. If I open their file alone the file performs as expected in terms

    of
    > response time. However when I open my files the response goes from almost
    > instantaneous to taking about 40 seconds. If I do repair when I open my
    > file, the response is somewhat better but as soon as I save that file it
    > reverts to the "SLOW" mode. I have deleted all macros in my file but this
    > makes no difference. If I open a file of the relatively same size
    > (600-700kb) their file works fine. Does any one have any ideas what may be
    > casuing this problem?
    >
    > I have found that if I delete an arbirtary sheet or add a blank sheet
    > the problem also goes away. But once saved and reopened the file it goes
    > back to its old slow self. I did get the third party to release their

    code,
    > but it is reather extensive. I will gladly post if it is a help but it

    seems
    > as though that it is an Excel issue rather than code in that the code runs
    > quickly when only the one file is open. If I turn off auto calc it works

    as
    > though only their file is open. One of my files (that causes this

    behavior)
    > has a macro that copies one sheet out to a new workbook(Values only no

    links
    > no calcs no macros) and with only this newfile open with their file, the
    > response bogs down. They sent me one of the macros that gets bogged down

    in
    > a book by itself and I am still having the problem. Thier code goes way
    > beyond my understanding. Does anyone see anything that might be causing a
    > problem?
    >
    > Sub Initialize()
    > Dim szPath As String, szDrive As String
    >
    > szPath = ThisWorkbook.Path
    > szDrive = Left(szPath, 1)
    >
    > If (Right(szPath, 1) = "\") Then
    > szPath = szPath & "Region"
    > Else
    > szPath = szPath & "\Region"
    > End If
    >
    > ChDrive (szDrive)
    > ChDir (szPath)
    >
    > End Sub
    >
    > Function Exist(fName As String, Optional attr As Integer = vbNormal)
    > '
    > 'If attr = vbDirectory ==> Check directory
    > '
    > If (Trim(fName) = "") Then
    > Exist = False
    > Exit Function
    > End If
    > Exist = Len(Trim(Dir(fName, attr))) <> 0
    > End Function
    >
    > Function YYMMDDtoDate(yy As Integer, mm As Integer, dd As Integer) As Date
    > Dim dstr As String
    > dstr = Trim(Str(mm)) & "/" & Trim(Str(dd)) & "/" & Trim(Str(yy))
    > If IsDate(dstr) Then
    > YYMMDDtoDate = DateValue(dstr)
    > Else
    > YYMMDDtoDate = DateValue("01/01/01")
    > End If
    > End Function
    >
    > Sub ForecastTemp()
    > Dim mcell As Object
    > Dim ndata As Integer
    > Dim fno As Integer, ncol As Integer, hr As Integer
    > Dim yy As Integer, mm As Integer, dd As Integer
    > Dim mdate As Date
    > Dim sTemp As String, fName As String
    > Dim ss As String, sName As String
    > Dim tok As New Tokenizer
    >
    > Call Initialize
    > fName = "Temp.for"
    > If (Not Exist(fName)) Then
    > MsgBox "The desired file " & fName & " does not exist!",
    > vbExclamation, "Error"
    > Exit Sub
    > End If
    >
    > sName = "Sheet1"
    > Set mcell = Sheets(sName).Range("B2").Cells
    > Sheets(sName).Range("B1:Z1000").Clear
    >
    > fno = FreeFile
    > Open fName For Input As #fno
    > ncol = 0
    > While (Not EOF(fno))
    > Input #fno, ss
    > Call tok.Initialize(ss)
    > yy = Val(tok.NextToken())
    > mm = Val(tok.NextToken())
    > dd = Val(tok.NextToken())
    > mdate = YYMMDDtoDate(yy, mm, dd)
    > mcell.Offset(0, ncol).Value = Format(mdate, "mm/dd/yyyy")
    > For hr = 1 To 24
    > ndata = Val(tok.NextToken())
    > mcell.Offset(hr, ncol).Value = ndata
    > Next hr
    > ncol = ncol + 1
    > Wend
    > Close (fno)
    >
    > End Sub
    >
    > Temp.for is a text file that is laid out as follows.
    > A1=YR
    > B1=M
    > C1=DD
    > D1:AA1 are 24 hourly forecasted temperatures
    > there are 7 days of data in A1:AA7
    >
    > When the macro runs the data is reformatted with the day1 Date in B2
    > (DDMMYYYY) with temps for hours 1-24 in the column below it. Day 2 in C2

    etc.
    >
    > Thanks in advance for the help
    >
    >




  3. #3
    Sandy
    Guest

    Re: Macro runs slow

    I guess then my question is why does it act this way with the single page
    workbook with no calculations links or macros, and not with other workbooks?
    as my manager says this is just a "bandaid".


    "Tom Ogilvy" wrote:

    > Think you have already stated what the problem is. If you turn off
    > autocalc, it runs fine. So turn off autocalc before you run the macro.
    >
    > --
    > Regards,
    > Tom Ogilvy
    >
    > "Sandy" <Sandy@discussions.microsoft.com> wrote in message
    > news:078F6A87-0CA7-4A7E-AA03-1FCE346730E5@microsoft.com...
    > > Hello
    > > I posted this in General Question but now feel that it probably would be
    > > better served here.....
    > > I have a third party file that I use in conjunction with some of my own
    > > files. If I open their file alone the file performs as expected in terms

    > of
    > > response time. However when I open my files the response goes from almost
    > > instantaneous to taking about 40 seconds. If I do repair when I open my
    > > file, the response is somewhat better but as soon as I save that file it
    > > reverts to the "SLOW" mode. I have deleted all macros in my file but this
    > > makes no difference. If I open a file of the relatively same size
    > > (600-700kb) their file works fine. Does any one have any ideas what may be
    > > casuing this problem?
    > >
    > > I have found that if I delete an arbirtary sheet or add a blank sheet
    > > the problem also goes away. But once saved and reopened the file it goes
    > > back to its old slow self. I did get the third party to release their

    > code,
    > > but it is reather extensive. I will gladly post if it is a help but it

    > seems
    > > as though that it is an Excel issue rather than code in that the code runs
    > > quickly when only the one file is open. If I turn off auto calc it works

    > as
    > > though only their file is open. One of my files (that causes this

    > behavior)
    > > has a macro that copies one sheet out to a new workbook(Values only no

    > links
    > > no calcs no macros) and with only this newfile open with their file, the
    > > response bogs down. They sent me one of the macros that gets bogged down

    > in
    > > a book by itself and I am still having the problem. Thier code goes way
    > > beyond my understanding. Does anyone see anything that might be causing a
    > > problem?
    > >
    > > Sub Initialize()
    > > Dim szPath As String, szDrive As String
    > >
    > > szPath = ThisWorkbook.Path
    > > szDrive = Left(szPath, 1)
    > >
    > > If (Right(szPath, 1) = "\") Then
    > > szPath = szPath & "Region"
    > > Else
    > > szPath = szPath & "\Region"
    > > End If
    > >
    > > ChDrive (szDrive)
    > > ChDir (szPath)
    > >
    > > End Sub
    > >
    > > Function Exist(fName As String, Optional attr As Integer = vbNormal)
    > > '
    > > 'If attr = vbDirectory ==> Check directory
    > > '
    > > If (Trim(fName) = "") Then
    > > Exist = False
    > > Exit Function
    > > End If
    > > Exist = Len(Trim(Dir(fName, attr))) <> 0
    > > End Function
    > >
    > > Function YYMMDDtoDate(yy As Integer, mm As Integer, dd As Integer) As Date
    > > Dim dstr As String
    > > dstr = Trim(Str(mm)) & "/" & Trim(Str(dd)) & "/" & Trim(Str(yy))
    > > If IsDate(dstr) Then
    > > YYMMDDtoDate = DateValue(dstr)
    > > Else
    > > YYMMDDtoDate = DateValue("01/01/01")
    > > End If
    > > End Function
    > >
    > > Sub ForecastTemp()
    > > Dim mcell As Object
    > > Dim ndata As Integer
    > > Dim fno As Integer, ncol As Integer, hr As Integer
    > > Dim yy As Integer, mm As Integer, dd As Integer
    > > Dim mdate As Date
    > > Dim sTemp As String, fName As String
    > > Dim ss As String, sName As String
    > > Dim tok As New Tokenizer
    > >
    > > Call Initialize
    > > fName = "Temp.for"
    > > If (Not Exist(fName)) Then
    > > MsgBox "The desired file " & fName & " does not exist!",
    > > vbExclamation, "Error"
    > > Exit Sub
    > > End If
    > >
    > > sName = "Sheet1"
    > > Set mcell = Sheets(sName).Range("B2").Cells
    > > Sheets(sName).Range("B1:Z1000").Clear
    > >
    > > fno = FreeFile
    > > Open fName For Input As #fno
    > > ncol = 0
    > > While (Not EOF(fno))
    > > Input #fno, ss
    > > Call tok.Initialize(ss)
    > > yy = Val(tok.NextToken())
    > > mm = Val(tok.NextToken())
    > > dd = Val(tok.NextToken())
    > > mdate = YYMMDDtoDate(yy, mm, dd)
    > > mcell.Offset(0, ncol).Value = Format(mdate, "mm/dd/yyyy")
    > > For hr = 1 To 24
    > > ndata = Val(tok.NextToken())
    > > mcell.Offset(hr, ncol).Value = ndata
    > > Next hr
    > > ncol = ncol + 1
    > > Wend
    > > Close (fno)
    > >
    > > End Sub
    > >
    > > Temp.for is a text file that is laid out as follows.
    > > A1=YR
    > > B1=M
    > > C1=DD
    > > D1:AA1 are 24 hourly forecasted temperatures
    > > there are 7 days of data in A1:AA7
    > >
    > > When the macro runs the data is reformatted with the day1 Date in B2
    > > (DDMMYYYY) with temps for hours 1-24 in the column below it. Day 2 in C2

    > etc.
    > >
    > > Thanks in advance for the help
    > >
    > >

    >
    >
    >


  4. #4
    Peter T
    Guest

    Re: Macro runs slow

    Maybe calculations occur that you're unaware of. To see what's going on -

    Add a Class module named Class1

    ' in Class1
    Public WithEvents xl As Excel.Application

    Private Sub xl_SheetCalculate(ByVal Sh As Object)
    Debug.Print Sh.Parent.Name, Sh.Name
    End Sub

    Private Sub xl_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    MsgBox 11
    End Sub
    ''''''''''''''

    and in a normal module -

    ' in a normal module
    Dim clsAPP As Class1

    Sub SetAppEvents()

    Set clsAPP = New Class1
    Set clsAPP.xl = Application

    End Sub
    '''''''''''

    Run SetAppEvents, then run your problematic addin. Look in the immediate
    window Ctrl-g.

    If it appears calculation events are unexpectedly occurring, add the
    xl_SheetChange event to the Class and debug print Target address & value.

    Regards,
    Peter T


    "Sandy" <Sandy@discussions.microsoft.com> wrote in message
    news:8F25809F-5A6B-401F-8934-E10FE8F326E9@microsoft.com...
    > I guess then my question is why does it act this way with the single page
    > workbook with no calculations links or macros, and not with other

    workbooks?
    > as my manager says this is just a "bandaid".
    >
    >
    > "Tom Ogilvy" wrote:
    >
    > > Think you have already stated what the problem is. If you turn off
    > > autocalc, it runs fine. So turn off autocalc before you run the macro.
    > >
    > > --
    > > Regards,
    > > Tom Ogilvy
    > >
    > > "Sandy" <Sandy@discussions.microsoft.com> wrote in message
    > > news:078F6A87-0CA7-4A7E-AA03-1FCE346730E5@microsoft.com...
    > > > Hello
    > > > I posted this in General Question but now feel that it probably would

    be
    > > > better served here.....
    > > > I have a third party file that I use in conjunction with some of my

    own
    > > > files. If I open their file alone the file performs as expected in

    terms
    > > of
    > > > response time. However when I open my files the response goes from

    almost
    > > > instantaneous to taking about 40 seconds. If I do repair when I open

    my
    > > > file, the response is somewhat better but as soon as I save that file

    it
    > > > reverts to the "SLOW" mode. I have deleted all macros in my file but

    this
    > > > makes no difference. If I open a file of the relatively same size
    > > > (600-700kb) their file works fine. Does any one have any ideas what

    may be
    > > > casuing this problem?
    > > >
    > > > I have found that if I delete an arbirtary sheet or add a blank sheet
    > > > the problem also goes away. But once saved and reopened the file it

    goes
    > > > back to its old slow self. I did get the third party to release their

    > > code,
    > > > but it is reather extensive. I will gladly post if it is a help but it

    > > seems
    > > > as though that it is an Excel issue rather than code in that the code

    runs
    > > > quickly when only the one file is open. If I turn off auto calc it

    works
    > > as
    > > > though only their file is open. One of my files (that causes this

    > > behavior)
    > > > has a macro that copies one sheet out to a new workbook(Values only no

    > > links
    > > > no calcs no macros) and with only this newfile open with their file,

    the
    > > > response bogs down. They sent me one of the macros that gets bogged

    down
    > > in
    > > > a book by itself and I am still having the problem. Thier code goes

    way
    > > > beyond my understanding. Does anyone see anything that might be

    causing a
    > > > problem?
    > > >
    > > > Sub Initialize()
    > > > Dim szPath As String, szDrive As String
    > > >
    > > > szPath = ThisWorkbook.Path
    > > > szDrive = Left(szPath, 1)
    > > >
    > > > If (Right(szPath, 1) = "\") Then
    > > > szPath = szPath & "Region"
    > > > Else
    > > > szPath = szPath & "\Region"
    > > > End If
    > > >
    > > > ChDrive (szDrive)
    > > > ChDir (szPath)
    > > >
    > > > End Sub
    > > >
    > > > Function Exist(fName As String, Optional attr As Integer = vbNormal)
    > > > '
    > > > 'If attr = vbDirectory ==> Check directory
    > > > '
    > > > If (Trim(fName) = "") Then
    > > > Exist = False
    > > > Exit Function
    > > > End If
    > > > Exist = Len(Trim(Dir(fName, attr))) <> 0
    > > > End Function
    > > >
    > > > Function YYMMDDtoDate(yy As Integer, mm As Integer, dd As Integer) As

    Date
    > > > Dim dstr As String
    > > > dstr = Trim(Str(mm)) & "/" & Trim(Str(dd)) & "/" & Trim(Str(yy))
    > > > If IsDate(dstr) Then
    > > > YYMMDDtoDate = DateValue(dstr)
    > > > Else
    > > > YYMMDDtoDate = DateValue("01/01/01")
    > > > End If
    > > > End Function
    > > >
    > > > Sub ForecastTemp()
    > > > Dim mcell As Object
    > > > Dim ndata As Integer
    > > > Dim fno As Integer, ncol As Integer, hr As Integer
    > > > Dim yy As Integer, mm As Integer, dd As Integer
    > > > Dim mdate As Date
    > > > Dim sTemp As String, fName As String
    > > > Dim ss As String, sName As String
    > > > Dim tok As New Tokenizer
    > > >
    > > > Call Initialize
    > > > fName = "Temp.for"
    > > > If (Not Exist(fName)) Then
    > > > MsgBox "The desired file " & fName & " does not exist!",
    > > > vbExclamation, "Error"
    > > > Exit Sub
    > > > End If
    > > >
    > > > sName = "Sheet1"
    > > > Set mcell = Sheets(sName).Range("B2").Cells
    > > > Sheets(sName).Range("B1:Z1000").Clear
    > > >
    > > > fno = FreeFile
    > > > Open fName For Input As #fno
    > > > ncol = 0
    > > > While (Not EOF(fno))
    > > > Input #fno, ss
    > > > Call tok.Initialize(ss)
    > > > yy = Val(tok.NextToken())
    > > > mm = Val(tok.NextToken())
    > > > dd = Val(tok.NextToken())
    > > > mdate = YYMMDDtoDate(yy, mm, dd)
    > > > mcell.Offset(0, ncol).Value = Format(mdate, "mm/dd/yyyy")
    > > > For hr = 1 To 24
    > > > ndata = Val(tok.NextToken())
    > > > mcell.Offset(hr, ncol).Value = ndata
    > > > Next hr
    > > > ncol = ncol + 1
    > > > Wend
    > > > Close (fno)
    > > >
    > > > End Sub
    > > >
    > > > Temp.for is a text file that is laid out as follows.
    > > > A1=YR
    > > > B1=M
    > > > C1=DD
    > > > D1:AA1 are 24 hourly forecasted temperatures
    > > > there are 7 days of data in A1:AA7
    > > >
    > > > When the macro runs the data is reformatted with the day1 Date in B2
    > > > (DDMMYYYY) with temps for hours 1-24 in the column below it. Day 2 in

    C2
    > > etc.
    > > >
    > > > Thanks in advance for the help
    > > >
    > > >

    > >
    > >
    > >




  5. #5
    Sandy
    Guest

    Re: Macro runs slow

    Thanks for the input
    I dont see how there can be any calcs---this sheet is a copy paste vales only
    Sandy

    "Peter T" wrote:

    > Maybe calculations occur that you're unaware of. To see what's going on -
    >
    > Add a Class module named Class1
    >
    > ' in Class1
    > Public WithEvents xl As Excel.Application
    >
    > Private Sub xl_SheetCalculate(ByVal Sh As Object)
    > Debug.Print Sh.Parent.Name, Sh.Name
    > End Sub
    >
    > Private Sub xl_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    > MsgBox 11
    > End Sub
    > ''''''''''''''
    >
    > and in a normal module -
    >
    > ' in a normal module
    > Dim clsAPP As Class1
    >
    > Sub SetAppEvents()
    >
    > Set clsAPP = New Class1
    > Set clsAPP.xl = Application
    >
    > End Sub
    > '''''''''''
    >
    > Run SetAppEvents, then run your problematic addin. Look in the immediate
    > window Ctrl-g.
    >
    > If it appears calculation events are unexpectedly occurring, add the
    > xl_SheetChange event to the Class and debug print Target address & value.
    >
    > Regards,
    > Peter T
    >
    >
    > "Sandy" <Sandy@discussions.microsoft.com> wrote in message
    > news:8F25809F-5A6B-401F-8934-E10FE8F326E9@microsoft.com...
    > > I guess then my question is why does it act this way with the single page
    > > workbook with no calculations links or macros, and not with other

    > workbooks?
    > > as my manager says this is just a "bandaid".
    > >
    > >
    > > "Tom Ogilvy" wrote:
    > >
    > > > Think you have already stated what the problem is. If you turn off
    > > > autocalc, it runs fine. So turn off autocalc before you run the macro.
    > > >
    > > > --
    > > > Regards,
    > > > Tom Ogilvy
    > > >
    > > > "Sandy" <Sandy@discussions.microsoft.com> wrote in message
    > > > news:078F6A87-0CA7-4A7E-AA03-1FCE346730E5@microsoft.com...
    > > > > Hello
    > > > > I posted this in General Question but now feel that it probably would

    > be
    > > > > better served here.....
    > > > > I have a third party file that I use in conjunction with some of my

    > own
    > > > > files. If I open their file alone the file performs as expected in

    > terms
    > > > of
    > > > > response time. However when I open my files the response goes from

    > almost
    > > > > instantaneous to taking about 40 seconds. If I do repair when I open

    > my
    > > > > file, the response is somewhat better but as soon as I save that file

    > it
    > > > > reverts to the "SLOW" mode. I have deleted all macros in my file but

    > this
    > > > > makes no difference. If I open a file of the relatively same size
    > > > > (600-700kb) their file works fine. Does any one have any ideas what

    > may be
    > > > > casuing this problem?
    > > > >
    > > > > I have found that if I delete an arbirtary sheet or add a blank sheet
    > > > > the problem also goes away. But once saved and reopened the file it

    > goes
    > > > > back to its old slow self. I did get the third party to release their
    > > > code,
    > > > > but it is reather extensive. I will gladly post if it is a help but it
    > > > seems
    > > > > as though that it is an Excel issue rather than code in that the code

    > runs
    > > > > quickly when only the one file is open. If I turn off auto calc it

    > works
    > > > as
    > > > > though only their file is open. One of my files (that causes this
    > > > behavior)
    > > > > has a macro that copies one sheet out to a new workbook(Values only no
    > > > links
    > > > > no calcs no macros) and with only this newfile open with their file,

    > the
    > > > > response bogs down. They sent me one of the macros that gets bogged

    > down
    > > > in
    > > > > a book by itself and I am still having the problem. Thier code goes

    > way
    > > > > beyond my understanding. Does anyone see anything that might be

    > causing a
    > > > > problem?
    > > > >
    > > > > Sub Initialize()
    > > > > Dim szPath As String, szDrive As String
    > > > >
    > > > > szPath = ThisWorkbook.Path
    > > > > szDrive = Left(szPath, 1)
    > > > >
    > > > > If (Right(szPath, 1) = "\") Then
    > > > > szPath = szPath & "Region"
    > > > > Else
    > > > > szPath = szPath & "\Region"
    > > > > End If
    > > > >
    > > > > ChDrive (szDrive)
    > > > > ChDir (szPath)
    > > > >
    > > > > End Sub
    > > > >
    > > > > Function Exist(fName As String, Optional attr As Integer = vbNormal)
    > > > > '
    > > > > 'If attr = vbDirectory ==> Check directory
    > > > > '
    > > > > If (Trim(fName) = "") Then
    > > > > Exist = False
    > > > > Exit Function
    > > > > End If
    > > > > Exist = Len(Trim(Dir(fName, attr))) <> 0
    > > > > End Function
    > > > >
    > > > > Function YYMMDDtoDate(yy As Integer, mm As Integer, dd As Integer) As

    > Date
    > > > > Dim dstr As String
    > > > > dstr = Trim(Str(mm)) & "/" & Trim(Str(dd)) & "/" & Trim(Str(yy))
    > > > > If IsDate(dstr) Then
    > > > > YYMMDDtoDate = DateValue(dstr)
    > > > > Else
    > > > > YYMMDDtoDate = DateValue("01/01/01")
    > > > > End If
    > > > > End Function
    > > > >
    > > > > Sub ForecastTemp()
    > > > > Dim mcell As Object
    > > > > Dim ndata As Integer
    > > > > Dim fno As Integer, ncol As Integer, hr As Integer
    > > > > Dim yy As Integer, mm As Integer, dd As Integer
    > > > > Dim mdate As Date
    > > > > Dim sTemp As String, fName As String
    > > > > Dim ss As String, sName As String
    > > > > Dim tok As New Tokenizer
    > > > >
    > > > > Call Initialize
    > > > > fName = "Temp.for"
    > > > > If (Not Exist(fName)) Then
    > > > > MsgBox "The desired file " & fName & " does not exist!",
    > > > > vbExclamation, "Error"
    > > > > Exit Sub
    > > > > End If
    > > > >
    > > > > sName = "Sheet1"
    > > > > Set mcell = Sheets(sName).Range("B2").Cells
    > > > > Sheets(sName).Range("B1:Z1000").Clear
    > > > >
    > > > > fno = FreeFile
    > > > > Open fName For Input As #fno
    > > > > ncol = 0
    > > > > While (Not EOF(fno))
    > > > > Input #fno, ss
    > > > > Call tok.Initialize(ss)
    > > > > yy = Val(tok.NextToken())
    > > > > mm = Val(tok.NextToken())
    > > > > dd = Val(tok.NextToken())
    > > > > mdate = YYMMDDtoDate(yy, mm, dd)
    > > > > mcell.Offset(0, ncol).Value = Format(mdate, "mm/dd/yyyy")
    > > > > For hr = 1 To 24
    > > > > ndata = Val(tok.NextToken())
    > > > > mcell.Offset(hr, ncol).Value = ndata
    > > > > Next hr
    > > > > ncol = ncol + 1
    > > > > Wend
    > > > > Close (fno)
    > > > >
    > > > > End Sub
    > > > >
    > > > > Temp.for is a text file that is laid out as follows.
    > > > > A1=YR
    > > > > B1=M
    > > > > C1=DD
    > > > > D1:AA1 are 24 hourly forecasted temperatures
    > > > > there are 7 days of data in A1:AA7
    > > > >
    > > > > When the macro runs the data is reformatted with the day1 Date in B2
    > > > > (DDMMYYYY) with temps for hours 1-24 in the column below it. Day 2 in

    > C2
    > > > etc.
    > > > >
    > > > > Thanks in advance for the help
    > > > >
    > > > >
    > > >
    > > >
    > > >

    >
    >
    >


  6. #6
    Peter T
    Guest

    Re: Macro runs slow

    So why is it if you disable Calc everything runs OK !

    Regards,
    Peter T

    "Sandy" <Sandy@discussions.microsoft.com> wrote in message
    news:FC0ACE53-5854-48AE-B818-00E50B013E31@microsoft.com...
    > Thanks for the input
    > I dont see how there can be any calcs---this sheet is a copy paste vales

    only
    > Sandy
    >
    > "Peter T" wrote:
    >
    > > Maybe calculations occur that you're unaware of. To see what's going

    on -
    > >
    > > Add a Class module named Class1
    > >
    > > ' in Class1
    > > Public WithEvents xl As Excel.Application
    > >
    > > Private Sub xl_SheetCalculate(ByVal Sh As Object)
    > > Debug.Print Sh.Parent.Name, Sh.Name
    > > End Sub
    > >
    > > Private Sub xl_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    > > MsgBox 11
    > > End Sub
    > > ''''''''''''''
    > >
    > > and in a normal module -
    > >
    > > ' in a normal module
    > > Dim clsAPP As Class1
    > >
    > > Sub SetAppEvents()
    > >
    > > Set clsAPP = New Class1
    > > Set clsAPP.xl = Application
    > >
    > > End Sub
    > > '''''''''''
    > >
    > > Run SetAppEvents, then run your problematic addin. Look in the immediate
    > > window Ctrl-g.
    > >
    > > If it appears calculation events are unexpectedly occurring, add the
    > > xl_SheetChange event to the Class and debug print Target address &

    value.
    > >
    > > Regards,
    > > Peter T
    > >
    > >
    > > "Sandy" <Sandy@discussions.microsoft.com> wrote in message
    > > news:8F25809F-5A6B-401F-8934-E10FE8F326E9@microsoft.com...
    > > > I guess then my question is why does it act this way with the single

    page
    > > > workbook with no calculations links or macros, and not with other

    > > workbooks?
    > > > as my manager says this is just a "bandaid".
    > > >
    > > >
    > > > "Tom Ogilvy" wrote:
    > > >
    > > > > Think you have already stated what the problem is. If you turn off
    > > > > autocalc, it runs fine. So turn off autocalc before you run the

    macro.
    > > > >
    > > > > --
    > > > > Regards,
    > > > > Tom Ogilvy
    > > > >
    > > > > "Sandy" <Sandy@discussions.microsoft.com> wrote in message
    > > > > news:078F6A87-0CA7-4A7E-AA03-1FCE346730E5@microsoft.com...
    > > > > > Hello
    > > > > > I posted this in General Question but now feel that it probably

    would
    > > be
    > > > > > better served here.....
    > > > > > I have a third party file that I use in conjunction with some of

    my
    > > own
    > > > > > files. If I open their file alone the file performs as expected in

    > > terms
    > > > > of
    > > > > > response time. However when I open my files the response goes from

    > > almost
    > > > > > instantaneous to taking about 40 seconds. If I do repair when I

    open
    > > my
    > > > > > file, the response is somewhat better but as soon as I save that

    file
    > > it
    > > > > > reverts to the "SLOW" mode. I have deleted all macros in my file

    but
    > > this
    > > > > > makes no difference. If I open a file of the relatively same size
    > > > > > (600-700kb) their file works fine. Does any one have any ideas

    what
    > > may be
    > > > > > casuing this problem?
    > > > > >
    > > > > > I have found that if I delete an arbirtary sheet or add a blank

    sheet
    > > > > > the problem also goes away. But once saved and reopened the file

    it
    > > goes
    > > > > > back to its old slow self. I did get the third party to release

    their
    > > > > code,
    > > > > > but it is reather extensive. I will gladly post if it is a help

    but it
    > > > > seems
    > > > > > as though that it is an Excel issue rather than code in that the

    code
    > > runs
    > > > > > quickly when only the one file is open. If I turn off auto calc

    it
    > > works
    > > > > as
    > > > > > though only their file is open. One of my files (that causes this
    > > > > behavior)
    > > > > > has a macro that copies one sheet out to a new workbook(Values

    only no
    > > > > links
    > > > > > no calcs no macros) and with only this newfile open with their

    file,
    > > the
    > > > > > response bogs down. They sent me one of the macros that gets

    bogged
    > > down
    > > > > in
    > > > > > a book by itself and I am still having the problem. Thier code

    goes
    > > way
    > > > > > beyond my understanding. Does anyone see anything that might be

    > > causing a
    > > > > > problem?
    > > > > >
    > > > > > Sub Initialize()
    > > > > > Dim szPath As String, szDrive As String
    > > > > >
    > > > > > szPath = ThisWorkbook.Path
    > > > > > szDrive = Left(szPath, 1)
    > > > > >
    > > > > > If (Right(szPath, 1) = "\") Then
    > > > > > szPath = szPath & "Region"
    > > > > > Else
    > > > > > szPath = szPath & "\Region"
    > > > > > End If
    > > > > >
    > > > > > ChDrive (szDrive)
    > > > > > ChDir (szPath)
    > > > > >
    > > > > > End Sub
    > > > > >
    > > > > > Function Exist(fName As String, Optional attr As Integer =

    vbNormal)
    > > > > > '
    > > > > > 'If attr = vbDirectory ==> Check directory
    > > > > > '
    > > > > > If (Trim(fName) = "") Then
    > > > > > Exist = False
    > > > > > Exit Function
    > > > > > End If
    > > > > > Exist = Len(Trim(Dir(fName, attr))) <> 0
    > > > > > End Function
    > > > > >
    > > > > > Function YYMMDDtoDate(yy As Integer, mm As Integer, dd As Integer)

    As
    > > Date
    > > > > > Dim dstr As String
    > > > > > dstr = Trim(Str(mm)) & "/" & Trim(Str(dd)) & "/" &

    Trim(Str(yy))
    > > > > > If IsDate(dstr) Then
    > > > > > YYMMDDtoDate = DateValue(dstr)
    > > > > > Else
    > > > > > YYMMDDtoDate = DateValue("01/01/01")
    > > > > > End If
    > > > > > End Function
    > > > > >
    > > > > > Sub ForecastTemp()
    > > > > > Dim mcell As Object
    > > > > > Dim ndata As Integer
    > > > > > Dim fno As Integer, ncol As Integer, hr As Integer
    > > > > > Dim yy As Integer, mm As Integer, dd As Integer
    > > > > > Dim mdate As Date
    > > > > > Dim sTemp As String, fName As String
    > > > > > Dim ss As String, sName As String
    > > > > > Dim tok As New Tokenizer
    > > > > >
    > > > > > Call Initialize
    > > > > > fName = "Temp.for"
    > > > > > If (Not Exist(fName)) Then
    > > > > > MsgBox "The desired file " & fName & " does not exist!",
    > > > > > vbExclamation, "Error"
    > > > > > Exit Sub
    > > > > > End If
    > > > > >
    > > > > > sName = "Sheet1"
    > > > > > Set mcell = Sheets(sName).Range("B2").Cells
    > > > > > Sheets(sName).Range("B1:Z1000").Clear
    > > > > >
    > > > > > fno = FreeFile
    > > > > > Open fName For Input As #fno
    > > > > > ncol = 0
    > > > > > While (Not EOF(fno))
    > > > > > Input #fno, ss
    > > > > > Call tok.Initialize(ss)
    > > > > > yy = Val(tok.NextToken())
    > > > > > mm = Val(tok.NextToken())
    > > > > > dd = Val(tok.NextToken())
    > > > > > mdate = YYMMDDtoDate(yy, mm, dd)
    > > > > > mcell.Offset(0, ncol).Value = Format(mdate, "mm/dd/yyyy")
    > > > > > For hr = 1 To 24
    > > > > > ndata = Val(tok.NextToken())
    > > > > > mcell.Offset(hr, ncol).Value = ndata
    > > > > > Next hr
    > > > > > ncol = ncol + 1
    > > > > > Wend
    > > > > > Close (fno)
    > > > > >
    > > > > > End Sub
    > > > > >
    > > > > > Temp.for is a text file that is laid out as follows.
    > > > > > A1=YR
    > > > > > B1=M
    > > > > > C1=DD
    > > > > > D1:AA1 are 24 hourly forecasted temperatures
    > > > > > there are 7 days of data in A1:AA7
    > > > > >
    > > > > > When the macro runs the data is reformatted with the day1 Date in

    B2
    > > > > > (DDMMYYYY) with temps for hours 1-24 in the column below it. Day 2

    in
    > > C2
    > > > > etc.
    > > > > >
    > > > > > Thanks in advance for the help
    > > > > >
    > > > > >
    > > > >
    > > > >
    > > > >

    > >
    > >
    > >




  7. #7
    Bill Martin
    Guest

    Re: Macro runs slow

    Sandy wrote:
    > Thanks for the input
    > I dont see how there can be any calcs---this sheet is a copy paste vales only
    > Sandy


    That's the perennial problem with debug. We convince ourselves that "X" can't
    be the problem, so we don't examine X closely -- until a week later.

    Bill

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1