< návrat zpět

MS Excel


Téma: Otevření sešistu excel rss

Zaslal/a 20.7.2011 15:48

Dobrý den,

měl bych jeden problém, potřeboval bych vyřešit, aby šel sešit v excelu otevřít pouze na firemních počítačích, jde to ošetřit nějakým makrem?

Předem díky,

Jirka32

Zaslat odpověď >

#005557
avatar
Nejsnažší by bylo heslo, u makra je potřeba počítat s tím, že uživatel nemusí makro povolit, proto při uložení na firmením pc bych šel cestou skrytí (very hidden) všech listů až na jeden neškodný. Aby při následném otevření na jiném pc bez povolení maker byl zobrzen jen tento jeden prázdný (nebo neškodý) list. V případě povolení maker dojde k ověření názvu pc a budou-li podmínky splněny, tak dojde k zobrazení ostatních listů. Otázkou je, jestli firemní pc lze u vás nějaký shodným řetězcem identifikovat, nebo je-li nutno je všechny definovat.

Nicméně pokud si někdo domácí pc pojmenuje stejně jako firemní, tak to pak otevře taky :-), ale jak jinak to ověřit než podle názvu pc.

M@citovat
#005558
avatar
Díky,

ale myslím že to nebude to pravé ořechové,
ideál je, aby bylo po otevření vše viditelné bez hesla, ale právě pouze na nějakém řetezci firemních pc, asi by stačilo znát makro s příkladem vložení řetězce, já bych to už upravil, ale at hledám jak hledám, nikde nic :-(
To že budou mít všichni povoleny makra bych si zajistil,

Díkycitovat
#005559
avatar
Však bez hesla to jde jedině s použitím toho makra. Viditelné bude vše, ale jen tomu jehož název pc splní dané podmínky, ostatním ne, stejně tak ne těm, kdo makra nepovolí (třeba doma).

např.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
List2.Visible = xlSheetVeryHidden
End Sub


Private Sub Workbook_Open()
If InStr(1, Environ$("computername"), "2013", vbTextCompare) > 0 Then
List2.Visible = xlSheetVisible
End If
End Sub


M@citovat
#005562
avatar
Musel jsem řešit něco podobného a udělal jsem to přes toto makro. Pokud se hlásíš k PC, pak Ti to možná nepomůže. Pokud se hlásíš do domény, pak je to možné řešení. U nás ve fa máme na počátku písmeno "n" a ostatní části fa jiné písmeno.
Public Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
'+------------------------------------------------------------------------------'
Function loc_domain_name() As String
'-------------------------------------------------------------------------------'
Dim s As String * 255
Dim t As String
Dim l As Long
t = ""
On Error Resume Next
l = GetUserName(s, 255)
l = InStr(1, s, Chr(0))
If l > 0 Then
t = Left(s, l - 1)
Else
t = s
End If
On Error GoTo 0
loc_domain_name = UCase(Trim(t))
End Function
Ověření prvního písmena Ti pak řeší jestli Excelovský sešit je otevřen v doméně Tvé fa, nebo někde jinde. Stejně tak podobným způsobem můžeš řešit podle IP adresy, jména PC a nebo si navolit seznam PC, seznam jmen, které mají vidět určité listy. Ostatní xlSheetVeryHidden jak píše Jeza. Doporučuji pak mít jen jednu verzi na sdíleném disku (prostředí) a v ní přímo editovat, kdo co má vidět. Samozřejmostí je logické ošefovani startu a ukončení app. R.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje