Solved

Create multiple excel workbook in loop

Posted on 2013-11-05
7
424 Views
Last Modified: 2014-02-04
Hi Experts,

I have access VBA code to collect necessary data to another sheet of the same workbook.
before save and close the sheet, I need to create excel workbooks using the names in the collected sheet.

for example, test.xlxs has two sheets all_data and filtered_data. The sheet filtered_data has cell contain some string like alpha, bravo, charlee, delta.
I want to create excel workbooks named alpha.xlxs, bravo.xlxs, charlee.xlxs and delta.xlxs ,
 it will create all strings of that cell in loop then save and close the test.xlxs.
copy some related data to the created excel workbook with a sheet name(use the workbook name)
Set wb_Source_01 = xl.Workbooks.Open("C:\test.xlsx")
Set ws_Source_01 = wb_Source_01.Sheets("all_data")
Set ws_Source_02 = wb_Source_01.Sheets("filtered_data")

first copied necessary data from all_data sheet to filtered_data sheet like below.

           ws_Source_02.Cells(LineCounter, 1) = ws_Source_01.Cells(LineCounter, 1)
           ws_Source_02.Cells(LineCounter, 2) = ws_Source_01.Cells(LineCounter, 2)

Once all necessary data copied to sheet filtered_data before save and close the workbook, wants to create excel workbook name it one of the cell value of the filtered_data sheet above. then save some related data from the filtered data to that newly created sheet then save it continue until all data of that cell if there 10 then wants to create 10 excel workbooks with the name of the cell in the filtered_data sheet.

Once done finally save and close the work book test.xlxs.

Please advice vba code to do that.

Thanks
0
Comment
Question by:alam747
7 Comments
 
LVL 33

Expert Comment

by:Norie
ID: 39624059
Can you just clarify what you want to do?

You have a sheet, 'all_data', that has all the data and another sheet, 'filtered_data', that only has a few strings in cells.

You want to create a new workbook for each of the strings in 'filtered_data' and extract the data from 'all_data' the relevant sheet based on some criteria.

If that's what you have, how can it be determinend which workbook the data from 'all_data' should go to?

Is it based on a specific column?
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 39624248
@alam747,

this can be clearly understood if you can upload a copy of the excel file..



.
0
 

Author Comment

by:alam747
ID: 39627117
Hi Imnorie,

You're are correct, the data pull from filtered sheet to the newly created workbook the filtered sheet have have related filed there is a key that use to pull from.

the data in filtered sheet like as:
alpha   001  other related informamtion which will be copied in the newly cerated workbook alpha.xlsx
bravo 002    other related information which will be copied in newly created workbook bravo.xlsx

Therefore I can use the code 001 to pull entire cells of the raw to alpha.xlsx workbook.

Please provide me VBA code to do that in a loop.

Thanks
0
 
LVL 31

Accepted Solution

by:
Helen_Feddema earned 500 total points
ID: 39637287
Can you post the test workbook with the data used to create the other workbooks?  Also, you only mention Excel in this post, but it is in the Access section.  Are you running the code from Access or Excel?  In the meanwhile, here is some code that creates workbooks in a loop, using data in an Access table:

Public Sub CreateWorkbooks()
'Created by Helen Feddema 10-Nov-2013
'Last modified by Helen Feddema 10-Nov-2013

On Error GoTo ErrorHandler

   Dim appExcel As New Excel.Application
   Dim wkb As Excel.Workbook
   Dim rst As DAO.Recordset
   Dim strData As String
   Dim strPath As String
   Dim wks As Excel.Worksheet
   
   strPath = Application.CurrentProject.Path & "\"
   Set rst = CurrentDb.OpenRecordset("tblTestData")
   
   Do While Not rst.EOF
      strData = rst![Data]
      Set wkb = appExcel.Workbooks.Add
      'Do something with workbook here
      Set wks = wkb.Sheets(1)
      wks.Range("A1").Value = "Testing"
      wkb.SaveAs strPath & strData
      wkb.Close
      rst.MoveNext
   Loop
   
ErrorHandlerExit:
   Set appExcel = Nothing
   Exit Sub

ErrorHandler:
   MsgBox "Error No: " & Err.Number _
      & " in CreateWorkbooks procedure; " _
      & "Description: " & Err.Description
   Resume ErrorHandlerExit

End Sub

Open in new window

0
 

Author Closing Comment

by:alam747
ID: 39834426
Thanks
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

No matter the version of Windows you are using, you may have some problems with Windows Search running too slow or possibly not running at all. Before jumping into how you can solve this issue, just know there are many other viable alternative deskt…
This code takes an Excel list of URL’s and adds a header titled “URL List”. It then searches through all URL’s in column “A”, looking for duplicates. When a duplicate is found, it is moved to the top of the list. The duplicate URL’s are then highlig…
This Micro Tutorial demonstrates how to create Excel charts: column, area, line, bar, and scatter charts. Formatting tips are provided as well.
This Micro Tutorial will demonstrate how to use longer labels with horizontal bar charts instead of the vertical column chart.

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now