Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() I'm working to build a couple of workbooks that contains info on students. The first workbook contains students first name, last name, birthdate, etc. On this workbook a new sheet will be added every day to collect info for the current day (each sheet will be named by the current date). On the second workbook (which is already existing), I would like to compile data from specific columns from each sheet (from workbook 1). I found a macro (which is shown below), and I'm not even sure if this is the correct one. I may be asking a bit much, but I'm having 3 problems: (1. I'm not sure how to set it to pull the info from each sheet in workbook 1. (2. Workbook 2 has links to graphs (on sheet 2, in workbook 2), and I'm not sure how to make sure those links are not removed. (3. Is there a way to set this so it automatically sends the info every time info (and a new sheet)is added in workbook 1? This is a lot but I figured I'd ask everything all at once to get a clear understanding. Sub Basic_Example_1() Dim MyPath As String, FilesInPath As String Dim MyFiles() As String Dim SourceRcount As Long, Fnum As Long Dim mybook As Workbook, BaseWks As Worksheet Dim sourceRange As Range, destrange As Range Dim rnum As Long, CalcMode As Long 'Fill in the path\folder where the files are MyPath = "C:\Documents and Settings\Lovlee April\My Documents\[Daily_Lists(1).xls]" 'Add a slash at the end if the user forget it If Right(MyPath, 1) < "\" Then MyPath = MyPath & "\" End If 'If there are no Excel files in the folder exit the sub FilesInPath = Dir(MyPath & "*.xl*") If FilesInPath = "" Then MsgBox "No files found" Exit Sub End If 'Fill the array(myFiles)with the list of Excel files in the folder Fnum = 0 Do While FilesInPath < "" Fnum = Fnum + 1 ReDim Preserve MyFiles(1 To Fnum) MyFiles(Fnum) = FilesInPath FilesInPath = Dir() Loop 'Change ScreenUpdating, Calculation and EnableEvents With Application CalcMode = .Calculation .Calculation = xlCalculationManual .ScreenUpdating = False .EnableEvents = False End With 'Add a new workbook with one sheet Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1) rnum = 1 'Loop through all files in the array(myFiles) If Fnum 0 Then For Fnum = LBound(MyFiles) To UBound(MyFiles) Set mybook = Nothing On Error Resume Next Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum)) On Error GoTo 0 If Not mybook Is Nothing Then On Error Resume Next With mybook.Worksheets(1) Set sourceRange = .Range("A1:C1") End With If Err.Number 0 Then Err.Clear Set sourceRange = Nothing Else 'if SourceRange use all columns then skip this file If sourceRange.Columns.Count = BaseWks.Columns.Count Then Set sourceRange = Nothing End If End If On Error GoTo 0 If Not sourceRange Is Nothing Then SourceRcount = sourceRange.Rows.Count If rnum + SourceRcount = BaseWks.Rows.Count Then MsgBox "Sorry there are not enough rows in the sheet" BaseWks.Columns.AutoFit mybook.Close savechanges:=False GoTo ExitTheSub Else 'Copy the file name in column A With sourceRange BaseWks.cells(rnum, "A"). _ Resize(.Rows.Count).Value = MyFiles(Fnum) End With 'Set the destrange Set destrange = BaseWks.Range("B" & rnum) 'we copy the values from the sourceRange to the destrange With sourceRange Set destrange = destrange. _ Resize(.Rows.Count, .Columns.Count) End With destrange.Value = sourceRange.Value rnum = rnum + SourceRcount End If End If mybook.Close savechanges:=False End If Next Fnum BaseWks.Columns.AutoFit End If ExitTheSub: 'Restore ScreenUpdating, Calculation and EnableEvents With Application .ScreenUpdating = True .EnableEvents = True .Calculation = CalcMode End With End Sub Thanks for any help you can give!! April *** Sent via Developersdex http://www.developersdex.com *** |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi
Very little chance of anyone answering this. It looks like you are still in the formulating stage of your project, which no one here can help you with, as they don't know exactly what your project is. Write down clearly for yourself exactly what you would do manually to create your workbooks, right down to cell addresses (e.g. I will take the numbers in cells A1 to A6 on sheet 1 and copy them to cells B1 to B6 on sheet 2, then bold the numbers on sheet 2 and format as %). Now you can start asking real short questions to perform specific tasks. These will be answered in minutes. regards Paul On Nov 13, 9:10*am, April wrote: I'm working to build a couple of workbooks that contains info on students. The first workbook contains students first name, last name, birthdate, etc. On this workbook a new sheet will be added every day to collect info for the current day (each sheet will be named by the current date). On the second workbook (which is already existing), I would like to compile data from specific columns from each sheet (from workbook 1). I found a macro (which is shown below), and I'm not even sure if this is the correct one. I may be asking a bit much, but I'm having 3 problems: (1. I'm not sure how to set it to pull the info from each sheet in workbook 1. (2. Workbook 2 has links to graphs (on sheet 2, in workbook 2), and I'm not sure how to make sure those links are not removed. (3. Is there a way to set this so it automatically sends the info every time info (and a new sheet)is added in workbook 1? This is a lot but I figured I'd ask everything all at once to get a clear understanding. * Sub Basic_Example_1() * * Dim MyPath As String, FilesInPath As String * * Dim MyFiles() As String * * Dim SourceRcount As Long, Fnum As Long * * Dim mybook As Workbook, BaseWks As Worksheet * * Dim sourceRange As Range, destrange As Range * * Dim rnum As Long, CalcMode As Long * * 'Fill in the path\folder where the files are * * MyPath = "C:\Documents and Settings\Lovlee April\My Documents\[Daily_Lists(1).xls]" * * 'Add a slash at the end if the user forget it * * If Right(MyPath, 1) < "\" Then * * * * MyPath = MyPath & "\" * * End If * * 'If there are no Excel files in the folder exit the sub * * FilesInPath = Dir(MyPath & "*.xl*") * * If FilesInPath = "" Then * * * * MsgBox "No files found" * * * * Exit Sub * * End If * * 'Fill the array(myFiles)with the list of Excel files in the folder * * Fnum = 0 * * Do While FilesInPath < "" * * * * Fnum = Fnum + 1 * * * * ReDim Preserve MyFiles(1 To Fnum) * * * * MyFiles(Fnum) = FilesInPath * * * * FilesInPath = Dir() * * Loop * * 'Change ScreenUpdating, Calculation and EnableEvents * * With Application * * * * CalcMode = .Calculation * * * * .Calculation = xlCalculationManual * * * * .ScreenUpdating = False * * * * .EnableEvents = False * * End With * * 'Add a new workbook with one sheet * * Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1) * * rnum = 1 * * 'Loop through all files in the array(myFiles) * * If Fnum 0 Then * * * * For Fnum = LBound(MyFiles) To UBound(MyFiles) * * * * * * Set mybook = Nothing * * * * * * On Error Resume Next * * * * * * Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum)) * * * * * * On Error GoTo 0 * * * * * * If Not mybook Is Nothing Then * * * * * * * * On Error Resume Next * * * * * * * * With mybook.Worksheets(1) * * * * * * * * * * Set sourceRange = .Range("A1:C1") * * * * * * * * End With * * * * * * * * If Err.Number 0 Then * * * * * * * * * * Err.Clear * * * * * * * * * * Set sourceRange = Nothing * * * * * * * * Else * * * * * * * * * * 'if SourceRange use all columns then skip this file * * * * * * * * * * If sourceRange.Columns.Count = BaseWks.Columns.Count Then * * * * * * * * * * * * Set sourceRange = Nothing * * * * * * * * * * End If * * * * * * * * End If * * * * * * * * On Error GoTo 0 * * * * * * * * If Not sourceRange Is Nothing Then * * * * * * * * * * SourceRcount = sourceRange.Rows..Count * * * * * * * * * * If rnum + SourceRcount = BaseWks.Rows.Count Then * * * * * * * * * * * * MsgBox "Sorry there are not enough rows in the sheet" * * * * * * * * * * * * BaseWks.Columns.AutoFit * * * * * * * * * * * * mybook.Close savechanges:=False * * * * * * * * * * * * GoTo ExitTheSub * * * * * * * * * * Else * * * * * * * * * * * * 'Copy the file name in column A * * * * * * * * * * * * With sourceRange * * * * * * * * * * * * * * BaseWks.cells(rnum, "A"). _ * * * * * * * * * * * * * * * * * * Resize(.Rows.Count).Value = MyFiles(Fnum) * * * * * * * * * * * * End With * * * * * * * * * * * * 'Set the destrange * * * * * * * * * * * * Set destrange = BaseWks..Range("B" & rnum) * * * * * * * * * * * * 'we copy the values from the sourceRange to the destrange * * * * * * * * * * * * With sourceRange * * * * * * * * * * * * * * Set destrange = destrange. _ * * * * * * * * * * * * * * * * * * * * * * Resize(.Rows.Count, .Columns.Count) * * * * * * * * * * * * End With * * * * * * * * * * * * destrange.Value = sourceRange.Value * * * * * * * * * * * * rnum = rnum + SourceRcount * * * * * * * * * * End If * * * * * * * * End If * * * * * * * * mybook.Close savechanges:=False * * * * * * End If * * * * Next Fnum * * * * BaseWks.Columns.AutoFit * * End If ExitTheSub: * * 'Restore ScreenUpdating, Calculation and EnableEvents * * With Application * * * * .ScreenUpdating = True * * * * .EnableEvents = True * * * * .Calculation = CalcMode * * End With End Sub Thanks for any help you can give!! April *** Sent via Developersdexhttp://www.developersdex.com*** |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() You haven't even said get what data from what columns to which sheet(s), when copying data and using pastespecialvalues links in the original workbook would not be destroyed, you also need to decide if the data you copied should actually be linked and so updating when the workbooks are open, if not linking how would you import the data? would the source workbook be closed? if so using ADO is a little more complicated that using the Open command prior to getting data. You truly have a lot to map out. -- The Code Cage Team Regards, The Code Cage Team http://www.thecodecage.com ------------------------------------------------------------------------ The Code Cage Team's Profile: http://www.thecodecage.com/forumz/member.php?userid=2 View this thread: http://www.thecodecage.com/forumz/sh...ad.php?t=28989 |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I'm unable to help with the macro, but adding a new worksheet each for
each day sounds like a bad design. I would put a date field and add everything to one worksheet. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
AutoRun Macro with a delay to give user the choice to cancel the macro | Excel Programming | |||
Macro Help Needed - Excel 2007 - Print Macro with Auto Sort | Excel Worksheet Functions | |||
Macro not showing in Tools/Macro/Macros yet show up when I goto VBA editor | Excel Programming | |||
Need syntax for RUNning a Word macro with an argument, called from an Excel macro | Excel Programming | |||
Start Macro / Stop Macro / Restart Macro | Excel Programming |