Soru MISSING hatası, VBA'ya gitmeden, Makro koduyla giderilebilir mi?

EKREM1661

Altın Üye
Katılım
10 Kasım 2006
Mesajlar
1,288
Excel Vers. ve Dili
Excel-2016
Altın Üyelik Bitiş Tarihi
03-02-2026
Saygıdeğer hocalarım..! MISSING hatasını (VBA >Tools >References) bölümüne gitmeden,
sayfadan buton ile, seçenek işaretini kaldırma imkanı acaba olabilir mi?
Sebebini bilmemekle birlikte, karşılaştığım kadarıyla versiyon veya sistem değişikliklerinde bu hata oluşabiliyor..
Böyle olunca; Dosya, şifreli durumunda veya bilmeyenin elinde kullanılmaz hale geliyor..
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,032
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Google'de herşey var. Aramak lazım..
 

EKREM1661

Altın Üye
Katılım
10 Kasım 2006
Mesajlar
1,288
Excel Vers. ve Dili
Excel-2016
Altın Üyelik Bitiş Tarihi
03-02-2026
Haluk bey'in gösterdiği kod, çalışmadı/takıldı.. Korhan bey'in tavsiyesi yönünde, yaptığım aramalarda, 10'larca kodu denedim. Biri hariç, ya takıldı, yada döngüye girip yanıt vermedi. Çalışan kod:

Kod:
Sub imgClicked()

Dim fileName As String

Dim SharePointLib As String
Dim MyPath As String
Dim folderPath As String
Dim objNet As Object
Dim copyPath As String
Dim copyFilePath As String

folderPath = Application.ThisWorkbook.Path
MyPath = Application.ThisWorkbook.FullName

Dim objFSO As Object
Dim strMappedDriveLetter As String
Dim strPath As String
Dim spPath As String

Call AddReference

Set objFSO = CreateObject("Scripting.FileSystemObject")
With objFSO

strMappedDriveLetter = IsAlreadyMapped(.GetParentFolderName(strPath))

If Not Len(strMappedDriveLetter) > 0 Then
  strMappedDriveLetter = AvailableDriveLetter

  If Not MapDrive(strMappedDriveLetter, .GetParentFolderName(strPath)) Then
    MsgBox "Failed to map SharePoint directory", vbInformation, "Drive Mapping Failure"
     Exit Sub
  End If
End If

'Check file/folder path If statement here

End With

Set objFSO = Nothing

End Sub
Eğer MISSING hatası yoksa, durumu ifade etmek için şu kod'da gerekiyor..

Kod:
Sub AddReference()
    'Dim VBAEditor As VBIDE.VBE
    'Dim vbProj As VBIDE.VBProject
    'Dim chkRef As VBIDE.Reference
    'Dim BoolExists As Boolean

    'Set VBAEditor = Application.VBE
    'Set vbProj = ActiveWorkbook.VBProject

    '~~> Check if "Microsoft VBScript Regular Expressions 5.5" is already added
    'For Each chkRef In vbProj.References
        'If chkRef.Name = "VBScript_RegExp_55" Then
            'BoolExists = True
            'GoTo CleanUp
        'End If
    'Next

    'vbProj.References.AddFromFile "C:\WINDOWS\system32\vbscript.dll\3"

CleanUp:
    If BoolExists = True Then
        MsgBox "Reference already exists"
    Else
        MsgBox "Reference Added Successfully"
    End If

    Set vbProj = Nothing
    Set VBAEditor = Nothing
End Sub
Pasif yaptığım kısımlar kodun çalışmasını engelliyor..

Kod; MISSING hatasını veren checkbox/seçeneğini kaldırmıyor. Ancak, VBA sayfasını açmadan, "Referances - VBAProject" yerleşik formunu açıyor. Missing seçeneğini kaldırdıktan sonra "Added Successfully/Referans Temiz" iletisi verdirilmiş.. Fakat VBA şifreli ise, şifre gir kutusunu çağırıyor..

Hocam; şimdi bu durumda bilinen bir şifre, makro kodu içerisine konulup, VBA' ı açtırıp, hata seçeneği kaldırıldıktan sonra, kaydedip, Excel'i kapattırabilir miyiz? (Hem Excel'in aktifleşmesi, hem de şifrenin korunması için)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,032
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Takıldı derken...

Bu kodlar VBA editörüne müdahale edeceği için aşağıdaki ayarı yapmak gerekebilir.

222523
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Önerdiğim linkte "Discussion" bölümünde zaten, Korhan Beyin belirttiği düzenlemenin yapılması gerektiği belirtilmiş;

This code is best run as part of the Workbook_Open event, before any attempts are made to add new references via code. NOTE: It will generate an error if the code encounters a reference library that has never been registered (installed on that system) before. In Office 2002 or later, the TRUST ACCESS TO VISUAL BASIC PROJECT box MUST be checked, or the code will not work. (This box is located in Tools|Options|Security|Macro Security|Trusted Publishers)
.
 

EKREM1661

Altın Üye
Katılım
10 Kasım 2006
Mesajlar
1,288
Excel Vers. ve Dili
Excel-2016
Altın Üyelik Bitiş Tarihi
03-02-2026
Hocam, bu konuyu baya bir aradım/denedim.. Yabancı sitelerde de demiş olduğu o ki, yapılan kodlamaların MISSING hatasını tek celsede kaldıramadığı yönünde.. Daha başka ayarlar gündeme geliyor falan..

Kullanılabilir bulduğum kodu, (deneme yapmak isteyenler için) MISSING hatalı dosyaya söz konusu kodu da ekledim..
Kod, References ileti kutusunu VBA ya gitmeden açıyor ve MISSING işaretini manuel olarak kaldırmak gerekiyor.
Ancak, dosyanın VBA Editörü şifreli ise, doğal olarak şifre istiyor.. Onun için şifreli dosyalarda bir işe yaramayacak..
 

Ekli dosyalar

Üst