Excel içinden farklı dosyaları açma sorunu

Katılım
5 Nisan 2005
Mesajlar
185
Merhaba arkadaşlar,

Aşağıdaki makro ile excel içinden farklı dosyaları kendi programları ile açabiliyorduk. Fakat bilgisayara xp ve excel 2003 yükledikten sonra bu kod çalışmamaya başladı. Acaba bu API'ler mi tanınmıyor yoksa xl2003 içinden herhangi bir dosya açmak için daha farklı bir prosedür mü uygulanıyor?



Declare Function FindExecutable Lib "shell32.dll" Alias _
"FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, ByVal lpResult As String) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hWnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub OpenAnyFile()
Dim RetVal As Integer
Dim Buff As String
Dim hWnd As Long
Dim MyFile As Variant
MyFile = "C:\Documents and Settings\admin\Belgelerim\Alarmlar\Alarms.mdb"

If Dir(MyFile) = "" Then
MsgBox MyFile & " dosyası bulunamadı."
Exit Sub
End If

Buff = String(260, 32)
RetVal = FindExecutable(MyFile, vbNullString, Buff)

If RetVal > 32 Then
If Application.Version < 9 Then
hWnd = FindWindow("ThunderXFrame", "")
Else
hWnd = FindWindow("ThunderDFrame", "")
End If
ShellExecute hWnd, "Open", MyFile, vbNullString, "C:\", 1
Else
MsgBox Dir(MyFile) & " dosyası ile ilişkili bir program bulunamadı!", vbExclamation
End If
End Sub
 
Katılım
5 Nisan 2005
Mesajlar
185
Sn. leventm, &#231;al&#305;&#351;man&#305;z &#231;ok g&#252;zel olmu&#351; ger&#231;ekten.

Ama ben istedi&#287;im dosyay&#305; sadece bir butona t&#305;klayarak a&#231;mak istiyorum. &#199;&#252;nk&#252; haz&#305;rlad&#305;&#287;&#305;m excel dosyas&#305;n&#305; i&#351;yerinde herkes kulan&#305;yor ve bir k&#305;sm&#305; ezbere kendilerine belletildi&#287;i &#351;ekilde kulan&#305;yor. Yani daha dosya a&#231;mas&#305;n&#305; bile bilmiyor. Onun i&#231;in tek bir butona yukar&#305;daki makroyu atam&#305;&#351;t&#305;m. Ayn&#305; &#351;ekilde makroyu de&#287;i&#351;tirme imkan&#305;n&#305; ara&#351;t&#305;r&#305;yordum. Bu arada a&#231;mak istedi&#287;im dosya &#246;rnekte g&#246;r&#252;ld&#252;&#287;&#252; gibi bir acces dosyas&#305;.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Eğer açacağınız dosya sabitse istediğinizi shell komutu ile yapabilirsiniz. Aşağıdaki gibi deneyin.

Kod:
Shell "MSACCESS.exe C:\Documents and Settings\admin\Belgelerim\Alarmlar\Alarms.mdb"
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Di&#287;er bir dosya &#231;al&#305;&#351;t&#305;rma yolu;
Kod:
CreateObject("Shell.Application").Open _
"C:\Documents and Settings\admin\Belgelerim\Alarmlar\Alarms.mdb"
 
Katılım
5 Nisan 2005
Mesajlar
185
Sn.leventm ve Sn. anemos te&#351;ekk&#252;r ederim.

Sn. anemosun kodu tam olarak i&#351;ime yarad&#305;. Sn. leventmin verdi&#287;i kodda ise access a&#231;&#305;l&#305;yor fakat dosyay&#305; a&#231;m&#305;yordu. Her ikiniz de sa&#287;olun
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Sn leventm'in &#246;nerdi&#287;i kod yap&#305;s&#305; da &#231;al&#305;&#351;&#305;r. Klas&#246;r isminde bo&#351;luk olmad&#305;&#287;&#305;nda...
"" ilavesi gerekirdi.
Kod:
Shell "MSACCESS.exe ""C:\Documents and Settings\admin\Belgelerim\Alarmlar\Alarms.mdb""", _
vbMaximizedFocus
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn anemos'un önerdiği yöntem çok daha pratik, onu kullanmanızı öneririm. Böylece her uzantı için programıda tanımlamanıza gerek kalmayacaktır.
 
Üst