Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Erkennen ob Datei Lokal oder über Citrix geöffnet?

Forumthread: Erkennen ob Datei Lokal oder über Citrix geöffnet?

Erkennen ob Datei Lokal oder über Citrix geöffnet?
03.05.2019 10:34:24
Marco
Hallo Zusammen,
Grundproblem:
ich habe einmal wieder ein komplizierteres Problem. Aufgrund verschiedener Sicherheitseinstellungen habe ich einige Makros, die auf einer lokalen Office-Version anders laufen müssen als unter Citrix.
z.B. Mailversand läuft unter Citrix nur über Sendkeys automatisiert.
Ich möchte jetzt gerne eine Abfrage in meine Makros einbauen die erkennen ob die Exceldatei im Arbeitsplatzprogramm oder unter Citrix geöffnet ist. Leider habe ich bisher keine funktionierende Lösung gefunden (Über Prozesse geht es nicht da beide Versionen parallel laufen können).
Das Einzige was evtl. ein Ansatzpunkt sein könnte - Wenn ich den Mauszeiger in der Taskleiste über das Programm halte steht dort:
- Microsoft Excel (Beim lokalen Excel)
- Microsoft Excel - \\Remote (Bei Citrix-Version)
Bei maximierten Fenstern wird das Remote leider nicht angezeigt. Daher komme ich auch nicht mit dem Auslesen des Fenstertitels zum Erfolg.
Hat vielleicht jemand von Euch eine Iddee wie ich erkennen kann in welchem Excel die Datei geöffnet ist?
Viele Grüße
Marco
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erkennen ob Datei Lokal oder über Citrix geöffnet?
03.05.2019 11:06:51
Nepumuk
Hallo Marco,
teste mal ob es über "ThisWorkbook.Path" einen Unterschied gibt.
Gruß
Nepumuk
Erkennen ob Datei Lokal oder über Citrix geöffnet?
03.05.2019 12:06:57
Marco
Hallo Nepumuk,
danke für die Antwort. Leider bringt es mit dem Pfad nichts.
Ich versuche das ganze jetzt mit Environ zu lösen.
Ich lasse mir von den Kollegen jetzt alle Environ-Variablen auslesen in beiden Systemen umd danach zu vergleichen mit welchen Werten ich am besten Arbeiten kann bzw. welche bei beiden System unterschiedlich, aber bei allen Kollegen gleich sind.
Dazu nutze ich folgendes Makro:
Sub Umgebungsvarriablen_auslesen()
Dim iIndex As Integer
Dim sResult As String
Dim sKey As String
Dim sValue As String
Dim iPos As Integer
' Environ() durchlaufen
' Beginnen mit 1
iIndex = 1
Do
' Umgebungsvariable auslesen
sResult = Environ(iIndex)
' Wird ein Leerstring zurückgegeben, so ist das
' Ende der Liste erreicht
If sResult  "" Then
' = suchen
iPos = InStr(sResult, "=")
sKey = Left$(sResult, iPos - 1)
sValue = Mid$(sResult, iPos + 1)
'der Tabelle hinzufügen
Cells(iIndex, 1).Value = sKey
Cells(iIndex, 2).Value = sValue
Cells(iIndex, 3).Value = iPos
End If
' Index um 1 erhöhen
iIndex = iIndex + 1
Loop Until sResult = ""
End 

Sub
VG
Marco

Anzeige
AW: Erkennen ob Datei Lokal oder über Citrix geöffnet?
03.05.2019 12:11:47
Nepumuk
Hallo Marco,
Umgebungsvariablen sind Computerbezogen, die haben mit der geöffneten Datei nichts zu tun.
Gruß
Nepumuk
Erkennen ob Datei Lokal oder über Citrix geöffnet?
03.05.2019 13:05:30
Marco
Hallo Nepumuk,
Es sind schon einige Variablen die sich unterscheiden. Ich habe jetzt auch die passende Lösung gefunden.
Wenn die Datei in Excel auf der lokalen Installation gestartet ist:
APClientType FAT
Wenn Excel unter Citrix also auf dem Server läuft:
APClientType XA
Es gibt noch einige andere Variablen die sich unterscheiden. Jedoch ist dieses wohl die beste für den Zweck.
Viele Grüße und ein schönes Wochenende
Marco
Anzeige
Application.StartupPath (owT)
03.05.2019 13:56:44
EtoPHG

AW: Application.StartupPath (owT)
03.05.2019 14:23:05
Marco
Dankeschön!
Werde ich auch testen.
VG
Marco
Lokal oder Citrix?
03.05.2019 16:07:50
mmat
Hallo
eigentlich meinst du doch wohl "Auf welchem Rechner läuft das Excel, das ich gerade sehe?"
Das Auslesen der Environment Variablen ist m.E. der Zielführende Ansatz. Die Variable "COMPUTERNAME" müsste die gewünschte Erkenntnis liefern.
So geht's:
Sub env()
Dim n As Long
On Error GoTo ente
For n = 1 To 100
Debug.Print Environ(n)
Next
ente:
End Sub
Man kann übrigens die Farbe des Fensterrands auf dem Citrix-App-Server (oder lokal) anders einstellen. Über das Windows Farbschema. Das find ich sehr hilfreich.
vg, MM
Anzeige
ComputerName - Problem Citrix
03.05.2019 18:03:05
EtoPHG
Hallo mmat,
Das ist IMHO der falsche Ansatz, denn bei einer Citrix-Farm müsstest du jeden einzelnen Servernamen erkennen, geschweige denn, die von 1000nden verschiedenen Clients.
Hingegen liefert Application.StartupPath immer ein lokales Laufwerk für einen Client und für einen Citrix-Client einen Servernamen in UNC-Notation!
Gruess Hansueli
Anzeige
AW: Lokal oder Citrix?
03.05.2019 18:19:51
Marco
Hallo MM,
ich habe das ganze über Environ gelöst.
Aufgrund der verschiedenen Server und Clients habe ich das ganze über Environ("ACPClientType") gelöst.
Dieser Wert ist auf allen Clients bzw. Server gleich so dass ich daran direkt zuordnen kann.
Wenn die Datei in Excel auf der lokalen Installation gestartet ist:
APClientType FAT
Wenn Excel unter Citrix also auf dem Server läuft:
APClientType XA
Viele Grüße
Marco
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Erkennen ob Datei Lokal oder über Citrix geöffnet


Schritt-für-Schritt-Anleitung

Um zu erkennen, ob eine Excel-Datei lokal oder über Citrix geöffnet ist, kannst du die folgende Methode verwenden. Diese nutzt Umgebungsvariablen, um den Unterschied zwischen den beiden Umgebungen zu ermitteln:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu (Einfügen > Modul).

  3. Kopiere den folgenden Code in das Modul:

    Sub CheckCitrixEnvironment()
       Dim clientType As String
       clientType = Environ("APClientType")
    
       If clientType = "FAT" Then
           MsgBox "Die Datei ist lokal geöffnet."
       ElseIf clientType = "XA" Then
           MsgBox "Die Datei ist über Citrix geöffnet."
       Else
           MsgBox "Unbekannte Umgebung."
       End If
    End Sub
  4. Schließe den VBA-Editor und führe das Makro CheckCitrixEnvironment aus, um das Ergebnis zu sehen.


Häufige Fehler und Lösungen

  • Fehler: Umgebungsvariable nicht gefunden

    • Lösung: Stelle sicher, dass die Umgebungsvariable APClientType tatsächlich existiert. Du kannst dies überprüfen, indem du die Umgebungen mit einem anderen Makro ausliest.
  • Fehler: Falsches Ergebnis

    • Lösung: Überprüfe, ob du die richtige Excel-Version verwendest, da einige Umgebungsvariablen je nach Citrix-Version unterschiedlich sein können.

Alternative Methoden

Eine weitere Methode zur Erkennung, ob Excel lokal oder über Citrix läuft, besteht darin, den Application.StartupPath zu verwenden. Dieser liefert für lokale Installationen einen Pfad zu einem lokalen Laufwerk und für Citrix-Clients einen Servernamen in UNC-Notation.

Sub CheckStartupPath()
    MsgBox Application.StartupPath
End Sub

Führe dieses Makro aus und analysiere den zurückgegebenen Pfad.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Umgebungsvariablen auslesen kannst:

Sub ListEnvironmentVariables()
    Dim n As Long
    On Error GoTo EndSub
    For n = 1 To 100
        Debug.Print Environ(n)
    Next
EndSub:
End Sub

Mit diesem Makro kannst du alle verfügbaren Umgebungsvariablen anzeigen und die Werte vergleichen, um festzustellen, ob es Unterschiede zwischen dem lokalen Excel und der Citrix-Version gibt.


Tipps für Profis

  • Achte darauf, dass die Umgebungsvariablen von verschiedenen Benutzern unterschiedlich sein können. Stelle sicher, dass du die richtigen Variablen für deine Tests verwendest.
  • Wenn du regelmäßig mit Citrix arbeitest, könnte es hilfreich sein, ein Makro zu erstellen, das automatisch prüft und die Ergebnisse in einer Excel-Tabelle dokumentiert.
  • Die Manipulation der Farbschemata in Windows kann helfen, die Unterscheidung zwischen den beiden Umgebungen visuell zu verbessern.

FAQ: Häufige Fragen

1. Was ist Citrix?
Citrix ist eine Virtualisierungssoftware, die es Benutzern ermöglicht, Anwendungen und Desktops über das Internet zu verwenden, als ob sie lokal installiert wären.

2. Wie kann ich die Citrix-Version ermitteln?
Du kannst die Citrix-Version ermitteln, indem du die relevanten Umgebungsvariablen wie APClientType in einem VBA-Makro abfragst.

3. Warum funktioniert die Zwischenablage nicht zwischen Citrix und lokalem Excel?
Die Citrix-Zwischenablage funktioniert möglicherweise nicht, weil die Einstellungen der Anwendung und des Citrix-Servers nicht übereinstimmen. Stelle sicher, dass die Zwischenablage in den Citrix-Einstellungen aktiviert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige