|
▼Mino さん:
こんばんは。
Excel のオートメーションって色々難しいですよね。
当方に解る範囲でしたら回答させて頂きます。
>他に開いているファイルは、検索できましたが・・・。
> For Each Myfile In Exl.Workbooks
> If Myfile.Name = 「ファイル名」 Then
> Myfile.Close savechanges:=False
> End If
> Next Myfile
Excel のインスタンスを生成した直後に
Exl.Visible = True
と記述して、
該当の Excelファイル を開いたままステップ実行を行って確認されてみて下さい。
> For Each Myfile In Exl.Workbooks
は 2 個目に起動された Workbook を参照しているので
「ファイル名」で指定された Excel が検索ができないのだと思われます。
>もう一つは、下記です。
>よく分かりませんが、上手くいきませんでした。
>(使用中となりませんでした)
> Exl.Workbooks.Open FileName:=「パス名+ファイル名」
> Exl.Workbooks(「ファイル名」).Activate
> If Exl.ActiveWorkbook.ReadOnly Then
> MsgBox "使用中"
> Exl.ActiveWorkbook.Close
> Set Exl = Nothing
> Exit Function
> End If
こちらについてですがステップ実行をした際に
> Exl.Workbooks(「ファイル名」).Activate
の行で1つ目の Excel ファイルが Active 状態になってしまっていないでしょうか?
(すみません、当方未検証です。)
Sub ExcelCheck()
'要参照 Microsoft Excel x.x Object Library
Dim xName As String
Dim xlsApp As New Excel.Application
Dim xlsWkb As Excel.Workbook
xName = "c:\Test.xls
xlsApp.Visible = True
Set xlsWkb = xlsApp.Workbooks.Open(xName)
Debug.Print xlsWkb.ReadOnly
xlsWkb.Close: Set xlsWkb = Nothing
xlsApp.Quit: Set xlsApp = Nothing
End Sub
上記コードで、xName で指定されたファイルが開かれている場合、閉じている場合の
両方で検証されてみて下さい。
Set xlsWkb = xlsApp.Workbooks.Open(xName)
と定義しているので、xlsWkb は後から開かれた Excel を確実に指しております。
すみません、長くなりますのでレスを分けます。
|
|