Hi again... I know how to check to see if the workbook exists and I found a routine to check to see if the workbook is currently open but instead of exiting the sub early, I would like to allow the user to either have the opportunity to close the open workbook prior to proceeding or even better by making use of the open workbook if it is indeed open.
I currently use the set wb1 & wb2 to open specific workbooks if they exist and are not open... can I use error handling to set an already open workbook and continue with my code?
Thus using:
Set wb2 = Workbooks.Open(wPath & w1stFolder & wFolder & wFileName2) 'If the workbook is not open
Set wb2 = the open workbook 'If workbook is already open... not sure how that would be coded!
I have been bad at using error handling but decided that I should start... I always try to code to cover all situations but I now realize that if other users are using, they will find new ways of creating errors. You can't cover everything and if you try... you will have a lot of extra un-necessary code (which is what I have now!)
Thanks
Craig
![]()
Public Sub save_current_data() 'Save verification and backup file on exit Dim wPath As String Dim w1stFolder As String Dim wFolder As String Dim wFileName1 As String Dim wFileName2 As String Dim x As Integer Dim y As Long Dim currentWB As Workbook Dim iStr As String Dim oldDate As Date Dim wb1 As Workbook Dim wb2 As Workbook Dim sht As Worksheet Dim lastRow As Long wPath = Sheets("data").Range("D2").Value 'MyDocuments Path w1stFolder = Sheets("data").Range("D9").Value '1St Level Folder in MyDocuments "LabourForecastTool" wFolder = Sheets("data").Range("D4").Value 'Data Folder in MyDocuments/LabourForecastTool "LabourForecastData" wFileName1 = Sheets("data").Range("D6").Value 'Data Backup File in MyDocuments/LabourForecastTool "LabourForecastData" for Saving all data wFileName2 = Sheets("data").Range("D7").Value 'Verification File in MyDocuments/LabourForecastTool "LabourForecastData" for Saving verification data oldDate = Sheets("data").Cells(Sheets("data").Range("E11").Value + 11, 4).Value 'Get current working date for comparison iStr = "Backup" & Sheets("data").Range("E11").Value 'Get current working date for comparison Sheets("data").Cells(Sheets("data").Range("E11").Value + 11, 5).Value = "Yes" 'Mark that there is backup data on this program worksheet Application.ScreenUpdating = False Application.EnableEvents = False If Dir(wPath & w1stFolder & wFolder & wFileName1) = "" Or Dir(wPath & w1stFolder & wFolder & wFileName2) = "" Then Application.EnableEvents = True Application.ScreenUpdating = True MsgBox "One of the files is missing, unable to backup your data. The program will close without saving.", vbCritical, "CraigsWorld Error" Exit Sub End If If IsFileOpen(wPath & w1stFolder & wFolder & wFileName1) = True Or IsFileOpen(wPath & w1stFolder & wFolder & wFileName2) = True Then Application.EnableEvents = True Application.ScreenUpdating = True MsgBox "Either the backup file or Verification file is currently running," & vbNewLine & _ "we are unable to save your data before exiting!", vbCritical, "CraigsWorld Error" Exit Sub End If Set currentWB = ActiveWorkbook 'Track current workbook name for future use 'Save Verification Data to File Set wb2 = Workbooks.Open(wPath & w1stFolder & wFolder & wFileName2) 'Verification File to populate current program wb2.Unprotect Password:=currentWB.Sheets("data").Range("D10").Value 'Unprotect Workbook in our verification file For Each sht In wb2.Worksheets sht.Unprotect Password:=currentWB.Sheets("data").Range("D10").Value 'Unprotect all worksheets in our verification file Next 'Start of Code to copy all info from the verification file 'verification code here 'End of Code to copy all info from the verification file wb2.Application.Calculation = xlCalculationAutomatic wb2.Application.Calculate For Each sht In wb2.Worksheets sht.Protect Password:=currentWB.Sheets("data").Range("D10").Value 'Protect all worksheets in our verification file before close it Next wb2.Protect Structure:=True, Windows:=False, Password:=currentWB.Sheets("data").Range("D10").Value 'Protect Workbook in our verification file before close wb2.Close savechanges:=True 'Close our data file after saving verification data Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.ScreenUpdating = True Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual 'Saving Data Backup to File Set wb1 = Workbooks.Open(wPath & w1stFolder & wFolder & wFileName1) 'Data File to populate current program wb1.Unprotect Password:=currentWB.Sheets("data").Range("D10").Value 'Unprotect Workbook in our data file For Each sht In wb1.Worksheets sht.Unprotect Password:=currentWB.Sheets("data").Range("D10").Value 'Unprotect all worksheets in our data file Next 'Start of Code to copy all info from the backup data file 'code here 'End of Code to copy all info from the backup data file wb1.Application.Calculate wb1.Application.Calculation = xlCalculationAutomatic For Each sht In wb1.Worksheets sht.Protect Password:=currentWB.Sheets("data").Range("D10").Value 'Protect all worksheets in our data file before close it Next wb1.Protect Structure:=True, Windows:=False, Password:=currentWB.Sheets("data").Range("D10").Value 'Protect Workbook in our data file before close wb1.Close savechanges:=True 'Close our data file after importing all data Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.ScreenUpdating = True End Sub
Bookmarks