Solved

Create multiple excel workbook in loop

Posted on 2013-11-05
7
435 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
Learn how to create and modify your own paragraph styles in Microsoft Word. This can be helpful when wanting to make consistently referenced styles throughout a document or template.
This Micro Tutorial will demonstrate on a Mac how to change the sort order for chart legend values and decrpyt the intimidating chart menu.

911 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

19 Experts available now in Live!

Get 1:1 Help Now