Uložit jako PDF - Excel | VBA | Excelplus.NET

Transkript

Uložit jako PDF - Excel | VBA | Excelplus.NET
Systémové proměnné a složky
Jak naznačuje titulek, podíváme se na dva pojmy – systémové proměnné a složky. Pro první z nich je
klíčové slovíčko Environ (Environment), konkrétně funkce VBA Environ, API funkce
GetEnvironmentVariableA, WMI dotaz Select * from Win32_Environment aj.
K těmto funkcím obracejte pozornost, pokud potřebujete vracet informace o procesoru, jméno
aktuálně přihlášeného uživatele nebo název počítače (WMI jde více do hloubky, především v otázce
práv, registrů nebo třeba hardware).
Sub PocitacUzivatelVBA()
MsgBox Environ$("COMPUTERNAME")
MsgBox Environ$("USERNAME")
End Sub
Pro úplnost dodávám ekvivaletní výpis kódu s API funkcemi.
Public Declare Function GetComputerNameA Lib "kernel32" (ByVal lpBuffer As _
String, nSize As Long) As Long
Public Declare Function GetUserNameA Lib "advapi32" (ByVal lpBuffer As String, _
nSize As Long) As Long
Sub TestPrihlasenyUzivatel()
MsgBox epfPocitac
MsgBox epfUzivatel
End Sub
Public Function epfPocitac() As String
Dim strPocitac As String * 255
Call GetComputerNameA(strPocitac, 255)
epfPocitac = Left$(strPocitac, InStr(strPocitac, Chr$()) - 1)
End Function
Public Function epfUzivatel() As String
Dim strUzivatel As String * 255
Call GetUserNameA(strUzivatel, 255)
epfUzivatel = Left$(strUzivatel, InStr(strUzivatel, Chr$()) - 1)
End Function
Horší je to už v případě zjišťování systémových složek. Teoreticky se kupříkladu ke složce dokumentů
aktuálního uživatele dostanete přes Environ$(„USERPROFILE“), ke kterému přilepíte řetězec
Excelplus.NET | 1
Systémové proměnné a složky
„\Documents“ (platí i jako odkaz pro české Dokumenty). V minulosti se ale název složky i cesta k ní
měnila (jak v anglické, tak české verzi), a tak je výsledek nejistý. Rozumně lze získat ještě tak cestu
ke složce s odkládacími soubory (TEMP). Tím to ovšem končí.
Pro systémové složky sáhněte buď do VBScriptu a jeho WSH (Windows Script Host), potažmo modelu
FSO (File System Objects), nebo použijte API funkce (SHGetFolderPathA).
'http://technet.microsoft.com/en-us/library/ee176604.aspx
'moje Plocha (Desktop)
Private Const CSIDL_DESKTOP As Long = &H0
'moje Dokumenty (Documents)
Private Const CSIDL_PERSONAL As Long = &H5
Private Declare Sub SHGetFolderPath Lib "shell32" Alias "SHGetFolderPathA" _
(ByVal Hwnd As Long, ByVal csidl As Long, ByVal hToken As Long, ByVal dwFlags _
As Long, ByVal pszPath As String)
Sub SpecialniSlozkyAPI()
Dim strSlozka As String
strSlozka = Space(255)
'složka dokumentů aktuálního uživatele (bez zpětného lomítka na konci):
SHGetFolderPath Application.Hwnd, CSIDL_PERSONAL, &, &, strSlozka
'zobrazení zprávy:
MsgBox Trim(strSlozka)
'složka plochy aktuálního uživatele (bez zpětného lomítka na konci):
SHGetFolderPath Application.Hwnd, CSIDL_DESKTOP, &, &, strSlozka
'zobrazení zprávy:
MsgBox Trim(strSlozka)
End Sub
Sub SpecialniSlozkyWSH()
Excelplus.NET | 2
Systémové proměnné a složky
Dim wshShell As Object
'objekt WSH
Set wshShell = CreateObject("WScript.Shell")
'složka dokumentů aktuálního uživatele (bez zpětného lomítka na konci):
strCestaDokumenty = wshShell.SpecialFolders("MyDocuments")
'složka plochy aktuálního uživatele (bez zpětného lomítka na konci):
strCestaPlocha = wshShell.SpecialFolders("Desktop")
End Sub
Pozn. Existuje ještě objekt Shell.Application, který by měl mít také přístup k systémovým složkám
prostřednictvím „NameSpace“. Bohužel v mém případě kód není funkční.
Sub DialogShell()
'Windows 7, 64 bit
'nefunkční
'objekt Shell
Set objShell = CreateObject("Shell.Application")
'složka dokumentů
objShell.NameSpace (5)
End Sub
Pokud se cesta ke složce odvíjí od aktuálního sešitu (sešitu se spouštěcí procedurou), pak se obraťte
na objekty ActiveWorkbook (ThisWorkbook) a jejich vlastnost .Path.
Jestliže má cesta vazbu na instalaci Excelu (Office), podívejte se na vybrané vlastnosti objektu
Application (.Path, .Startup.Path, .AltStartup.Path, .Templates.Path, .Library.Path, …).
Většina cest ke složkám, které obdržíte, nebude obsahovat na konci zpětné lomítko. To je nutné pro
některé další nástroje stejně jako pro následné připojení názvu souboru. O jeho programové doplnění
se může postarat níže uvedený kus kódu (nedojde ke zdvojení v případě existence, ve výpisu varianta
s užitím API funkce i bez ní).
Private Declare Function PathAddBackslash Lib "shlwapi.dll" Alias _
Excelplus.NET | 3
Systémové proměnné a složky
"PathAddBackslashA" (ByVal pszPath As String) As Long
Sub TestZpetneLomitkoAPI()
Dim strCestaLomitko As String
strCestaLomitko = CestaZpetneLomitko("c:\Windows")
End Sub
Function CestaZpetneLomitko(ByVal Retezec As String)
Retezec = Retezec + String(255, )
PathAddBackslash (Retezec)
CestaZpetneLomitko = Replace(Retezec, Chr(), vbNullString)
End Function
Sub TestZpetneLomitkoBezAPI()
Dim strCesta As String
Dim strCestaLomitko As String
strCesta = "c:\Windows"
strCestaLomitko = IIf(Right$(strCesta, 1) = "\", strCesta, strCesta & "\")
End Sub
Excelplus.NET | 4

Podobné dokumenty

Excel Board – výuková a prezentační tabule pro Excel Excelplus

Excel Board – výuková a prezentační tabule pro Excel Excelplus dál a dosáhnout skutečného stavu „full screen“. Do určité míry lze některé prvky a jejich zobrazení/skrytí řídit v rámci Možností aplikace Excel. Patří mezi ně Řádek vzorců, posuvníky, ouška listů ...

Více

ke stažení - Patrik Malina

ke stažení - Patrik Malina  Co je a jak vypadá ACL  Kde všude jsou ACL  Co vypadá jako ACL, ale není ACL  Mechanismy uplatnění ACL  Nástroje pro správu ACL

Více

Ovladače v OS a v ŘS REX

Ovladače v OS a v ŘS REX Funkci lze vzdáleně volat z diagnostického programu DDDShell systému REX a v blízké budoucnosti ji bude možno volat i z programu RexView. Parametry této funkce lze konfigurovat ve vývojovém prostře...

Více

Stručná instalační příručka

Stručná instalační příručka upravit startovací skripty prováděné automaticky po přihlášení uživatele na monitorovaný počítač. Pokud chcete ponechat přístupné statistiky uložené ve starší verzi, musíte novou verzi CESS v6 nain...

Více

cyclope employee surveillance - instalační příručka

cyclope employee surveillance - instalační příručka 3.1.3. Zkontrolujte/nainstalujte komponentu .NET Framework 2.0 Na počítači, na který chcete nainstalovat serverovou část Cyclope Emloyee Surveillance Solution musí být nejprve nainstalována kompon...

Více

Postupy při sledování výkonu

Postupy při sledování výkonu „ Zajistµte, aby služba Windows Time Service synchronizovala hodiny na všech serverech, které zapisují soubory protokol¾ ²íta²¾ do sdílené síÆové složky. DalöÌ informace Popis toho, jak pouûÌvat Ëa...

Více