Eğer açık olan birden fazla excel dosyasıyla işlem yapıyorsanız işinize yarayabilecek bir makro kodudur. Eğer dosya zaten açılmışsa aktifleştirip mesaj veriyor, açık değilse de açıyor.
Option Explicit
Sub CalismaKitabininAcikOlupOlmadiginiKontrolEt()
Dim kontrol_dosya As String
On Error GoTo dosyaAc
kontrol_dosya = "hesaplar.xlsm"
Windows(kontrol_dosya).Activate
MsgBox (kontrol_dosya & String(2, vbCrLf) & "Dosya zaten açık.")
Exit Sub
dosyaAc:
Workbooks.Open Filename:=ThisWorkbook.Path & kontrol_dosya
End Sub
Option Explicit
Sub CalismaKitabininAcikOlupOlmadiginiKontrolEt()
'--------------------------------------------------
'Kontrol edeceğimiz dosyanın
'ismini değişkene atayacağız.
'Bu amaçla değişken oluşturduk.
'--------------------------------------------------
Dim kontrol_dosya As String
'--------------------------------------------------
'Bir hata olması durumunda dosyaAc
'isimli yerden çalışmaya devam et.
'--------------------------------------------------
On Error GoTo dosyaAc
'--------------------------------------------------
'Dosyanın ismini atadık.
'--------------------------------------------------
kontrol_dosya = "hesaplar.xlsm"
'--------------------------------------------------
'Dosyanın açık olup olmadığını anlamak
'için Activate metodunu kullandık. Dosya
'zaten açıksa direkt olarak çalışacak.
'--------------------------------------------------
Windows(kontrol_dosya).Activate
'--------------------------------------------------
'Bu durumu kullanıcıya bildirdik.
'--------------------------------------------------
MsgBox (kontrol_dosya & String(2, vbCrLf) & "Dosya zaten açık.")
'--------------------------------------------------
'Exit Sub kodunun altındaki satır dosyayı yeniden
'açmak için kullanılacağından ve dosya açıksa buna
'gerek olmadığından dolayı bu noktada yordamdan çıkıyoruz.
'--------------------------------------------------
Exit Sub
'--------------------------------------------------
'Eğer dosya açılmamışsa yukarıdaki GoTo
'kısmı çalışacak ve bu noktaya bir atlama
'yapacak. Kod çalışmaya buradan devam edecek.
'--------------------------------------------------
dosyaAc:
'--------------------------------------------------
'Dosyayı tam yolunu vererek açtırıyoruz.
'--------------------------------------------------
Workbooks.Open Filename:=ThisWorkbook.Path & kontrol_dosya
End Sub
Option Explicit
Function CalismaKitabininAcikOlupOlmadiginiOgren(calismaKitabiAdi As String) As Boolean
Dim acikCalismaKitaplari As Workbook
On Error Resume Next
Set acikCalismaKitaplari = Workbooks(calismaKitabiAdi)
If Err = 0 Then
CalismaKitabiAcikMi = True
Else
CalismaKitabiAcikMi = False
End If
End Function