215 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich möchte mein bestehendes Makro nur durch drei bestimmte User ausführen lassen, nicht durch jeden.

Beispiel:
User darf ausführen: IDeutz + SWiebers + AMoeller
User darf nicht ausführen: RBrunzel

Das Makro wird ausgeführt, indem ein Bild in der Tabelle angeklickt wird. Das Makro ist dem Bild zugewiesen.

Sub NEU_Logomate_csv()
'
' NEU_Logomate_csv Makro
' CSV für LM speichern

Dim Ausgabepfad As String
Dim Ausgabedatei As String
Dim lngLetzte As Long
Dim lngSpalte As Long
Dim Zeile As String
Dim VollZeile As String
Dim Trennzeichen As String
Dim z As Long

'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False

'Ausgabepfad wird festgelegt
Ausgabepfad = "\\192.168.50.9\LogoMate_Transfer\LogoMate\Daten\Manuell\Aktionen\"

'Trennzeichen wird festgelegt
Trennzeichen = ";"

'Ausgabepfad und Dateinamen für Ausgabedatei erstellen - Ausgabename anpassen
Ausgabedatei = Ausgabepfad & "Aktmg_" & Date & "_" & Worksheets("Aktionsplanung").Range("X4").Value & "_" & Worksheets("Aktionsplanung").Range("X2").Value & ".csv"

With Worksheets("Logomate")
'letzte Zeile des Tabellenblatts ermitteln
lngLetzte = .Cells(Rows.Count, 1).End(xlUp).Row

'Falls Ausgabedatei bereits besteht, wird diese gelöscht
If Dir(Ausgabedatei) <> "" Then Kill (Ausgabedatei)

'Datei Öffen zur Ausgabe
Open Ausgabedatei For Output As #1

For z = 1 To lngLetzte
For lngSpalte = 1 To 8
Zeile = Trim(.Cells(z, lngSpalte).Text)
Zeile = Replace(Zeile, Trennzeichen, "") 'ggf in Text vorkommendes Trennzeichen wird gelöscht
VollZeile = VollZeile & Zeile & Trennzeichen
Next lngSpalte
'Ausgabe in Datei
VollZeile = Left(VollZeile, Len(VollZeile) - 1) 'Letzten Semicolon abschneiden
If Len(Replace(VollZeile, Trennzeichen, "")) > 0 Then Print #1, VollZeile
VollZeile = ""

Next z

End With

Close #1 'Datei schliessen

'Bildschirmaktualiserung
If Application.Ready Then
Application.ScreenUpdating = True
End If

'Abschlussmeldung
MsgBox "Aktion speichern übertragen", 64
End Sub

Kann jemand helfen?

Danke und Gruß,
Colatrink

2 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Colatrinker,

den angemeldeten Windows-User kannst du mit dem Befehl
Environ("UserName")
ermitteln.

Ergänze das Makro wie folgt:
Sub NEU_Logomate_csv()
'
' NEU_Logomate_csv Makro
' CSV für LM speichern

Dim Ausgabepfad As String
Dim Ausgabedatei As String
Dim lngLetzte As Long
Dim lngSpalte As Long
Dim Zeile As String
Dim VollZeile As String
Dim Trennzeichen As String
Dim z As Long

If Environ("UserName") = "IDeutz" Then bErlaubt = True
If Environ("UserName") = "SWiebers" Then bErlaubt = True
If Environ("UserName") = "AMoeller" Then bErlaubt = True

If bErlaubt = False Then
MsgBox "Das Makro darf nicht von " & Environ("UserName") & " ausgeführt werden!", 16, "Unberechtigter User"
Exit Sub
End If

'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
...


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,

:-) .... vielen Dank, klappt hervorragend und hat mein Problem gelöst.

Gruß,
Colatrinker
...