+ Reply to Thread
Results 1 to 3 of 3

Simplifying my previous Request for Assistance

  1. #1
    Guest

    Simplifying my previous Request for Assistance

    I suspect that (since I didn't get any response on my previous request for
    assistance) I may need to approach this in stages ...

    Assuming that Information Rights Management (IRM) won't give me the detailed
    permissions I need, basically, here's what I need:

    1. A Macro that will unprotect a series of Workbooks (approximately 200 of
    them) so that the Auto Update function in Linked Data can update without
    user intervention.

    2. I copied this Macro from a previous post -- how can I modify the
    following code to achieve what I need from it:

    Can I use something like this?
    I assume that I'll need something like this to unprotect the affected
    worksheets:
    ActiveSheet.Unprotect Password:="" '<===I assume that I'll enter
    my worksheet password between the ""

    Private Sub Workbook_Open()
    Dim vLinkSources
    Dim iLinkSource As Integer
    vLinkSources = ThisWorkbook.LinkSources(xlExcelLinks)
    If Not IsEmpty(vLinkSources) Then
    For iLinkSource = LBound(vLinkSources) To UBound(vLinkSources)
    ThisWorkbook.UpdateLink vLinkSources(iLinkSource), xlExcelLinks
    Next
    End If
    End Sub

    I'll need to re-protect the affected worksheets upon closing:
    ActiveSheet.Protect Password:="" '<===I assume that I'll enter my
    worksheet password between the ""
    End Sub

    Any help in setting me straight on this would be greately appreciated --
    thanks in advance.



  2. #2
    JLatham
    Guest

    RE: Simplifying my previous Request for Assistance

    Yes, the .Unprotect and .Protect code you have has the proper syntax. The
    password will go between the double-quotes.

    Now, unless these are single-page workbooks, or you know with absolute
    certainty that they will open to the proper sheet, you need to be prepared to
    handle that. If you know the sheet's name, you could add something like

    Worksheets("NameOfSheetINeed").Activate
    in the _Open event.

    If you don't know the sheet's name, then you can set up to just unprotect
    them all:

    Dim AnySheet as Worksheet
    For Each AnySheet in ActiveWorkbook.Worksheets
    ActiveWorkbook.Worksheets(AnySheet.Name).Unprotect Password:="mypassword"
    Next
    and a similar loop to Protect them again later. I kind of doubt that
    "mypassword" will be the right one, but ...

    Unprotect before you start trying to update the links (above the If Not
    IsEmpty() statement) then put them back into protected state below the End If
    statement.

    OH - when you open a workbook, it becomes the active workbook, so in the
    code use ActiveWorkbook. rather than ThisWorkbook. ThisWorkbook refers to
    the workbook that the code physically resides in.

    "[email protected]" wrote:

    > I suspect that (since I didn't get any response on my previous request for
    > assistance) I may need to approach this in stages ...
    >
    > Assuming that Information Rights Management (IRM) won't give me the detailed
    > permissions I need, basically, here's what I need:
    >
    > 1. A Macro that will unprotect a series of Workbooks (approximately 200 of
    > them) so that the Auto Update function in Linked Data can update without
    > user intervention.
    >
    > 2. I copied this Macro from a previous post -- how can I modify the
    > following code to achieve what I need from it:
    >
    > Can I use something like this?
    > I assume that I'll need something like this to unprotect the affected
    > worksheets:
    > ActiveSheet.Unprotect Password:="" '<===I assume that I'll enter
    > my worksheet password between the ""
    >
    > Private Sub Workbook_Open()
    > Dim vLinkSources
    > Dim iLinkSource As Integer
    > vLinkSources = ThisWorkbook.LinkSources(xlExcelLinks)
    > If Not IsEmpty(vLinkSources) Then
    > For iLinkSource = LBound(vLinkSources) To UBound(vLinkSources)
    > ThisWorkbook.UpdateLink vLinkSources(iLinkSource), xlExcelLinks
    > Next
    > End If
    > End Sub
    >
    > I'll need to re-protect the affected worksheets upon closing:
    > ActiveSheet.Protect Password:="" '<===I assume that I'll enter my
    > worksheet password between the ""
    > End Sub
    >
    > Any help in setting me straight on this would be greately appreciated --
    > thanks in advance.
    >
    >
    >


  3. #3
    Guest

    Re: Simplifying my previous Request for Assistance

    ("JLatham") ~~ Thank you for your guidance and suggestions -- here's the
    code that I have now:

    Private Sub Workbook_Open()
    Dim vLinkSources
    Dim iLinkSource As Integer
    Dim AnySheet As Worksheet
    For Each AnySheet In ActiveWorkbook.Worksheets
    ActiveWorkbook.Worksheets(AnySheet.Name).Unprotect
    Password:="mypassword"
    Next
    vLinkSources = ActiveWorkbook.LinkSources(xlExcelLinks)
    If Not IsEmpty(vLinkSources) Then
    For iLinkSource = LBound(vLinkSources) To
    UBound(vLinkSources)
    ActiveWorkbook.UpdateLink vLinkSources(iLinkSource), xlExcelLinks
    Next
    End If
    For Each AnySheet In ActiveWorkbook.Worksheets
    ActiveWorkbook.Worksheets(AnySheet.Name).Protect
    Password:="mypassword"
    Next
    End Sub

    Do you see anything that I may be missing? Now, here's the MOST important
    thing I need this code to do (assuming there are no further modifications
    needed) ...

    This code (Macro) needs to perform this same task on approximately 200
    different Workbooks (all residing in the same Network Directory), but ONLY
    when a Command Button is pressed. I'm assuming that I'll need to create a
    Form (in ACCESS perhaps) and call this Macro -- correct? How would I do
    this, and how would I get this Macro to perform this Link Update on all 200
    or so Workbooks?

    "JLatham" <[email protected]> wrote in message
    news:[email protected]...
    > Yes, the .Unprotect and .Protect code you have has the proper syntax. The
    > password will go between the double-quotes.
    >
    > Now, unless these are single-page workbooks, or you know with absolute
    > certainty that they will open to the proper sheet, you need to be prepared
    > to
    > handle that. If you know the sheet's name, you could add something like
    >
    > Worksheets("NameOfSheetINeed").Activate
    > in the _Open event.
    >
    > If you don't know the sheet's name, then you can set up to just unprotect
    > them all:
    >
    > Dim AnySheet as Worksheet
    > For Each AnySheet in ActiveWorkbook.Worksheets
    > ActiveWorkbook.Worksheets(AnySheet.Name).Unprotect
    > Password:="mypassword"
    > Next
    > and a similar loop to Protect them again later. I kind of doubt that
    > "mypassword" will be the right one, but ...
    >
    > Unprotect before you start trying to update the links (above the If Not
    > IsEmpty() statement) then put them back into protected state below the End
    > If
    > statement.
    >
    > OH - when you open a workbook, it becomes the active workbook, so in the
    > code use ActiveWorkbook. rather than ThisWorkbook. ThisWorkbook refers to
    > the workbook that the code physically resides in.
    >
    > "[email protected]" wrote:
    >
    >> I suspect that (since I didn't get any response on my previous request
    >> for
    >> assistance) I may need to approach this in stages ...
    >>
    >> Assuming that Information Rights Management (IRM) won't give me the
    >> detailed
    >> permissions I need, basically, here's what I need:
    >>
    >> 1. A Macro that will unprotect a series of Workbooks (approximately 200
    >> of
    >> them) so that the Auto Update function in Linked Data can update without
    >> user intervention.
    >>
    >> 2. I copied this Macro from a previous post -- how can I modify the
    >> following code to achieve what I need from it:
    >>
    >> Can I use something like this?
    >> I assume that I'll need something like this to unprotect the
    >> affected
    >> worksheets:
    >> ActiveSheet.Unprotect Password:="" '<===I assume that I'll
    >> enter
    >> my worksheet password between the ""
    >>
    >> Private Sub Workbook_Open()
    >> Dim vLinkSources
    >> Dim iLinkSource As Integer
    >> vLinkSources = ThisWorkbook.LinkSources(xlExcelLinks)
    >> If Not IsEmpty(vLinkSources) Then
    >> For iLinkSource = LBound(vLinkSources) To UBound(vLinkSources)
    >> ThisWorkbook.UpdateLink vLinkSources(iLinkSource), xlExcelLinks
    >> Next
    >> End If
    >> End Sub
    >>
    >> I'll need to re-protect the affected worksheets upon closing:
    >> ActiveSheet.Protect Password:="" '<===I assume that I'll enter my
    >> worksheet password between the ""
    >> End Sub
    >>
    >> Any help in setting me straight on this would be greately appreciated --
    >> thanks in advance.
    >>
    >>
    >>




+ 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