フォームが読み込まれる前に開いているブックがあります。
Excel で vba を使用すると、このコードは問題なく動作します。
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
vb.net に切り替えると、form1 を実行する前に開いていたワークブックを検出するためのコードを取得できません。最も近いものは次のとおりです。
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