Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3529 / 9994 ←次へ | 前へ→

【9724】Re:Excel複数起動時に任意のブックを閉じる
お礼  Runa  - 07/8/1(水) 15:51 -

引用なし
パスワード
   ▼小僧 さん:お返事ありがとうございます。

>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

1,610 hits

【9721】Excel複数起動時に任意のブックを閉じる Runa 07/8/1(水) 13:48 質問[未読]
【9722】Re:Excel複数起動時に任意のブックを閉じる 小僧 07/8/1(水) 14:59 回答[未読]
【9724】Re:Excel複数起動時に任意のブックを閉じる Runa 07/8/1(水) 15:51 お礼[未読]

3529 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free