Zobrazit plnou verzi příspěvku: Obsahové centrum

Radek Pícha
08.04.2020, 13:25
Dobrý den.Jak zjistím ve VBA umístění knihoven obsahového centra ? Jde mi o cestu:Inventor -> Nástroje -> Možnosti aplikace -> karta Obsahové centrum -> Možnosti přístupu: Umístění knihovenZkoušel jsem GetAccessOption, ale bez úspěchu.Děkuji

Vladimír Michl
08.04.2020, 14:46
U mne funguje:[CODE]Sub GetCCloc() Dim CCloc As String Dim CC As ContentCenterOptions Set CC = ThisApplication.ContentCenterOptions CC.GetAccessOption ContentCenterAccessOptionEnum.kInventorDesktopAccess, CCloc MsgBox CClocEnd Sub[/CODE]

Radek Pícha
09.04.2020, 06:33
Super, funguje, děkuji.Přitom jsem ovšem zjistil poněkud zvláštní skutečnost. Zkoušel jsem to samé, neustále jsem dostával chybu "Type mismatch", teď už vím proč:Dim x, y As StringDim CC As ContentCenterOptionsSet CC = ThisApplication.ContentCenterOptions'toto je chyba:CC.GetAccessOption ContentCenterAccessOptionEnum.kInventorDesktopAccess, x'toto je správně:CC.GetAccessOption ContentCenterAccessOptionEnum.kInventorDesktopAccess, yProtože Dim x,y,z AS string vytvoří všechny vyjmenované proměnné kromě poslední jako Variant/Empty, ta poslední je String. Je to vidět v okně Locals. A i když provedu x="", bude proměnná x typu Variant/String. A příkaz GetAccessOption bazíruje na tom, aby proměnná do které vloží tu cestu byla čistě String, jinak hlásí chybu.Existuje pro toto chování nějaké vysvětlení ? Nebo mám někde něco špatně...

Vladimír Michl
09.04.2020, 07:27
Syntaxe příkazu Dim není "seznam a pak typ As", ale "seznam s možným individuálním nastavením jednotlivých typů - As". Viz (toto je sice pro VB.NET ale syntaxe je stejná):https://docs.microsoft.com/cs-cz/dotnet/visual-basic/language-reference/statements/dim-statement

Radek Pícha
09.04.2020, 07:59
Takže to má být takto ? Dim a As String, b As String, c As StringAno, takto to opravdu funguje. Ale je to vopruz, to je snad první jazyk v kterém dělám a který to tak má Jenže právě podle toho článku to chápu opačně. Asi to platí pro VB, pro VBA to neplatí:Pro každou proměnnou, kterou deklarujete, můžete určit různé typy dat pro různé proměnné pomocí samostatné klauzule As. Každá proměnná přebírá datový typ zadaný v první klauzuli As, který se objevil po jeho variablename část.
Dim a, b, c As Single, x, y As Double, i As Integer
' a, b, and c are all Single; x and y are both Double

Vladimír Michl
09.04.2020, 10:29
Aha, já jsem dočetl jen do popisu syntaxe:variablelistPovinná hodnota. Seznam proměnných, které jsou deklarovány v tomto příkazu.variable [ , variable ... ]Každá variable má následující syntaxi a části:variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With{[ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]Tak to jsem neodkázal na zrovna vhodný příklad, VBA to asi vyžaduje takto.

Radek Pícha
09.04.2020, 10:59
Nevadí, v naprosté většině případů to funguje i tak. Pokud je někde problém, je třeba na to myslet a vyzkoušet čistou deklaraci proměnné.Můj problém je vyřešen, děkuji. Navíc mám nový poznatek.