I have workbook that is open before my form is loaded.
using vba in excel, this code works without a flaw:
wbListPath = "C:\WAREHOUSE CONTROL ----- DO NOT DELETE\"
wbListName = "WAREHOUSE CONTROL FORM ----- DO NOT DELETE.xlsm"
Set wbList = Application.Workbooks("WAREHOUSE CONTROL FORM ----- DO NOT DELETE.xlsm")
If Not BookOpen(wbList.Sheets("Directories").Cells(15, 3)) Then ' inventory master
wb2 = Workbooks.Open(wbList.Sheets("Directories").Cells(15, 2) & wbList.Sheets("Directories").Cells(15, 3)) 'Cambridge Master
Else
wbLkup = wbList.Sheets("Directories").Cells(15, 3).Text
Set wb2 = Application.Workbooks(wbLkup)
End If
Function BookOpen(strBookName As String) As Boolean
Dim oBk As Workbook
On Error Resume Next
Set oBk = Workbooks(strBookName)
On Error GoTo 0
If oBk Is Nothing Then
BookOpen = False
Else
BookOpen = True
End If
End Function
switching to vb.net, i cannot get any code to work to detect a workbook that has been open previous to running form1, the closest i could find is this:
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
Dim WorkBookNames() As String = {TextBox1.Text, TextBox1.Text & " [Compatibility Mode]", "Microsoft Excel - 001 Phone List [Compatibility Mode]"}
exPhone = ChkNOpenWB(exPhone, WorkBookNames, TextBox12.Text)
excelApp.Visible = True
End Sub
Function ChkNOpenWB(bookName As Workbook, WorkBookNames() As String, path As String) As Workbook
Dim openFlag As Boolean = True
For Each p As System.Diagnostics.Process In System.Diagnostics.Process.GetProcesses()
If p.ProcessName = "EXCEL" Then
For Each excelFile As String In WorkBookNames
If p.MainWindowTitle.Contains(excelFile) Then
bookName = GetObject(TextBox12.Text & "\" & TextBox1.Text)
bookName.RefreshAll()
openFlag = False
End If
Next
End If
Next
If (openFlag) Then
bookName = excelApp.Workbooks.Open(TextBox12.Text & "\" & TextBox1.Text, ReadOnly:=False)
bookName.Activate()
End If
Return (bookName)
End Function
You can also use Marshalling. This looks to see if the workbook is already open. If it is not, it opens it. If it is already open, then it assigns the workbook to the variable.