Verweis auf Solver.xla

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Verweis auf Solver.xla von: Anya
Geschrieben am: 06.02.2005 11:48:31

Hallo,

ich habe ein Problem, dass ich zwar im Forum schon angesprochen gefunden habe, aber bisher ohne Lösung.

Ich möchte per Makro einen Verweis auf den Solver in VisualBasic unter Extras\Verweise aktivieren.
Dies ist nicht zu verwechseln mit der Einbindung des AddIns unter Excel mit AddIns.Add("Solver.xla").Installed=True - dies aktiviert leider nur den Solver im AddIn-Manager.

Das Makro soll also in VisualBasic unter Extras\Verweise nach dem Pfad von Solver.xla suchen (da auf verschiedenen Rechnern dieser unterschiedlich sein kann) und wenn er gefunden wurde, soll dieser Verweis aktiviert werden.

Falls jmd. weiss, wie man die Aktivierung realisiert, wäre ich sehr dankbar.
Viele Grüsse,
Anya

Bild


Betrifft: AW: Verweis auf Solver.xla von: Ulf
Geschrieben am: 06.02.2005 12:11:28

Den Verweis setzen kannst du mit .References.AddFromFile

Die Datei ist normaler Weise unter:

c:\programme\microsoft office\office10\makro\solver\solver.xla

abgelegt. Wenn das nicht so ist, musst du halt die Festplatte durchsuchen.

Ulf


Bild


Betrifft: AW: Verweis auf Solver.xla von: Anya
Geschrieben am: 06.02.2005 13:15:47

Danke schonmal für die schnelle Antwort. Doch leider funktioniert es noch nicht.
Wenn ich es mit
Application.VBE.ActiveVBProject.References.AddFromFile FileName:="c:\Programme\Microsoft Office\Office10\Makro\Solver\Solver.xla"
versuche, dann gibt mir der Compiler einen 'anwendungs- oder objektorientierent Fehler' zurück (der Pfad ist hier korrekt).
Der Eintrag 'Application.VBE' als Überwachungsausdruck gibt nur "Der programmatische Zugriff auf das Visual Basic-Projekt ist nicht sicher" aus. Was könnte hier das Problem sein? Was mach ich falsch?


Bild


Betrifft: AW: Verweis auf Solver.xla von: Ulf
Geschrieben am: 06.02.2005 13:21:54

Du musst im Menü Extras|Makro|Sicherheit|Vertrauenswürdige Quellen den Haken bei
"Zugriff auf VB-Projekt vertrauen" setzen.

Ulf


Bild


Betrifft: AW: Verweis auf Solver.xla von: Anya
Geschrieben am: 06.02.2005 13:33:01

Prima!!! Es Funktioniert!
Noch eine Frage: Ist diese Einstellung projektspezifisch, oder nicht?
Meine damit, wenn ich mein Projek jmd. anderen gebe, muss der dies Einstellung selbst (von Hand) aktivieren, so dass mein Makro läuft, oder ist dies Aktivierung nun für diese Arbeitsmappe fest gespeichert, oder gibt es eine Möglichkeit, wie ich dies per Code steuern kann?


Bild


Betrifft: AW: Verweis auf Solver.xla von: Ulf
Geschrieben am: 06.02.2005 13:38:35

Das wird nicht mit der Mappe gespeichert, der user muss das einstellen.
Via VBA gehts auch, aber relativ unsicher mit SendKeys.

Sub Vertrauen()
  SendKeys "%xksv {TAB 3} +~"
End Sub


Ulf


Bild


Betrifft: AW: Verweis auf Solver.xla von: Anya
Geschrieben am: 06.02.2005 14:25:50

ja, gebe Dir recht - ist ziemlich unsicher, aber trotzdem danke!!!
Werde wohl den User lieber per MsgBox dazu auffordern selbst die Sicherheitseinstellungen anzupassen.


Bild


Betrifft: AW: Verweis auf Solver.xla von: Anya
Geschrieben am: 06.02.2005 17:43:00

Danke Euch Beiden - hab das Thema Manipulation der Sicherheitseinstellungen nochmal oben neu aufgegriffen ...
Gruß Anya


Bild


Betrifft: AW: Verweis auf Solver.xla von: Ramses
Geschrieben am: 06.02.2005 13:40:12

Hallo

probier mal das aus.

Ich hatte das mal für eine andere Datei geschrieben, ... sollte aber eigentlich funktionieren




Option Explicit
'Für Dateisuche
Private Declare Function GetDriveType Lib "kernel32" _
        Alias "GetDriveTypeA" (ByVal nDrive As String) _
        As Long
Private Declare Function GetLogicalDriveStrings Lib _
        "kernel32" Alias "GetLogicalDriveStringsA" _
        (ByVal nBufferLength As LongByVal lpBuffer _
        As StringAs Long
'Konstanten zur Dateisuche
Private Const DRIVE_REMOVABLE = 2
Private Const DRIVE_FIXED = 3
Private Const DRIVE_REMOTE = 4
Private Const DRIVE_CDROM = 5
Private Const DRIVE_RAMDISK = 6
'Anzahl lokaler laufwerke/Partitionen
Public LocDrivesCount As Byte



'Dateiname zur Prüfung zur angeben !!!
Public Const CheckRef As String = "SOLVER.XLA"





Sub Install_Solver_Reference()
Dim As Long, n As Long, totFiles As Long, GlobalFound As Boolean
Dim gefFile As String, dname As String, Qe As Integer
Dim Suchpfad As String
Dim oldStatus As Variant
'Zuerst im Installationspfad suchen
Suchpfad = Application.Path
If ResCheckReference = True Then
    MsgBox "Verweis ist bereits installiert"
    Exit Sub
End If
Application.ScreenUpdating = True
oldStatus = Application.StatusBar
With Application.FileSearch
    .LookIn = Suchpfad
    .SearchSubFolders = True
    'Datei aus Konstanten übernehmen
    .Filename = CheckRef
    If .Execute() > 0 Then
        totFiles = .FoundFiles.Count
        For i = 1 To .FoundFiles.Count
            gefFile = .FoundFiles(i)
            Application.VBE.ActiveVBProject.References.AddFromFile gefFile
            MsgBox "Referenz auf : " & gefFile & " wurde erstellt"
            Exit Sub
        Next i
    Else
        MsgBox "Datei SOLVER.XLA wurde nicht gefunden." & Chr$(13) & _
            "Soll der gesamte Rechner durchsucht werden ?", vbYesNo + vbQuestion, "Fehler"
        If Qe = vbNo Then
            Application.StatusBar = oldStatus
            Application.ScreenUpdating = True
            Exit Sub
        End If
    End If
End With
'Schleife für alle lokalen Laufwerke
'Keine USB, keine CD-ROM, keine Disketten, Keine Netzlaufwerke
For i = 1 To CountLocalDrives
    With Application.FileSearch
        Application.StatusBar = "Durchsucht wird Laufwerk: " & GetLocalDriveName(i)
        .LookIn = GetLocalDriveName(i)
        .SeachSubFolders = True
        .Filename = CheckRef
        If .Execute() > 0 Then
            totFiles = .FoundFiles.Count
            For n = 1 To .FoundFiles.Count
                gefFile = .FoundFiles(n)
                Application.VBE.ActiveVBProject.References.AddFromFile gefFile
                MsgBox "Referenz auf : " & gefFile & " wurde erstellt"
                GlobalFound = True
            Next n
        End If
    End With
Next i
If GlobalFound = False Then
    MsgBox "Datei: " & CheckRef & " wurde nicht gefunden." & Chr$(13) & _
        "Überprüfen Sie bitte Ihre Office-Installation"
End If
End Sub

Public Function ResCheckReference() As Boolean
Dim objRef As Object
For Each objRef In ActiveWorkbook.VBProject.References
    With objRef
        Debug.Print objRef.fullpath
        If InStr(1, objRef.fullpath, CheckRef) > 0 Then
            ResCheckReference = True
            Exit Function
        End If
    End With
Next
ResCheckReference = False
End Function

Private Function CountLocalDrives() As Byte
Dim DriveSpace As Byte, myDrives As String
Dim StringLen As String, DriveLen As String, x As Byte
Dim Laufwerk As String
StringLen = Space(32)
DriveSpace = 32
DriveLen = GetLogicalDriveStrings(DriveSpace, StringLen)
myDrives = Left(StringLen, DriveLen)
LocDrivesCount = 0
Do While x < Len(myDrives)
    'Nach ASCII Leer suchen
    x = InStr(myDrives, Chr$(0))
    If x > 0 Then
        Laufwerk = Left$(myDrives, x - 1)
        myDrives = Mid$(myDrives, x + 1, Len(myDrives))
        If GetDriveType(Laufwerk) = 3 Then
            LocDrivesCount = LocDrivesCount + 1
        End If
    Else
        Exit Do
    End If
Loop
CountLocalDrives = LocDrivesCount
End Function

Private Function GetLocalDriveName(ByVal getDrive As ByteAs String
Dim DriveSpace As Byte, myDrives As String
Dim StringLen As String, DriveLen As String
Dim Laufwerk As String
Dim As Byte, n As Byte
StringLen = Space(32)
DriveSpace = 32
DriveLen = GetLogicalDriveStrings(DriveSpace, StringLen)
myDrives = Left(StringLen, DriveLen)
n = 0
Do While x < Len(myDrives)
    x = InStr(myDrives, Chr$(0))
    If x > 0 Then
        Laufwerk = Left$(myDrives, x - 1)
        n = n + 1
        If n = getDrive Then
            GetLocalDriveName = Laufwerk
            Exit Function
        End If
        myDrives = Mid$(myDrives, x + 1, Len(myDrives))
    End If
Loop
End Function



     Code eingefügt mit Syntaxhighlighter 2.5



Gruss Rainer


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Verweis auf Solver.xla"