|
▼小僧 さん:お返事ありがとうございます。
>GetObject関数は Excel.Application オブジェクトだけでなく、
>Excel.Workbook オブジェクトに対しても使うことができます。
>
>Set wkb = GetObject(fname1)
>対象の Book が複数(2枚目以降は読取専用の状態で)開いているのでなければ
>目的の事はできると思われます。
>
>ちょっと工夫すれば
>
>>'他にExcelファイルが開いていない場合
>
>のような処理も行う事が可能ですね。
遅くなりましたが、、、
以下のように組直すとちゃんと動くようになりました。
本当にありがとうございます。
【Set xls = wkb_prg.Application】のような
逆転の発想が全くありませんでした。
頭を柔軟にして、考えないと駄目ですね!
精進します。
ーーーーーーーーーーーーーーーーーーーーーーーーーー
Dim xls As Object 'As Excel.Application
Dim wkb As Object 'As Excel.Workbook
Dim wkb_prg As Object 'As Excel.Workbook
Dim wkb_lst As Object 'As Excel.Workbook
Dim fName1 As String 'ファイル名
Dim fName2 As String
Dim flg As Boolean 'その他Excelが開いているか判定するフラグ
flg = True 'フラグ初期化
fName1 = "C:\sample\file1.xls" 'Excelファイル指定
fName2 = "C:\sample\file2.xls"
'重複オープンのチェック
On Error Resume Next
Set wkb_prg = GetObject(fName1)
Set wkb_lst = GetObject(fName2)
Set xls = wkb_prg.Application
If Err.Number <> 0 Then
Err.Clear ' Errをクリア
Else
'同名のブックは閉じる
wkb_prg.Name = Dir(fName1)
wkb_prg.Close SaveChanges:=False
wkb_lst.Name = Dir(fName2)
wkb_lst.Close SaveChanges:=False
For Each wkb In xls.Workbooks
flg = False
Next wkb
'他にExcelファイルが開いていない場合
If flg = True Then
xls.Quit '"Excel.application"を閉じる
End If
End If
Set xls = Nothing
|
|