Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Solver funktioniert nicht mehr

Solver funktioniert nicht mehr
21.07.2006 15:51:22
Wetzel
Hallo Leute,
ich steuere über ein Makro einen solver an der mit etwas berechnet. Das funktioniert soweit. Dazu musste ich bei Extras-AddIns Manager den Solver aktivieren.
Wenn ich die Datei nun auf ein anderes Laufwerk packe, dann funktioniert der Solver nicht mehr. Der Grund liegt wohl in der Objektbibliothek:
VBA Editor - Extras - Verweise - nichtvorhandenSolver.xls
Weiss jemand wie man den Verweis auf den Solver beibehalten kann, ohne ihn manuell immer wieder neu machen zu müssen?
Viele Grüße und danke schonmal,
Stephan
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Solver funktioniert nicht mehr
22.07.2006 14:20:09
Horst
Hi,
die Verweise in einer Schleife testen. Falls der Verweis auf den Solver nicht gefunden wird, Verweis z.B. mit der AddFromFile-Methode setzen.
Wenn du es ganz professionell machen willst, vorher noch checken, ob der Solver überhaupt installiert ist.
mfg Horst
AW: Solver funktioniert nicht mehr
24.07.2006 10:04:56
Wetzel
Hallo ihr,
Horsts Lösung klingt interessant. Kann mir die jemand etwas näher erläutern. Ganz sooo gut in VBA bin ich dann doch nicht.
Vielen Dank schonmal im Voraus
Wetzel
Anzeige
AW: Solver funktioniert nicht mehr
24.07.2006 16:21:35
K.Rola
Hallo,
Option Explicit
Sub Verweis_auf_Solver()
Dim strSolver As String, lngVersion As Long, x As Long, bolFound As Boolean, msg As Integer
bolFound = False
lngVersion = Val(Application.Version)
''Hier ggf. das Laufwerk anpassen
strSolver = "c:\programme\microsoft office\office" & lngVersion & "\makro\solver\solver.xla"
If Dir(strSolver) <> "" Then
With ThisWorkbook.VBProject
For x = 1 To .References.Count
If UCase(strSolver) = UCase(.References(x).FullPath) Then bolFound = True
Next
If Not bolFound Then
msg = MsgBox("Der Verweis auf:" & Chr(10) & Chr(10) & _
strSolver & Space(10) & Chr(10) & Chr(10) & _
"wurde nicht gefunden!          " & Chr(10) & Chr(10) & _
"Soll er jetzt erstellt werden?", 32 + 4, "wills wissen...")
If msg = 7 Then Exit Sub
'wenn ja geklickt, Verweis hinzufügen
.References.AddFromFile strSolver
Else
MsgBox "Der Verweis auf:" & Chr(10) & Chr(10) & _
strSolver & Space(10) & Chr(10) & Chr(10) & _
"ist vorhanden!", 64, "weise hin..."
End If
End With
Else
MsgBox "Der Solver ist unter dem angegebenen Pfad nicht installiert!" & Space(10), 64, "Weise hin..."
End If
End Sub
Gruß K.Rola

Anzeige
AW: Solver funktioniert nicht mehr
24.07.2006 17:36:04
Wetzel
Hey danke,
das Skript funktioniert super. Ich musste lediglich "& lngVersion &" aus folgender Zeile entfernen, weil sonst ein Fehler kam:
''Hier ggf. das Laufwerk anpassen
strSolver = "c:\programme\microsoft office\office" & lngVersion & "\makro\solver\solver.xla"
Nun habe ich noch eine kleine Frage in dem Zusammenhang.
Kann man den Pfad zum Solver international dynamisch halten (also egal mit welcher Version oder Sprachversion ich die Datei öffne, soll excel immer den Pfad zum Solver ermitteln.
Den Installationspfad bekomme ich über Application.path
Grüße Wetzel
Anzeige
AW: Solver funktioniert nicht mehr
24.07.2006 21:00:24
K.Rola
Hallo,
Tipp, wenn du noch eine Antwort erwartest, die Frage als offen kennzeichnen, hab nur
zufällig nochmal reingeschaut.
Hab den Fehler erst gar nicht deuten können, aber klar, bei mir sind unterschiedliche
Officeversionen installiert. Der Weg über Application.Path ist daher besser geeignet,
wie im Beispiel unten zu sehen.
Option Explicit
Sub versiv()
Const strSolver As String = "solver.xla"
Dim strAppPath As String, msg As String
Dim i As Long
Dim objFS As Object
Dim bolFound As Boolean
Set objFS = Application.FileSearch
strAppPath = Application.Path
If Right(strAppPath, 1) <> "\" Then strAppPath = strAppPath & "\"
With objFS
.NewSearch
.LookIn = strAppPath
.SearchSubFolders = True
.FileType = 4
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
If InStr(1, LCase(.FoundFiles(i)), strSolver) Then
MsgBox "Pfad zum Solver:" & Chr(10) & Chr(10) & _
.FoundFiles(i)
bolFound = True
Exit For
End If
Next i
End If
End With
If Not bolFound Then
MsgBox "Der Solver wurde nicht gefunden!" & Space(10), 64, "Stelle fest..."
End If
Set objFS = Nothing
End Sub
Gruß K.Rola

Anzeige
AW: Solver funktioniert nicht mehr
25.07.2006 09:28:24
Wetzel
Hallo K.Rola,
vielen Dank für deine Tipps und Mühen.
Leider funktioniert dein neues Skript nicht richtig. Syntax läuft, aber obwohl ein Solver vorhanden ist kommt die Meldung "Der Solver wurde nicht gefunden".
Kannst du mir sagen, ob es einen Befehl gibt der direkt den Pfad zu den Addins (Solver findet). Sowas wie Application.Addins.Path wäre doch eine super Idee, geht nur leider nicht...
Grüße Stephan
Anzeige
AW: Solver funktioniert nicht mehr
25.07.2006 14:14:26
K.Rola
Hallo,
bin einigermaßen ratlos, warum das bei dir nicht funktioniert, denn bei mir geht das.
Addinpath würde nichts bringen, da der Solver ein eigenes Verzeichnis hat.
Gruß K.Rola
AW: Solver funktioniert nicht mehr
25.07.2006 15:17:32
Wetzel
Ich habs.
Es sind 2 subs geworden, von denen dass untere zuerst aufgerufen wird.
Zuerst wird geprüft ob ein fehlerhafter Verweis vorhanden ist, und dieser wird dann eleminiert. Im Anschluss wird mit dem

Sub "SolverVerweise" nach dem Solver.xla im Installationspfad gesucht und dieser dann als Verweis gebildet.
Vielen Dank nochmal
Unten die Subs:

Sub SolverVerweise()
Const strSolver As String = "Solver.xla"
Dim strAppPath, strcomplete As String, msg As String
Dim q As Long
Dim i, x As Integer
Dim objFS, objfound As Object
Dim bolFound As Boolean
Set objFS = Application.FileSearch
strAppPath = Application.Path
If Right(strAppPath, 1) <> "\" Then strAppPath = strAppPath & "\"
With objFS
.LookIn = strAppPath
.FileType = msoFileTypeAllFiles
.SearchSubFolders = True
.Filename = strSolver
.Execute
End With
With Application.FileSearch
'For i = 1 To .FoundFiles.Count
'MsgBox .FoundFiles(1)
strcomplete = .FoundFiles(1)
' Next i
End With
With ThisWorkbook.VBProject
For x = 1 To .References.Count
If UCase(strcomplete) = UCase(.References(x).FullPath) Then bolFound = True
Next
If Not bolFound Then
ThisWorkbook.VBProject.References.AddFromFile strcomplete
End If
End With
End Sub


Sub VerweisCheck()
Dim intz As Integer
Application.DisplayAlerts = False
With Application.VBE.ActiveVBProject
For intz = 1 To .References.Count
If .References(intz).IsBroken = True Then
ActiveWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References(intz)
End If
Next intz
End With
Call SolverVerweise
Application.DisplayAlerts = True
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Solver-Probleme in Excel beheben


Schritt-für-Schritt-Anleitung

  1. Solver aktivieren: Stelle sicher, dass der Excel Solver aktiviert ist. Gehe zu Extras > Add-Ins und aktiviere das Kontrollkästchen für den Solver.
  2. VBA Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Verweise überprüfen: Gehe zu Extras > Verweise und schau, ob der Verweis auf solver.xla vorhanden ist.
  4. Verweis hinzufügen: Wenn der Verweis nicht vorhanden ist, kannst du ihn manuell hinzufügen oder ein Makro verwenden, um den Verweis zu setzen (siehe Beispiel unten).
Sub AddSolverReference()
    Dim strSolver As String
    strSolver = "C:\Programme\Microsoft Office\Office\solver.xla"
    ThisWorkbook.VBProject.References.AddFromFile strSolver
End Sub
  1. Dateipfad anpassen: Achte darauf, den Dateipfad entsprechend deiner Installation anzupassen, da der Pfad je nach Office-Version variieren kann.

Häufige Fehler und Lösungen

  • Fehler: „Der Solver wurde nicht gefunden“: Überprüfe, ob der Pfad zu solver.xla korrekt ist. Es kann sein, dass der Solver nicht installiert ist oder der Pfad falsch angegeben wurde.
  • Lösung: Verweis auf den Solver zurücksetzen: Nutze ein Makro, um den Verweis auf den Solver automatisch zu überprüfen und gegebenenfalls neu zu setzen.
Sub CheckSolverReference()
    Dim ref As Object
    For Each ref In ThisWorkbook.VBProject.References
        If ref.Name = "Solver" Then
            Exit Sub
        End If
    Next ref
    ThisWorkbook.VBProject.References.AddFromFile "C:\Programme\Microsoft Office\Office\solver.xla"
End Sub

Alternative Methoden

Falls der manuelle Weg nicht funktioniert, kannst du den Solver auch über den folgenden VBA-Code dynamisch suchen:

Sub FindSolver()
    Dim strSolver As String
    Dim strPath As String
    strSolver = "solver.xla"
    strPath = Application.Path

    If Dir(strPath & "\" & strSolver) <> "" Then
        ThisWorkbook.VBProject.References.AddFromFile strPath & "\" & strSolver
    Else
        MsgBox "Solver nicht gefunden!"
    End If
End Sub

Diese Methode durchsucht den Installationspfad und fügt den Verweis hinzu, wenn der Solver vorhanden ist.


Praktische Beispiele

Wenn du den Solver in verschiedenen Excel-Versionen nutzen möchtest, kannst du den folgenden Code verwenden, um den Pfad dynamisch zu ermitteln:

Sub DynamicSolverPath()
    Dim strSolver As String
    strSolver = "solver.xla"
    Dim strAppPath As String
    strAppPath = Application.Path

    If Dir(strAppPath & "\" & strSolver) <> "" Then
        MsgBox "Solver gefunden unter: " & strAppPath
    Else
        MsgBox "Solver nicht gefunden!"
    End If
End Sub

Dieser Code zeigt eine Meldung an, wenn der Solver gefunden wird, und gibt den Pfad aus.


Tipps für Profis

  • Verwendung von Application.Path: Nutze Application.Path, um den Installationspfad dynamisch zu ermitteln. Dies ist besonders nützlich, wenn du deine Excel-Datei auf verschiedenen Computern verwendest.
  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um festzustellen, wann und warum der Solver nicht gefunden wird. Dies kann dir helfen, zukünftige Probleme schneller zu lösen.
  • VBA-Kommentare: Kommentiere deinen VBA-Code, um die Nachverfolgbarkeit zu erhöhen und um anderen zu helfen, deinen Code zu verstehen.

FAQ: Häufige Fragen

1. Warum funktioniert der Solver nicht? Es könnte sein, dass der Verweis auf solver.xla fehlt oder dass der Solver nicht installiert ist. Überprüfe die Verweise im VBA-Editor.

2. Wie kann ich den Solver in Excel aktivieren? Gehe zu Extras > Add-Ins und aktiviere das Kontrollkästchen für den Solver. Wenn der Solver nicht angezeigt wird, könnte er nicht installiert sein.

3. Gibt es eine Möglichkeit, den Pfad zum Solver international dynamisch zu halten? Ja, du kannst Application.Path verwenden, um den Installationspfad des Solvers dynamisch zu ermitteln, anstatt ihn fest einzugeben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige