2015-03-05 2 views
1

Я пишу код VBA для сбора ввода из нескольких файлов xlsx и объединения их в один мастер-лист. Поскольку пользователи этого листа являются смешанными пользователями Windows и OSX, мой код должен быть универсальным на обеих платформах.VBA - имя пользователя в Windows и OSX

Одна из вещей, которые я хотел бы достичь, - определить имя пользователя пользователя. Это можно сделать, используя environ("username") на Windows и MacScript на OSX. Однако ниже код не может быть скомпилирован на Mac, так как он не знает environ().

OS_IS_MAC = Application.OperatingSystem Like "*Mac*" 
If OS_IS_MAC Then 
    sMyScript = "set userName to short user name of (system info)" & vbNewLine & "return userName" 
    USERNAME = MacScript(sMyScript) 

Else

USERNAME = Environ("UserName") 

End If

Как я могу обойти это?

ответ

5

Использование условной компиляции:

#If Mac Then 
    sMyScript = "set userName to short user name of (system info)" & vbNewLine & "return userName" 
    USERNAME = MacScript(sMyScript) 
#Else 
    USERNAME = Environ("UserName") 
#End If 
+0

Отлично, спасибо! Это идеально (и помогает с некоторыми другими проблемами Mac/Windows, которые у меня были). –

+0

Большое спасибо, работает как шарм! –

0

Один из них может быть проще:

USERNAME = Environ("USER") 

или

USERNAME = Environ("LOGNAME") 

И они работают, как показано на Mac.

Смежные вопросы