|
▼小僧 さん:
返事が遅くなり、申し訳ございません。
色々とご親切に教えて頂き、ありがとうございます。
大変、参考になりました。
しかし、その場では理解できても、
いざとなるとやはり難しいですね。
下記にてご報告致します。
>>他に開いているファイルは、検索できましたが・・・。
>> 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 が検索ができないのだと思われます。
確認しました。
確かに 2 個目を参照出来ましたが、
指定されたファイルは参照出来ませんでした。
>>よく分かりませんが、上手くいきませんでした。
>>(使用中となりませんでした)
>> 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 で指定されたファイルが開かれている場合、閉じている場合の
>両方で検証されてみて下さい。
確認しました。
「Debug.Print xlsWkb.ReadOnly」は、
エラーになってしまいましたので、下記で行いました。
「Debug.Print xls.ActiveWorkbook.ReadOnly」
(・・・間違っていればご指摘下さい)
ファイルが開いている場合は、True
となり、「読取専用」で開きました。
ファイルが閉じている場合は、False
となり、ファイルが開きました。
これはなるほどと思いました。
これでオープン中かどうか、判別が出来るという事ですね。
他にも色々と学ばせて頂き、
又、検証までして頂き、
本当にありがとうございました。
|
|