Hi,
ich hätte gerne folgendes:
Ich habe eine XLAM-Bibliothek namens "lib1.xlam" auf einem Netzlaufwerk
liegen. Um die Bibliothek entwickeln zu können hätte ich gerne auf
meiner lokalen Platte eine Kopie mit gleichem Namen.
Nun habe ich zwei Excel-Dateien (file1.xlsm und file2.xlsm) die die
jeweiligen Bibliotheken referenzieren sollen (file1 -> Netzlaufkwerk,
file2 -> lokale Platte).
Scheinbar überfordere ich Excel 2010 damit.
Hier erstmal der Code den ich in den beiden xlsm-Dateien habe:
1 | Private Sub Workbook_Open()
|
2 | Dim n As Integer
|
3 |
|
4 | n = FreeFile()
|
5 | Open "C:\tmp\debug.txt" For Output As #n
|
6 |
|
7 | '~~> Check if "lib1" is already added and if so remove it
|
8 | Dim index As Long
|
9 | For i = ActiveWorkbook.VBProject.References.Count To 1 Step -1
|
10 | Set theRef = ActiveWorkbook.VBProject.References(i)
|
11 | Print #n, "i = " & i & ", Lib = " & theRef.Name
|
12 | If theRef.Name = "lib1" Then
|
13 | index = i
|
14 | End If
|
15 | Next i
|
16 | Print #n, "index = " & index
|
17 | If index <> 0 Then
|
18 | Call ActiveWorkbook.VBProject.References.Remove(ActiveWorkbook.VBProject.References(index))
|
19 | Print #n, "Removed lib"
|
20 | End If
|
21 | For i = ActiveWorkbook.VBProject.References.Count To 1 Step -1
|
22 | Set theRef = ActiveWorkbook.VBProject.References(i)
|
23 | Print #n, "i = " & i & ", Lib = " & theRef.Name
|
24 | Next i
|
25 |
|
26 | Print #n, "Adding lib"
|
27 | 'Call ActiveWorkbook.VBProject.References.AddFromFile("C:\tmp\lib1.xlam")
|
28 | Call vbProj.References.AddFromFile("\\NETWORK_PATH\lib1.xlam")
|
29 | End Sub
|
Die letzte Zeile würde ich entsprechend ein- bzw. auskommentieren, je
nachdem welche Excel-Datei ich öffne.
Die ganzen Print-Befehle sind natürlich nur zum Debuggen und die
Ausgaben schauen auch richtig aus. Am Anfang findet er die Bibliothek,
dann nicht mehr (nachdem sie entfernt wurde).
Leider referenziert Excel jedoch immer die Bibliothek die ich zuletzt
geöffnet hatte, unabhängig davon was in dem Code ein- oder
auskommentiert ist!
Der einzige Weg die "richtige" Bibliothek zu referenzieren den ich
bisher gefunden habe wäre die xlam-Datei vor der xlsm-Datei zu öffnen.
Das ist aber mehr als unschön und mir wäre eine programmatische Lösung
sehr viel lieber.
Gibt es einen Weg Excel dazu zu bringen die entsprechende Bibliothek zu
öffnen?
Danke vorab für alle Antworten