Missing Reference Hatasını düzeltme

Katılım
21 Şubat 2006
Mesajlar
44
Excel Vers. ve Dili
2010 Türkçe
Merhaba Arkadaşlar,
Hazırladığınız bir projeniz var ve bu proje sizde doğru olarak çalışıyor. Projenizi compile edilmemiş şeklini arkadaşınızla paylaştınız. Fakat onun pc sinde sizin projeniz için gerekli olan referans dosyası aynı yol üzerinde değil bu durumda arkadaşınız bu projeyi çalıştırdığında ilgili referansı kullanan bir işlem yaptırmak istediğinde bir hata uyarısı alacak bu referans dosyasının kayıp olduğu şeklinde bir hata. Sorun değil projenin derlenmemiş halini verdiğiniz için Tool>Reference yolunu takip ederek kayıp referansın olması gereken yolunu ögrenip referans dosyasını oraya taşıyabilir ve programı tekrar çalıştırdığında sorun çözülmüş olur. Peki derlenmiş şeklini verirseniz bu hatayı nasıl düzeltecek. Cevap aşağıdaki kodları projenizde kendinize uygun olacak şekilde düzenleyin. bu kod grubu sizin eksik referansın nerede olduğunu soracak doğru olarak verirseniz otomatik olarak düzeltecektir.


Public Function ReferansKontrolu(RefAdi As String, Optional ByVal RefYolu) As Boolean
Dim FD As Office.FileDialog
Dim Ref As Access.References
Dim vDosya As Variant
Dim TekrarDene As Variant
Dim RefYeri As String
Dim RefSayisi As Integer
Dim Sayac As Integer
Dim i As Integer
Dim str As String
Dim Cevap As Integer

On Error GoTo Hata

Set Ref = Access.References
Set FD = Application.FileDialog(msoFileDialogFilePicker)
TekrarDene = False

If IsMissing(RefYolu) Then
'
Else
Ref.AddFromFile RefYolu
End If

GoTo ReferansDuzelt

ReferansDuzelt:

RefSayisi = Ref.Count
Sayac = 1
For i = 1 To RefSayisi
If Ref.Item(Sayac).Name = RefAdi Then
ReferansKontrolu = True
Exit Function
End If
Sayac = Sayac + 1
Next i
GoTo ReferansEkle

OfisReferanslariEkle:

Select Case RefAdi
Case "Excel"
RefYeri = "C:\Program Files\Microsoft Office\Office11\EXCEL.EXE"
Ref.AddFromFile RefYeri
GoTo ReferansDuzelt
Case "Word"
RefYeri = "C:\Program Files\Microsoft Office\Office11\WINWORD.EXE"
Ref.AddFromFile RefYeri
GoTo ReferansDuzelt
Case "PowerPoint"
RefYeri = "C:\Program Files\Microsoft Office\Office11\POWERPNT.EXE"
Ref.AddFromFile RefYeri
GoTo ReferansDuzelt
Case "OutLook"
RefYeri = "C:\Program Files\Microsoft Office\Office11\OUTLOOK.EXE"
Ref.AddFromFile RefYeri
GoTo ReferansDuzelt
Case "Access"
RefYeri = "C:\Program Files\Microsoft Office\Office11\MSACCESS.EXE"
Ref.AddFromFile RefYeri
GoTo ReferansDuzelt
Case Else
GoTo OfisReferanslariEkle
End Select


ReferansEkle:
If TekrarDene = False Then
MsgBox "Lütfen " & RefAdi & " başvuru kitaplığının yerini gösterin." & vbNewLine & _
"Genellikle Microsoft Office programları için başvuru kitaplığı .exe dosyalarıdır." & vbNewLine & _
"Fakat bu başvuru kitaplığı .ocx yada .dll dosyası yada 3. parti programların kullandığı diğer dosyalarda olabilir.", vbCritical, "Başvuru kitaplığı bulunamadı."
End If
With FD
.AllowMultiSelect = False
.Title = "Dosya Seç"
.Filters.Clear
.Filters.Add "All Files", "*.*"
If .Show = True Then
For Each vDosya In .SelectedItems
RefYeri = vDosya
Next
Else
MsgBox "Seçim kullanıcı tarafından iptal edildi.", vbOKOnly + vbInformation, "Dosya seçme hatası."
RefYeri = ""
End If
End With
If IsNull(RefYeri) Or RefYeri = "" Then
str = "Herhangi bir dosya seçmediniz." & vbCrLf
str = str & "" & vbCrLf
str = str & " Tekrar denemek istiyormusunuz ?"
Cevap = MsgBox(str, vbYesNo, "Tekrar deneyin ?")
If Cevap = vbYes Then
TekrarDene = True
GoTo ReferansEkle
End If
Else
Ref.AddFromFile RefYeri
End If
GoTo ReferansDuzelt

Hata:
If Err.Number = 29060 Then
MsgBox "Seçtiğiniz başvuru kitaplığı, istenen başvuru kitaplığı değil." & vbNewLine & _
"Lütfen doğru başvuru kitaplığını seçin.", vbCritical, "Hata"
Err.Clear
TekrarDene = True
GoTo ReferansEkle
End If
Debug.Print Err.Number
Debug.Print Err.Description
Set Ref = Nothing
Set FD = Nothing
Call SysCmd(504, 16483)
ReferansKontrolu = False
End Function

Private Sub Komut2_Click()
Dim rKontrol As Variant
rKontrol = ReferansKontrolu("PDFCreator")

End Sub
 
Üst