• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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
 
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;.
 
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"
 
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"
 
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
 
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
 
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.
 
Geri
Üst