Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / New Users / January 2007

Tip: Looking for answers? Try searching our database.

Linking

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
kev - 23 Jan 2007 09:50 GMT
Hi folks,

This might be an easy one but it has been bugging me for hours already.
I have a workbook (seri.xls)  with 6 worksheets namely:
Frontpage,Input,PartsData,LookupLists,PivotTable,MsiaChart.

I have created two links from my website which will open the respective
worksheet
view blabla link to PartsData worksheet
view status link to MsiaChart worksheet
(but i dun prefer this method as users can unhide other sheets in the
same workbook)

Is there a way i can create two separate workbook one for PartsData
worksheet in workbook A and one for MsiaChart worksheet in workbook B.
Thus i can link"
view blabla link to PartsData worksheet in workbook A
view status link to MsiaChart worksheet in workbook B.

My second question is by doing this method does it ensure that the main
workbook (seri.xls) always will auto update data into workbook A and
B.How can i do this?

please help.Thanks.
KC Rippstein - 23 Jan 2007 14:33 GMT
Hi, Kev.  I actually do this myself so that folks have a "report" workbook
that shows what they need without accessing the raw data.  This is fairly
easy, actually.

Take your PartsData sheet and right-click the tab name.  Select "Move or
Copy", select "New Workbook" from the drop down box, and check the box to
"Create a copy".  Same thing with the chart.

Now on the new PartsData workbook, highlight A1 to the end of all your data
and type this formula (click on seri.xls/PartsData where I put <click>:
=IF(<click>A1<>"",<click>A1,"") and hit Ctrl+Enter.  This tells the new
workbook to just find the value for each cell from the original workbook on
a real-time basis, and testing for blanks will prevent those from carrying
over as zeroes.  Since you copied the original worksheet, the original
formatting will remain intact.  While new headings will carry over to the
new workbook, new formatting will not.  If that ever becomes a need, just
highlight the entire original worksheet and use the format painter to update
the separate workbook.

Now protect your new workbooks from being changed and you're done.  Link to
the new files instead of the old one.

- KC

> Hi folks,
>
[quoted text clipped - 20 lines]
>
> please help.Thanks.
kev - 24 Jan 2007 02:58 GMT
Hi KC,

This method does not seem to work as i put in a new record in seri.xls
and it does not update in the new workbook for PartsData. btw, A1 in
the formula refers to the cell A1 in the seri.xls workbook rite?any
other suggestions?Please help as i am running out of time.

Thanks.

On Jan 23, 10:33 pm, "KC Rippstein" <kcrippsteinAThotmailDOTcom>
wrote:
> Hi, Kev.  I actually do this myself so that folks have a "report" workbook
> that shows what they need without accessing the raw data.  This is fairly
[quoted text clipped - 44 lines]
>
> > please help.Thanks.- Hide quoted text -- Show quoted text -
KC Rippstein - 24 Jan 2007 19:53 GMT
I think you've got the principle of it down, you just need to extend your
formulas down as many rows as you think you'll need.  Go ahead and drag the
formula down 20,000 rows if you have to, as they are not actually requiring
any "calculation" and should not slow Excel down one bit.  Then as you add
more data to the original, the new worksheet will show the new data in real
time.
Yes, if you call your new worksheet PartsDataReport, then cell A1 on that
sheet ='[seri.xls]PartsData'!A1, then that formula is dragged across your
columns and then down as far as you want.

> Hi KC,
>
[quoted text clipped - 61 lines]
>>
>> > please help.Thanks.- Hide quoted text -- Show quoted text -
kounoike - 24 Jan 2007 12:21 GMT
I'm not sure this is what you are after.
the macro below will copy PartsData sheet to WorkbookA and MsiaChart sheet
to WorkbookB respectively, then save those workbooks into directory
"C:\tmp".
Copy the code below to your standard module in your seri.xls and run it.

Sub extractsheet()
Dim arr, Linkco
Dim acbook As Workbook, wktmp As Workbook
Dim distdir As String
Dim i As Long, j As Long

Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWorkbook.Save

'Change those names in array below -
'   to your name of workbook and sheet
arr = Array(Array("WorkbookA.xls", "PartsData"), _
       Array("WorkbookB.xls", "MsiaChart"))
distdir = "C:\tmp"  '<=== Change this to your path name

On Error GoTo errhandler
ChDir distdir
Set acbook = ActiveWorkbook
Application.SheetsInNewWorkbook = 1
For i = 0 To UBound(arr)
   Set wktmp = Workbooks.Add
   For j = 1 To UBound(arr(i))
       acbook.Sheets(arr(i)(j)).Copy _
           before:=wktmp.Sheets(1)
   Next
   wktmp.Sheets(wktmp.Sheets.Count).Delete
   Linkco = wktmp.LinkSources _
           (Type:=xlLinkTypeExcelLinks)
   If Not IsEmpty(Linkco) Then
       For j = 1 To UBound(Linkco)
           wktmp.BreakLink _
           Name:=Linkco(j), _
           Type:=xlLinkTypeExcelLinks
       Next
   End If
   wktmp.SaveAs Filename:=arr(i)(0)
   wktmp.Close
Next
Exit Sub
errhandler:
If Err.Number = 9 Then
   MsgBox "Sheet's name " & arr(i)(1) & _
       " is not found"
ElseIf Err.Number = 76 Then
   MsgBox "Can't find path " & distdir
Else
   MsgBox "Unkown error"
End If
wktmp.Close
End Sub

Or you can put the code like below into ThisWorkbook module in your
seri.xls, then it would update WorkbookA and WorkbookB automatically when
you close seri.xls.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   extractsheet
End Sub

keizi

> Hi folks,
>
[quoted text clipped - 20 lines]
>
> please help.Thanks.
kev - 25 Jan 2007 02:58 GMT
Hi kounoike,

That worked so wonderful. Thanks so much.
Just one tiny problem, whenever it extracts it does not protect the
sheet.I have set it as protect sheet earlier on but when any new data
is added and it extracts again it does not protect the sheet making it
vulnerable for changes by users, pls help... i m in d process of
closing this project already just waiting for your reply.

> I'm not sure this is what you are after.
> the macro below will copy PartsData sheet to WorkbookA and MsiaChart sheet
[quoted text clipped - 88 lines]
>
> > please help.Thanks.- Hide quoted text -- Show quoted text -
kounoike - 25 Jan 2007 06:27 GMT
Hi kev

i don't know whether this is enough or not for your requirement. i modified
the code a little only to protect each sheets in each workbook with the
"same" password. but i think this one is also vulnerable because the
password reside in the code.

Sub extractsheet()
Dim arr, Linkco
Dim acbook As Workbook, wktmp As Workbook
Dim distdir As String
Dim i As Long, j As Long
Const pword = "1234"    '<==change password

Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWorkbook.Save

'Change those names in array below -
'   to your name of workbook and sheet
arr = Array(Array("WorkbookA.xls", "PartsData"), _
       Array("WorkbookB.xls", "MsiaChart"))
distdir = "C:\tmp"  '<=== Change this to your path name

On Error GoTo errhandler
ChDir distdir
Set acbook = ActiveWorkbook
Application.SheetsInNewWorkbook = 1
For i = 0 To UBound(arr)
   Set wktmp = Workbooks.Add
   For j = 1 To UBound(arr(i))
       acbook.Sheets(arr(i)(j)).Unprotect Password:=pword
       acbook.Sheets(arr(i)(j)).Copy _
           before:=wktmp.Sheets(1)
       acbook.Sheets(arr(i)(j)).Protect Password:=pword, _
       DrawingObjects:=True, Contents:=True, Scenarios:=True
   Next
   wktmp.Sheets(wktmp.Sheets.Count).Delete
   Linkco = wktmp.LinkSources _
           (Type:=xlLinkTypeExcelLinks)
   If Not IsEmpty(Linkco) Then
       For j = 1 To UBound(Linkco)
           wktmp.BreakLink _
           Name:=Linkco(j), _
           Type:=xlLinkTypeExcelLinks
       Next
   End If
   For j = 1 To wktmp.Sheets.Count
       wktmp.Sheets(j).Protect Password:=pword, _
       DrawingObjects:=True, Contents:=True, Scenarios:=True
   Next
   wktmp.SaveAs Filename:=arr(i)(0)
   wktmp.Close
Next
Exit Sub
errhandler:
If Err.Number = 9 Then
   MsgBox "Sheet's name " & arr(i)(1) & _
       " is not found"
ElseIf Err.Number = 76 Then
   MsgBox "Can't find path " & distdir
Else
   MsgBox "Unkown error"
End If
wktmp.Close
End Sub

keizi

> Hi kounoike,
>
[quoted text clipped - 98 lines]
>>
>> > please help.Thanks.- Hide quoted text -- Show quoted text -

Rate this thread:






 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.