Anzeige
Archiv - Navigation
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Systemp-Variable benötigt

Systemp-Variable benötigt
02.06.2008 09:18:27
horrscht6
Hallo miteinander,
ich möchte zum halbautomatischen Übertragen eines VBA-Moduls (AddIn zu Dokument) das entsprechende Modul zuerst exportieren, danach in die betreffende Excel-Datei importieren. Damit ich mich nicht auf Pfade wie "C:\" beschränke, wo am Ende keine Schreibrechte existieren. Ich würde diesen Export gern in den TEMP-Pfad des Windows-Users machen, wo i. d. R. immer Schreibrechte existieren.
Wie kann ich diesen Windows bzw. User TEMP-Pfad auf einfachste Weise als Variable erhalten?
Eine triviale VBA Lösung, die mir ein komplettes Modul vom AddIn in ein Excel-Dokument überträgt, ohne einen Export/Import nehme ich als Antwort auch dankend an. Die Lösungen im Forums-Archiv finde ich leider zu wenig zielführend.
Gruß, Matthias

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Systemp-Variable benötigt
02.06.2008 09:24:00
Renee
Hi Matthias,

so:
TempPath = Environ("tmp")
oder so:
TempPath = Environ("temp")


GreetZ Renée

AW: Systemp-Variable benötigt
02.06.2008 11:54:00
horrscht6
Danke René!
Die Funktion Environ() kannte ich noch gar nicht. Problem gesamt dennoch nun etwas anders gelagert und noch nicht gelöst:
Folgende Sub:

Sub ExportModul(Optional ByVal Debugging As Boolean = False)
Dim TmpPath As String, Path1 As String, Path2 As String, FallBack, modFileName As String,  _
CRLF As String
Const ActiveModule = "modGeneralFunctions"
CRLF = Chr(13) & Chr(10)
FallBack = "C:\"
Path1 = Environ("tmp")
Path2 = Environ("temp")
If Dir(Path1, vbDirectory)  "" Then
TmpPath = Path1 & "\"
Else
If Dir(Path2, vbDirectory)  "" Then
TmpPath = Path2 & "\"
Else
TmpPath = FallBack
End If
End If
If Debugging = True Then Debug.Print "ActiveWorkbook.Name=" & ActiveWorkbook.Name: Debug. _
Print "ThisWorkbook.Name=" & ThisWorkbook.Name
modFileName = TmpPath & ActiveModule & ".bas"
' Die alten Module im Ziel werden entfernt, bevor die neuere Version reinkopiert wird
On Error GoTo ErrM1
Err.Clear
ActiveWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents(" _
mGeneralFunctions")
On Error GoTo ErrM2
Err.Clear
ActiveWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents( _
ActiveModule)
On Error GoTo ErrM3
Err.Clear
ThisWorkbook.VBProject.VBComponents(ActiveModule).Export modFileName
On Error GoTo ErrM4
Err.Clear
ActiveWorkbook.VBProject.VBComponents.Import modFileName
On Error GoTo ErrM5
Err.Clear
Kill modFileName
On Error GoTo 0
If Debugging = True Then Debug.Print "Modul " & Chr(34) & ActiveModule & Chr(34) & " wurde  _
kopiert!" & CRLF & CRLF
Exit Sub
ErrM1:
If Debugging = True Then Debug.Print "M1: Remove of " & Chr(34) & "mGeneralFunctions" & Chr( _
34) & " fails or not existent": Debug.Print "    #" & Err.Number & ": " & Err.Description & CRLF
Resume Next
ErrM2:
If Debugging = True Then Debug.Print "M2: Remove of " & Chr(34) & "modGeneralFunctions" & Chr( _
34) & " fails or not existent": Debug.Print "    #" & Err.Number & ": " & Err.Description & CRLF
Resume Next
ErrM3:
If Debugging = True Then Debug.Print "M3: EXPORT of " & Chr(34) & "modGeneralFunctions" & Chr( _
34) & " fails": Debug.Print "    #" & Err.Number & ": " & Err.Description & CRLF
Resume Next
ErrM4:
If Debugging = True Then Debug.Print "M4: IMPORT of " & Chr(34) & "modGeneralFunctions" & Chr( _
34) & " fails or not existent": Debug.Print "    #" & Err.Number & ": " & Err.Description & CRLF
Resume Next
ErrM5:
If Debugging = True Then Debug.Print "M5: Deleting of " & Chr(34) & modFileName & Chr(34) & "  _
fails or not existent": Debug.Print "    #" & Err.Number & ": " & Err.Description & CRLF
Resume Next
End Sub


Beim Aufruf des Moduls oben (Bestandteil eines AddIn), während ein normales Excel-Dokument geöffnet ist, kommt es zu folgendem Fehler:
Fehler: Laufzeitfehler '1004': Der programmatische Zugriff auf das Visual Basic-Projekt ist nicht sicher.
Viele Antworten im Forum liefern mir folgende Aussage:


du musst im Menü Extras, Makro, Sicherheit, Vertrauenswürdige Quellen den Haken bei
Zugriff auf Visual Basic Projekt vertrauen setzen.


Das stimmt, dann funktioniert mein Makro auch, ABER:
Es laden sich einige Leute aus den Abteilungen mein AddIn auf ihren PC und wollen dann mit oben aufgeführter Funktion über eine Funktion in der Symbolleiste das eine AddIn-Modul automatisch in ihr lokales Excel-Dokument kopieren. Es müßte also erst für jeden PC eine Anweisung erstellt werden, wenn dieses Modul kopiert werden möchte, wie Sicherheitseinstellungen zu verändern sind. Geht das Kopieren des Moduls nicht auch anders, oder mit automatisch auf "vertrauenswürdig" setzen?
Danke für eine Antwort & Gruß, Matthias

Anzeige
AW: Systemp-Variable benötigt
02.06.2008 12:04:45
Rudi
Hallo,
keine Chance.
Gruß
Rudi
P.S. Renée, da weiblich

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige