+ Reply to Thread
Results 1 to 3 of 3

Playing around with Syntax

  1. #1
    Hari Prasadh
    Guest

    Playing around with Syntax

    Hi,

    Some problem with syntax below.

    sub try()
    dim sh as worksheet
    Dim NameOfOSWorkbook As Workbook
    Dim NameOfOEWorkbook As Workbook
    NameOfOSWorkbook.Name = "Open end data (OS).xls"
    NameOfOEWorkbook.Name = "Open end data (OE).xls"
    For each sh in NameOfOSWorkbook
    ...
    ...
    ...
    Call readingarrayofuniquewords(sh)
    ...
    ...
    ...
    Next sh

    End sub


    Im getting -- Compile error : cant assign to read-only property-- at the
    line -- NameOfOSWorkbook.Name = "Open end data (OS).xls"

    Why am I getting the same. If possible please point out the flaw in my
    understanding (When we could write a statement like --
    activeworkbook.name -- then why not -- NameOfOSWorkbook.Name --

    Basically I wanted to store a workbook's name in one place so that if it
    changes I could change it at one place.

    I have gotten around the above problem in another circuitous manner, given
    below.

    Dim sh As Worksheet
    Dim NameOfOSWorkbook As String
    Dim NameOfOEWorkbook As String
    NameOfOSWorkbook = "Open end data (OS).xls"
    NameOfOEWorkbook = "Open end data (OE).xls"
    For each sh in Workbooks(NameOfOSWorkbook)
    ...
    ...
    ...
    Call readingarrayofuniquewords(sh)
    ...
    ...
    ...
    Next sh

    End sub

    But now am getting -- compile error ByRef argument type mismatch -- in the
    line Call readingarrayofuniquewords(sh). Basically I wanted to pass the name
    of the worksheet sh. When I changed it to -- Call
    readingarrayofuniquewords(sh.name) -- things were fine.

    Is there a more efficient way to code the above (I keep doing things by
    trial and error).

    Thanks a lot,
    Hari
    India



  2. #2
    ben
    Guest

    RE: Playing around with Syntax

    notice that error message
    "Can not assign property to READ-ONLY"
    workbooks("whatever").name
    is READ ONLY you can not assign it, as far as I know the only way to change
    a workbook name is to use
    SaveAs
    method. Anyone else know of something else?

    "Hari Prasadh" wrote:

    > Hi,
    >
    > Some problem with syntax below.
    >
    > sub try()
    > dim sh as worksheet
    > Dim NameOfOSWorkbook As Workbook
    > Dim NameOfOEWorkbook As Workbook
    > NameOfOSWorkbook.Name = "Open end data (OS).xls"
    > NameOfOEWorkbook.Name = "Open end data (OE).xls"
    > For each sh in NameOfOSWorkbook
    > ...
    > ...
    > ...
    > Call readingarrayofuniquewords(sh)
    > ...
    > ...
    > ...
    > Next sh
    >
    > End sub
    >
    >
    > Im getting -- Compile error : cant assign to read-only property-- at the
    > line -- NameOfOSWorkbook.Name = "Open end data (OS).xls"
    >
    > Why am I getting the same. If possible please point out the flaw in my
    > understanding (When we could write a statement like --
    > activeworkbook.name -- then why not -- NameOfOSWorkbook.Name --
    >
    > Basically I wanted to store a workbook's name in one place so that if it
    > changes I could change it at one place.
    >
    > I have gotten around the above problem in another circuitous manner, given
    > below.
    >
    > Dim sh As Worksheet
    > Dim NameOfOSWorkbook As String
    > Dim NameOfOEWorkbook As String
    > NameOfOSWorkbook = "Open end data (OS).xls"
    > NameOfOEWorkbook = "Open end data (OE).xls"
    > For each sh in Workbooks(NameOfOSWorkbook)
    > ...
    > ...
    > ...
    > Call readingarrayofuniquewords(sh)
    > ...
    > ...
    > ...
    > Next sh
    >
    > End sub
    >
    > But now am getting -- compile error ByRef argument type mismatch -- in the
    > line Call readingarrayofuniquewords(sh). Basically I wanted to pass the name
    > of the worksheet sh. When I changed it to -- Call
    > readingarrayofuniquewords(sh.name) -- things were fine.
    >
    > Is there a more efficient way to code the above (I keep doing things by
    > trial and error).
    >
    > Thanks a lot,
    > Hari
    > India
    >
    >
    >


  3. #3
    Hari Prasadh
    Guest

    Re: Playing around with Syntax

    Hi Ben,

    Thnx for the reply.

    Actually my intention was not to change the Name of the workbook. Rather I
    want to store the name of the workbook in a String such as --
    NameOfOSWorkbook -- and then through out my code whenever I wanted to refer
    the workbook I wanted to use the name of the string -- NameOfOSWorkbook --
    rather than using the actual name of the workbook.

    This way if the workbook name changes I would have to change the code at one
    line, which is to change the right hand side of the code --
    NameOfOSWorkbook.Name = "Open end data (OS).xls" --

    Ok, now I understand that NameOfOSWorkbook.Name is erroneous because it
    implies changing name of the workbook.

    So, does that mean the following is the ONLY way to reference a workbook
    (NameOfOSWorkbook). Or is there a more efficient method?

    Dim sh As Worksheet
    Dim NameOfOSWorkbook As String
    Dim NameOfOEWorkbook As String
    NameOfOSWorkbook = "Open end data (OS).xls"
    NameOfOEWorkbook = "Open end data (OE).xls"
    For Each sh In Workbooks(NameOfOSWorkbook).Worksheets
    ...
    ...
    ...
    Call readingarrayofuniquewords(sh.name)
    ...
    ...
    ...
    Next sh



    Thanks a lot,
    Hari
    India



+ 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