RandomUserCode
New Member
- Joined
- Aug 4, 2021
- Messages
- 26
- Office Version
- 365
- Platform
- Windows
- MacOS
Hello everyone
I would love some help to develop some VBA code. But im very new to VBA. Hope someone can help me with it, and i know its a lot to implement.
So its for private purpose and a "just for fun project". The project is that i want to two files in a path that i want to match with each other. Like have a file called file1 and a file called file2, in the same path. These two files will contain data which i want to match in a master workbook. The master workbook is in the same path, and by a macro button it should be possible to make a data input (file1 and file2), into the master workbook.
When the data input is made, then i would like to search for a specific text in one of the many cells, if one cell matches the text, then it should move on to the next column on that row, and check if that matches the text.
I have implemented some already with a lot of help from the internet, and hope some of you can use that as a start or just make an easier implementation. Hope some can help me out.
I would love some help to develop some VBA code. But im very new to VBA. Hope someone can help me with it, and i know its a lot to implement.
So its for private purpose and a "just for fun project". The project is that i want to two files in a path that i want to match with each other. Like have a file called file1 and a file called file2, in the same path. These two files will contain data which i want to match in a master workbook. The master workbook is in the same path, and by a macro button it should be possible to make a data input (file1 and file2), into the master workbook.
When the data input is made, then i would like to search for a specific text in one of the many cells, if one cell matches the text, then it should move on to the next column on that row, and check if that matches the text.
I have implemented some already with a lot of help from the internet, and hope some of you can use that as a start or just make an easier implementation. Hope some can help me out.
VBA Code:
Sub CopyPasteSheets()
Worksheets("Sheet1").Columns("A:I").AutoFit
Dim folderPath As String
folderPath = "the path on the windows computer"
If Len(VBA.FileSystem.Dir$(folderPath, vbDirectory)) = 0 Then
MsgBox ("'" & folderPath & "' does not appear to be a valid directory." & vbNewLine & vbNewLine & "Code will stop running now.")
Exit Sub
End If
Dim filePathsFound As Collection
Set filePathsFound = New Collection
Dim Filename As String
Filename = VBA.FileSystem.Dir$(folderPath & "*.xlsx", vbNormal)
Do Until Len(Filename) = 0
filePathsFound.Add folderPath & Filename, Filename
Filename = VBA.FileSystem.Dir$()
Loop
Dim filePath As Variant ' Used to iterate over collection
Dim sourceBook As Workbook
Dim destinationSheet As Worksheet
Set destinationSheet = ThisWorkbook.Worksheets("Sheet1") ' Change to whatever yours is called
destinationSheet.Cells.Clear ' Uncomment this line if you want to clear before beginning
Dim rowToPasteTo As Long
rowToPasteTo = destinationSheet.Cells(destinationSheet.Rows.Count, "A").End(xlUp).Row
If rowToPasteTo > 1 Then rowToPasteTo = rowToPasteTo + 1
For Each filePath In filePathsFound
On Error Resume Next
Set sourceBook = Application.Workbooks.Open(Filename:=filePath, ReadOnly:=True)
On Error GoTo 0
If Not (sourceBook Is Nothing) Then
With sourceBook.Worksheets(1)
Dim lastRowToCopy As Long
lastRowToCopy = .Cells(.Rows.Count, "A").End(xlUp).Row
With .Range("A1:A" & lastRowToCopy).EntireRow
If (rowToPasteTo + .Rows.Count - 1) > destinationSheet.Rows.Count Then
MsgBox ("Did not paste rows from '" & sourceBook.FullName & "' due to lack of rows on sheet." & vbNewLine & vbNewLine & "Code will close that particular workbook and then stop running.")
sourceBook.Close
Exit Sub
End If
.Copy destinationSheet.Cells(rowToPasteTo, "A").Resize(.Rows.Count, 1).EntireRow
rowToPasteTo = rowToPasteTo + .Rows.Count
End With
End With
sourceBook.Close
Set sourceBook = Nothing
Else
MsgBox ("Could not open file at '" & CStr(sourceBook) & "'. Will try to open remaining workbooks.")
End If
Next filePath
Range("A1").Select
ActiveCell.FormulaR1C1 = "ID"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Date"
Range("C1").Select
ActiveCell.FormulaR1C1 = "Nominal"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Difference"
End Sub