Extract Data and filename Macro

In a folder I have multiple files all with the same format

In each file i have a tab called "statement"

data have to be pulled from B,C,D,E,F and G columns

once file directory is selected
from all the files of statement tab
Copy Rows of B,C,D,E,F and G rows which is not 0.00 or copy all with values and 0.00 can be deleted in output file
In an output file copy file name and paste as values what has been copied in the above step

please let me know if I am not clear.
attached input file and sample output in the output tab

I Could see some help in below sites but do not know how put across



Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

Subodh Tiwari (Neeraj)Connect With a Mentor Excel & VBA ExpertCommented:
Hi Uday,

You may try something like this.
In the attached, click the button called Extract Data to extract all the relevant data from Statement Sheets from all the files from a selected folder.
The code will prompt you to select a folder where files are saved.
Sub ExtractDataFromStatements()
Dim wb As Workbook, swb As Workbook
Dim ws As Worksheet, sws As Worksheet
Dim slr As Long, lr As Long, lc As Long, i As Long
Dim sRng As Range, sCell As Range
Dim fso As Object
Dim folder As Object
Dim file As Object
Dim SelectedFolder As String

Application.ScreenUpdating = False
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")

Set fso = CreateObject("Scripting.FileSystemObject")

With Application.FileDialog(msoFileDialogFolderPicker)
   .Title = "Select A Folder!"
   .ButtonName = "Confirm"
   If .Show = -1 Then
      SelectedFolder = .SelectedItems(1)
      Set folder = fso.GetFolder(SelectedFolder)
      MsgBox "You didn't select a folder.", vbExclamation, "Folder Not Selected!"
      Exit Sub
   End If
End With
For Each file In folder.Files
   If InStr(file.Name, wb.Name) = 0 And Left(fso.GetExtensionName(file), 2) = "xl" Then
      Workbooks.Open file
      Set swb = ActiveWorkbook
      Set sws = swb.Sheets("Statement")
      slr = sws.Cells(Rows.Count, 2).End(xlUp).Row
      For i = slr To 10 Step -1
         If Application.Sum(sws.Range("D" & i & ":G" & i)) = 0 Then
         ElseIf sws.Range("D" & i).Value = 0 Then
            sws.Range("D" & i & ":E" & i).Delete shift:=xlToLeft
         ElseIf sws.Range("F" & i).Value = 0 Then
            sws.Range("F" & i & ":G" & i).Delete shift:=xlToLeft
         End If
      Next i
      slr = sws.Cells(Rows.Count, 2).End(xlUp).Row
      Set sRng = sws.Range("B9:E" & slr)
      lc = ws.Cells(4, Columns.Count).End(xlToLeft).Column
      If lc = 1 Then
         sRng.Copy ws.Cells(4, lc)
         ws.Cells(2, lc).Value = Left(file.Name, InStr(file.Name, ".") - 1)
         sRng.Copy ws.Cells(4, lc + 2)
         ws.Cells(2, lc + 2).Value = Left(file.Name, InStr(file.Name, ".") - 1)
      End If
      swb.Close False
   End If
   Set swb = Nothing
Next file
ws.Cells.WrapText = False
Application.ScreenUpdating = True
MsgBox "Task Completed.", vbInformation, "Done!"
End Sub

Open in new window

in your sample workbook, there isn't much difference in the B:G cell data, relative to zero values.  What am I missing?
NirvanamanagerAuthor Commented:
I get this file every 15 days and the values in currency and combination changes for example i might receive values in AUD_SEK; GBP_SEK; HKD_SEK; NOK_SEK;  and SGD_SEK; NOK_SEK; PLN_SEK in other fortnight

while cell references are remain standard/same the values will be in different cells

and what i have provided here is the sample data. hope i am clear and if you are referring to the output file and file two sorry its my mistake the amount and currency might have changed
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

I'm a pretty visual person.  Please post a workbook or two that shows me the expected input and expected output.
NirvanamanagerAuthor Commented:
Sure. in the attached file i have two tabs as input (2) and Input (3) where i have some number in income, cost, receivables and liabilities. what i would need is where ever the numbers are there for each of those categories (income, cost etc.,) have to be pulled into a sheet. please not input files are different workbooks in a directory

please do let me know if i am not clear still
Will these input files have exclusive categorical non-zero values?

If you have posted representative data, then I can expect that no two (or more) workbooks will ever have a non-zero value in any given category, such as I see in cell D12.
NirvanamanagerAuthor Commented:
If I understand correctly, it can be any combination of data. i will have more than 10 workbooks and some might have value in one category and might be zero in others

The only thing that i am looking is

File name:
Category (example income/revenue etc.,)
Currency (example EUR/SEK)
local and other currency
1. Do these values need to be summed?
2. Are all workbooks in the same folder?
NirvanamanagerAuthor Commented:
no these values need not be summed and yes all files in the same folder
these values need not be summed
Then how do we treat the non-zero data in light of
any combination of data
If not summed, then options are
* first value wins
* last value wins
* random value wins (three or more scenario)
* error message
NirvanamanagerAuthor Commented:
I need the data to be copy pasted in each row this a a consolidation report

here is how it works

i have folder named "Analysis"

       |->File 1
       |->File 2
       |->File 3

In File 1  sheet "statement" tab I have Income ,Costs, Receivables, Liabilities in col B, Currency combination in Col C (example) AUD_SEK and amount in column D:G

output will Category from Col B, Currency from Col C, and amounts from Col D:G

if it takes log time to pick only non zeros even if it can consolidate all files and only tab statmen to one sheet that also will be fine

Picking the non-zero values isn't the issue.  The issue is what to do if a cell has non-zero value in multiple workbooks.

For example, Workbook: File 1.xlsx, worksheet: Input, Cell D12 = 1234.56
Workbook: File 2.xlsx, worksheet: Input, Cell D12 = 789.00

What should the D12 cell value be in the output?
NirvanamanagerAuthor Commented:
those will come in different columns of the out put file

say Workbook: File 1.xlsx, worksheet: Input, Cell D12 = 1234.56 will come in Column D
and Workbook: File 2.xlsx, worksheet: Input, Cell D12 = 789.00 will come in Column E
You've completely lost me.  I haven't a clue what you are trying to do.
NirvanamanagerAuthor Commented:
its a simple thing dont know whats so complicated

get a data from different files into a single file by copy pasting values
At this point, I recommend you click the request attention link and ask for more expert involvement.  I won't get to visit this question until after the weekend.
NirvanamanagerAuthor Commented:
It worked brilliant. my files have some merged cells and formulas how can unmerge all files and paste specials as values in the result file.

You are a genius.
Subodh Tiwari (Neeraj)Excel & VBA ExpertCommented:
Thanks for the feedback.
Can you upload one such sample file?
NirvanamanagerAuthor Commented:
Simply Genius.Thank you so much
Subodh Tiwari (Neeraj)Excel & VBA ExpertCommented:
You're welcome Uday! Glad I could help. :)
Thanks for the feedback.
All Courses

From novice to tech pro — start learning today.