So I have two excel workbooks – Workbook A is used as a userform and Workbook B as a database with all the data entries (B is a merged file). Whenever I open Workbook A, I would like to pull all the data from Workbook B automatically and copy it into Workbook A in a separate Worksheet. In doing so, I can implement some other functionalities like retrieval of previous entries.
So I used the following cod embedded in Workbook:
Public Sub Workbook_open()
Call get_AllUpdateEntries
End Sub
Sub get_AllUpdateEntries()
Dim oriWorkbook As Workbook
Dim destWorkbook As Workbook
Set oriWorkbook = Workbooks.Open("FilePath")
Set destWorkbook = ThisWorkbook
oriWorkbook.Worksheets("Sheet Name").Copy
destWorkbook.Worksheets("Sheet Name").Paste
x.Close SaveChanges:=False
End Sub
However, I cannot get this macro running. It doesn’t copy the Worksheet as I want, and additionally, another, unwanted Workbook is opened.
When you copy the worksheet to no location, it creates a new active workbook with a single worksheet (a copy of the original).
Provide an immediate destination for the copied worksheet.
Sub get_AllUpdateEntries()
Dim oriWorkbook As Workbook
Dim destWorkbook As Workbook
Set oriWorkbook = Workbooks.Open("FilePath")
Set destWorkbook = ThisWorkbook
'remove the destination worksheet if it already exists
on error resume next
application.displayalerts = false
destWorkbook.worksheets("All Update Entries").delete
application.displayalerts = true
on error goto 0
'copy worksheet to the end of the worksheet queue in ThisWorkbook
oriWorkbook.Worksheets("Sheet Name").Copy _
After:=destWorkbook.Sheets(destWorkbook.Sheets.count)
oriWorkbook.Close SaveChanges:=False
'rename the transferred worksheet
destWorkbook.Sheets(destWorkbook.Sheets.count).name = "All Update Entries"
End Sub
Tags: excelexcel