• DİKKAT

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

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

Katılım
10 Kasım 2006
Mesajlar
1,288
Excel Vers. ve Dili
Excel-2016
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..
 
Google'de herşey var. Aramak lazım..
 
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)
 
Takıldı derken...

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

222523
 
Ö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)

.
 
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

Geri
Üst