3

このコードは数日前に機能していましたが、作業コピーを保存するのを忘れていました。この答えを見つけるのに 4 週間かかりました。

エラーを返すobjWorkBook行を除いて、ここではすべて機能します。

助言がありますか?

Dim objExcel As Excel.Application = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
Dim objWorkBook As Excel.Workbook

Dim totalWorkBooks As Integer = objExcel.Workbooks.Count
MsgBox(totalWorkBooks & " is Number of Open Workbooks")

Dim ActiveBookIndex As Integer = objExcel.ActiveWindow.Index
MsgBox(ActiveBookIndex & " is Active Window Index")

Dim FullName As String = objWorkBook.FullName
MsgBox(FullName & " is FullName")

Dim OnlyName As String = objWorkBook.Name
MsgBox(OnlyName & " is Name without the Path")

割り当てた値を忘れました。

私の目的は、開いている Excel ブックの名前を既知の場所にある名前と比較して、それらが一致する場合にプログラムを続行できるようにすることです。上記のコードが必要なので、If-Then で次のコードと比較して、プログラムを続行できるようにします。

Dim dir As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim FullFileName As String = dir & "\My_File_Name.xlsx"

ポジティブなことに、私が探していた答えではありませんが、解決策をつなぎ合わせました....

Dim p() As Process = System.Diagnostics.Process.GetProcessesByName("Excel")
Dim Title As String = p(0).MainWindowTitle
Dim dir As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        Dim FullFileName As String = dir & "\" & Replace(Title, "Microsoft Excel - ", "") & ".xlsx"

MsgBox(dir)
MsgBox(Title)
MsgBox(FullFileName)

今のところはこれで問題ありませんが、別の方法で解決したいと考えています。

4

1 に答える 1