- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Fűzzük össze a szavakat :)
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- eBay-es kütyük kis pénzért
- bambano: Bambanő háza tája
- M0ng00se: Hardvert áruhitelre?
- Magga: PLEX: multimédia az egész lakásban
- sziku69: Szólánc.
- btz: Internet fejlesztés országosan!
Új hozzászólás Aktív témák
-
-
vilag
tag
Valahogyan ki lehet deríteni, hogy egy programból megnyitott fájl csak olvasásra nyílt-e meg?
Oka: a korábbiakban tárgyaltaknak megfelelően egy segédfájl létrehozása mellett döntöttem, tehát az elmentendő szükséges változókat ebbe teszem.
Mivel azonban a programot többen is használják (akár) egyszerre ezért előfordulhat, hogy a segédtáblát már megnyitotta írásra egy felhasználó (pontosabban ugye a program) amikor a másik felhasználó is meg akarja nyitni szintén írásra a fájlt.A segédtábla meglehetősen rövid ideig van nyitva (a lehető legrövidebb ideig), talán 1-2 másodperc, de statisztikailag van rá esély, hogy egyszerre nyissák meg.
Ezért a második felhasználó által futtatott program nem tudja elmenteni a fájlt.
Fentiek miatt indokoltnak látom ennek a hibalehetőségnek az előre történő lekezelését.
Esetleg tegyem közös használatúvá a fájlt?
-
sztanozs
veterán
-
martonx
veterán
válasz
Rapido251 #2096 üzenetére
Ez most VB.Net-es winforms akar lenni?
Mert ott mondjuk megcsinálhatod, hogy 3 kör alakú vezérlőt raksz egymás fölé. A legnagyobb pirosat legalulra, a középső fehéret középre, legkisebb pirosat legfelülre.
Így el tudod kapni a kattintást, és le tudod kezelni, hogy éppen melyik részére ment a kattintás. -
Rapido251
csendes tag
Üdv, szeretnék egy kis segítséget kérni tőletek, hátha valaki tud segíteni. Egy játékot csinálok egy versenyre, és egy dologgal nem tudok megbirkózni. Van egy céltábla és 3 részre van osztva. Nos, mind a 3 részére szeretnék írni egy feltételt. Például: a közepe 50 pontot érjen, a középső kör 25-öt, és a külső 10-et. De sehogy se boldogulok ezzel, hogy hogyan kell azt észlelni, hogy mikor melyik körben kattint. (A Visual Basic-et kb. 7 hónapja tanulom (programozást kb. másfél éve))
-
sztanozs
veterán
Próbáld meg, hogy először a frame kapjon focus-t és utána a benne levő kontrol.Rájöttem mi a gond - gondolom a ComboBox1_Exit eseményt használod.
Ha szeretnéd visszaadni a fókuszt a comboboxra, cancel-eld le az eseményt:
Cancel = True - ne setfocussal próbáld meg megtartani a fókuszt, mert az eseménykezelő végén a környezet "veszi el" azt kontrolltól.Ezt írja az Exit eseménykezelő help-je:
Note
To prevent the control from losing focus, assign True to the Cancel argument of the Exit event.Másrészt ezt írja a SetFocus help-je:
The SetFocus method is valid for an empty Frame as well as a Frame that contains other controls. An empty Frame will take the focus itself, and any subsequent keyboard events apply to the Frame. In a Frame that contains other controls, the focus moves to the first control in the Frame, and subsequent keyboard events apply to the control that has the focus.Exitnél alapvetően vagy másik kontrollra megy a fókusz, vagy input controlloknál Enter (és talán Esc) gomb hatására. Enter leütésénél a szülő kontroll kapja meg a fókuszt (form vagy frame) és osztja ki a beállításainak megfelelően.
Feltehetően egy olyan kontroll kapja meg a fókuszt (azon van a TabStop = 0 a properties ablakban), ami alapból nem kezel eseményeket (pl label, picturebox, vagy hasonló) és nem látszik rajta a fókusz. Legegyszerűbb, ha a combobox Tabstop-ja 0-ra van állítva, és akkor a panel fókuszba kerülésével ő kapja meg majd a fókuszt.
-
vilag
tag
válasz
martonx #2088 üzenetére
Na igen, ez már valóban nem ma kezdődött, hanem egy messzi, messzi galaxisban...
Persze sok problémán átsegítettek már az itt tevékenykedők, főként martonx és sztanozs, és bizonyára még rengeteg kérdésem lesz, melyek közül számos hülyeség lesz
De aki nem kérdez, az általában nem is kap választ...
-
vilag
tag
válasz
sztanozs #2087 üzenetére
Csak UserFormon vannak vezérlők, mert gyakorlatilag a munkalapokat a felhasználók számára "kiiktattáma".
A felépítés: UserForm amenyen van egy Frame (persze több is de az most nem érdekes), amelyen belül található a ComboBox.
A ComboBox-nak kötött az értéktartománya, ezért mikor abban nem szereplő adatot viszel be, feljön egy MsgBox, melyen csak egy OK gomb van.
Ha ezt megnyomod, akkor a MsgBox értelem szerűen eltűnik, azonban a fokusz nem tudni hová kerül, mert a kurzor sehol nem villog, mintha a fókusz nem került volna vissza a UserForm-ra. -
martonx
veterán
válasz
palimre #2086 üzenetére
vilag-gal ez egy régi történet. Ő is tudja, hogy már rég túllépte azt a határt, amire az excel makró programozást kitalálták.
Ha te is túllépted ezt a határt, akkor ezt ideje felismerned, és a programodat immár nem excelben, hanem valamilyen más erre kitalált keretrendszerben újraírni.
Ha pedig - mint vilag - valamilyen külső infrastrukturális körülmény miatt ezt nem tudod megtenni, akkor meg nem kell csodálkozni, hogy az exceles makród néha bizony furcsán fog működni.
Ezt hozzáértőként javaslom. Mi itt cégen belül sok mindent excelben programozunk, de mindent abban programozni butaság lenne. -
palimre
csendes tag
válasz
martonx #2060 üzenetére
Miért kell egy fontos kérdésre szamárságot válaszolni? Nekem például ugyanez a problémám, már órák óta keresgélem a megoldást, de nem találom. Szóval örültem volna egy értelmes (hozzáértő) válasznak a kérdésre. Amúgy angol nyelvű lapokon már láttam, hogy ezzel többeknek gondja van, csak még a megoldást nem találtam meg.
-
martonx
veterán
Megvan, bár ez lehet, hogy csak külső forrásból működik?
Application.Visible = False
Ezzel tudod kikapcsolni az exceled láthatságát. Viszont lehet, hogy ez a meglévő exceledet is eltünteti? Ez akkorj ön jól, amikor egy vbscriptel, vagy bármivel excel-t kell macerálni, és nem akarom villogtatni a képernyőn.
Magából az excelből belülről használva, nem tudom működik-e? -
vilag
tag
válasz
martonx #2079 üzenetére
Nem tudom, hogy számít e, de nem kell létrehozni a munkafüzetet, mert azt én már megcsináltam és azt nyitom ha bele kell írni, majd mentem és zárom, majd legközelebb ugyan ez a tábla kerül megnyitásra.
Úgy is mondhatnám ebben fogom tárolni a szükséges elmentendő dolgokat.
Az általad leírtakból azért megpróbálkozom a lehetőségekkel.
-
martonx
veterán
ok, akkor előtte, ahol a Workbooks.ot létrehozod, vagy még előtte, ahol az excel objektumot létrehozod, kellene hogy beállítsd. Csak körülbelülre mondom, lusta vagyok kipróbálni:
set ea = new excel.application vagy valami ilyesmi sorod van elvileg.
Aztán ea.display vagy ea.visible = false kell, és ekkortól az az excel objektumod végig a háttérben marad.
-
sztanozs
veterán
Ha fájlrendszer szinten van rajta a read-only, akkor csak trükközéssel lehet levenni:
Megnyitni egy másik fájlt ami
- bezárja az aktuálisat,
- váloztatja a readonly attributomot
- beleír
- bezárja
- újra megnyitja
- visszadja a fókuszt és kilépSzóval egyszerűbb, ha az adatok nem is az aktuális excelben vannak, hanem egy másikban amit szükség esetén szerkeszteni tud.
-
vilag
tag
válasz
sztanozs #2072 üzenetére
Köszönöm a javaslatot.
Nekem volt egy másik ötletem is, miszerint:
Minden Change-hez beírom ezt:
Thisworkbook.ActivateCsak kicsit fárasztónak találtam ezt a megoldást.
A te javaslatod szerint ha jól értem, akkor az összes eddigi "régi típusú" hivatkozásomat le kell cseréljem?
Vajon a keresés/csere megoldást kínál nekem erre a problémára????Másik problémára esetleg valami ötlet?
-
sztanozs
veterán
Ne "csak úgy" hivatkozz a lapokra, hogy "Sheet1" vagy Sheet("Alapadatok"), hanem mentsd el az elején a workbook-ot és hivatkozz rá úgy, hogy csinálsz egy publikus globális változót a workbookodnak:
'module1.bas - ba
Public databook As Workbook
'ThisWorkbook - ba
Private Sub Workbook_Open()
Set databook = Me
End Sub
'a többi modulban meg így használd
Public Sub akarmi()
'akarmi
'akarmi
'akarmi
'Sheets("Alapadatok") helyett használd:
databook.Sheets("Alapadatok")
'akarmi
'akarmi
'akarmi
End Sub -
vilag
tag
Üdv!
Új kérdés merült fel bennem.
Alaphelyzet: van egy munkafüzetem ami automatikusan futtat egy userformot indításkor és a felhasználó minden változtatást csak ezen végezhet.
Lehet e azt valahogyan vizsgálni, hogy a nem az általam említett munkafüzet kerül fókuszba.
A kérdés oka az, hogy elég sok (de egy is elég lenne) vezérlőm menet közben kap értéktartományt RowSoure segítségével az említett munkafüzetből. Na már most ha a felhasználó futtatás közben a tálcán egy másik munkafüzetre kattint, akkor az enyém kikerül a fókuszból. Így amikor legközelebb a vezérlő a munkafüzetem egy bizonyos nevű lapjának bizonyos helyéről próbál értéket felvenni, akkor hibára fut mondván (és persze jogosan), hogy "Could' t set RowSource Property" Minthogy az aktív munkafüzetnek nincs olyan lapja amire én hivatkozok.
Továbbá érdekelne az is, hogy egy írásvédett munkafüzetet megnyitva azzal lehetővé tehető e az kódból, hogy önmagáról levegye az írásvédettséget, írjon a munkafüzetbe, mentse el majd újra legyen írásvédett a fájl.
Ennek célja, hogy az alapjáraton a felhasználók általi véletlen módosítások elkerülése érdekében levédett munkafüzetben bizonyos beállítások (ellenőrzött körülmények között) eltárolhatóak legyenek.
Előre is köszönöm a közreműködést!
-
dkaro
őstag
Sziasztok!
Egy user felvelő scriptet fabrikálnék, de nem boldogulok a manager attributummal.
Van egy ilyen selectem amivel kilistázom a felhasználókat:
<select size="1" name="felettes">
<option selected value="-">-</option>
<script language="vbscript">
Set objOU = GetObject("LDAP://srv0101vg/ou=Varosgazda,dc=varosgazda,dc=hu")
objOU.Filter = Array("user")For Each objUser in objOU
strUser=Right(objUser.Name, (Len(ObjUser.Name)-3))
document.write("<option value='"&objUser.Name&"'>"&strUser&"</option>")
Next
</script>
</select>strFelettes=felettes.value
objNewUser.Put "manager", strFelettesDe hibával elszáll. Így is próbáltam megadni:
objNewUser.Put "manager", "CN="&strFelettes&",OU=ou,DC=domain,DC=hu"Ezt se ettem meg. Nagyon láma vagyok a programozáshoz, valaki pls írja le mivel fog működni.
Köszönöm!
dkaro -
Burigabi
csendes tag
válasz
sztanozs #2067 üzenetére
Bocsi, hogy ilyen béna vagyok, de nem látszik sikerülni...
Megjegyzés mezö Visible paramétere false, a detail On Format eseménye pedig:
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If Nyilvántartás.Value = "D6" Then
Megjegyzés.Visible = True
End If
End Sub
És hiába érkezik olyan mezö, amely értéke D6, ugyanúgy nem jelenít meg semmit -
sztanozs
veterán
válasz
Burigabi #2066 üzenetére
Nem. Megnyitod a riportot design nézetben, kiválasztod az a felületet, ahol a megjelenítendő mezők vannak. Nekem Angol verzió van, ott Detail a neve annak a felületnek ahol az egyes adatokat rendezi, de ha a meződ fejlécben vagy láblécben van, akkor ott kell elhelyezni, nem "középen".
Ezután a Tulajdonságok lapon megkeresed az események tabot, att kiválasztod a Format eseményt (vagy ez is magyarítva van?), ott legenerálod az eseménykezelőt és abba illeszted be (nem a Click eseménybe, és nem a Nyilvantartas mező eseményébe, ahogy mutattad):
If Nyilvantartás.Value = "D6" Then
Megjegyzés.Visible = True
End If -
sztanozs
veterán
válasz
Burigabi #2063 üzenetére
Ki kell rakni a mezőket a formra, a láthatóságot kikapcsolni és a figyelt mező format eseményébe bele kell íni, hogy ha felvesz a mező az adott értéket, akkor a plusz mezők láthatók, ha meg nem az, akkor nem láthatók:
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If Field2.Value = 1 Then
Field3.Visible = True
End If
End Sub -
Burigabi
csendes tag
Sziasztok!
Nem vagyok járatos a Visual Basic-ben, de lenne egy problémám: 2010-es Accessben létrehozott Jelentést kell olyan szinten "leprogramozni", hogy a jelentés egyik mezője ha bizonyos értéket vesz fel, akkor a jelentés új mezőket jelenítsen meg. Ötlet?
Előre is köszönöm -
Bobrooney
senior tag
válasz
pirit28 #2061 üzenetére
Excel topic, én csak ennyiben tudok most segíteni, próbáld meg ott is.
-
pirit28
csendes tag
Üdvözletem az uraknak !
Először is nem tudom ,hogy jó topik-ba írok-e,ha nem elnézést kérek.
A kérdésem a következő lenne.
2003-as excellben a fényképezőgép funkciót használva a képet beillesztettem egy cellába.
Egy másik táblában meg tudom -e jeleníteni ezt a képet egy függvény vagy makró használatával.
Pl:; 1 sheet1 b1-es cellájában van a kép, és a shett2 b1-es cellájába szeretném ezt látni valamilyen megoldással.A sheet a1-es cellában egy név található az b2-ben pedig a kép.A sheet2 a1 cellájába beírva a nevet, akkor az a sheet2 b1-es cellában megjelenjen.Remélem érthető voltam.
A választ előre is köszönöm.
-
vilag
tag
Valaki áruja már el, hogy a vezérlők fókuszba hozása (setfocus paranccsal) mi a fészkes fenéért nem működik rendesen????
Már megőrjít.
Pl.: van nekem egy comboboxom amiben a település neveket lehet begépelni. Ha a megadott településnév hibás, akkor sima msgbox-al kap egy hibaüzenetet. Ezt 'leokézza', de a fókusz eltűnik, nem tudni hol van. Ez azonban még mind semmi, a visszatérési pontra (az msgbox üzenete utáni sorba) megírom a setfocus parancsot, de ennek ellenére sem kerül fókuszba.Valaki mondja már meg mi vezérli, hogy mikor mi van fókuszban.
Köszönöm!
-
sztanozs
veterán
KB igen - ez amúgy két külön esemény (pl. click után change is lefut, ha kattintás után megváltoztatod...)
alfa20 - VB6-nak kb annyi köze van a VBA-hoz (Visual Basic for Application - azaz az Office VB-je), hogy mind a kettő VB - persze, ha tudod programozni az egyiket, menni fog a másik is. No meg az alap nyelvi szintaktika is egyezik, de sem a fejlesztőkörnyezet, sem az alap osztály/függvény-könyvtár nem egyezik.
-
vilag
tag
Mi a különbség a CheckBox_Click és a CheckBox_Change között?
Értelmezésem szerint az lenne, hogy az egyik akkor fut e ha kattintanak, a másik meg akkor ha megváltozik.
Ez azt jelenti, hogy ha máshonnan változtatom meg az értékét, a change akkor is lefut, míg a másik esetben nem? -
alfa20
senior tag
Sziasztok,
Excelben szeretnék makrót készíteni, és ehhez keresek magyar nyelvű könyvet, kettő könyv közt tanakodok:
1.) Demeter M. Ibolya: Visual Basic 6.0
2.) Peter G. Aitken - Visual Basic 6 - Kék könyvnekem csak az Excelhez kell a VB és azt olvastam hogy erre a VB6 a jobb.
valaki tudna abban segíteni, hogy teljesen a nulláról, melyik könyvet érdemes választani esetleg mind kettőt, vagy van jobb választás?Excelben azért otthon vagyok, írtam is már pár makrót rögzítéssel, de az összetettebbekhez kevés a tudásom
-
vilag
tag
válasz
sztanozs #2050 üzenetére
Basszus, már össze-vissza beszélek.
A középre rendezéses kérdésem a MsgBox-ra vonatkozott. Csak ezért nem akartam egy új formot csinálni, gondoltam hátha van lehetőség arra, hogy középre rendeztessem a megjelenítendő szöveget, netalán tán még a színét is megváltoztassam.
Azonban ha jól értem akkor ezekre nincs lehetőség.A korábbi kérdéseim pedig azért merültek fel, mert le akartam cserélni egy InputBox-ot saját formra, mert szükség lenne még ezen a beviteli panelen néhány más dolog 'eldöntésére' is.
Ez utóbbi nagyjábból úgy tűnik sikerült, bár most újra gondoltam az egészet és lehet, hogy máshogyan oldom meg. -
vilag
tag
válasz
Bobrooney #2045 üzenetére
Volt nekem egy MsgBox-om amit gondoltam egy öt perces munkával lecserélek egy sajátra (persze némi plusz funkciót is rá akartam tenni)....
... azóta eltelt mondjuk egy hét, meg rászántam már kb. 12-13 órát és most tartok ott, hogy lehet, hogy működőképes lesz a dolog....
...de az is lehet, hogy csak én vagyok ennyire béna
-
vilag
tag
MsgBox-ban lehet valahogyan állítani a szöveg elhelyezkedését (mondjuk szeretném ha középre igazított lenne benne a szöveg).
-
sztanozs
veterán
Amíg modal a formod addig nem tud más más formon semmi fókuszba kerülni. Vsz ez lehet a probléma.
Talán a gomb click eseményekre el kellene tárolnod egy form scope-ú változóban, hogy melyik gombot nyomtad meg és a Close eseménybe kellene berakni, hogy mit csináljon.Esetleg bezáráskor a fókusz állítás előtt átállíthatod a form modal property-jét False-ra, és akkor tudsz fókuszt váltani
-
sztanozs
veterán
-
Bobrooney
senior tag
Én a helyedben ezt nem a change-l vizsgálnám, hanem egy nyomógombbal.
Change ha minden igaz, minden egyes bill leütést vizsgál, így ha elkezd gyorsan belegépelni felugrálgat neki egy MessageBox ami elég idegesítő lehet.
Tehát a nyomógomb hatására történne meg az input ellenőrzés és akkor adnám a hiba üzeneteket. -
vilag
tag
Van egy másik problémám is, méghozzá az, hogy néhány esetben nem kerül fókuszba olyan vezérlő aminek a fókuszba hozására kiadtam a parancsot.
Itt nagy valószínűség szerinte közrejátszik az, hogy Userformok között vagyok kénytelen ezt a fókuszba hozást végrehajtani, de hiába írom teljes hivatkozással a vezérlő nevét, akkor sem kerül fókuszba.
Más esetekben pedig tökéletesen működik a dolog.Konkrétan az eset az, hogy van egy modal-ként meghívott UserFormom, aminek pl. OK és Mégsem gombbal történő bezárása esetén más-más vezérlőt szeretnék fókuszba hozni.
Az egyik esetben működik a dolog, míg a másik esetben nem.Ötlet?
-
vilag
tag
Sziasztok!
Újabb, eleddig megmagyarázhatatlan jelenséget tapasztaltam.
Van nekem egy UserFormom, ami a korábban javasolt módon modal-ként lett meghívva (bár szerintem jelen esetben irreleváns).Ezen a Formon vagy egy textbox, melynek a Change-ébe egy hosszúság vizsgálat van leírva:
Private Sub TextBox1_Change() 'Irányítószám mező
If Len(TextBox1.Text) > 4 Then
hiba = MsgBox("Magyarországi irányítószámnak ez kicsit hosszú lesz, nemde???", vbCritical + vbOKOnly, "Hibás irányítószám")
TextBox1.Text = Left(TextBox1.Text, 4)
End If
End SubA probléma az, hogy egyik esetben a change lefut a textboxba történő adatbevitelkor, míg a másik esetben pedig nem.
Teljesen tanácstalan vagyok, hogyan lehetséges az, hogy mikor kalapálom a billentyűzeten a gombokat és írok bele az említett TextBox1-be, akkor be sem lép a TextBox1_Change ()-be????
Valakinek valami ötlet?
-
-
sztanozs
veterán
válasz
chepavel #2021 üzenetére
Melóhelyen nem megy a skydrive (de a dropbox, se semmi ilyesmi, úgyhogy ez is kb ex-has:
Dim newpassword
'a következő sor helyére kell beírni, hogy hogyan kapod meg a jelszót, pl:
newpassword = wscript.Argument(0)
'newpassword = "akármi"
Dim app: Set app = CreateObject("MFilesAPI.MFilesServerApplication")
Dim auth_user, auth_pwd, auth_domain, auth_host, auth_port
'Itt kell megadni, hogy milyen technikai felhasználónvvel és jelszóval jelentkezel be az alkalmazásba
app.Connect 3, "sysadmnlogin", "sysadmnpassw", , "ncacn_ip_tcp", "localhost", "2266", "Demo Vault", false
Dim vault: Set vault = app.LoginAccountOperations
vault.UpdateLoginPassword "mfilesadmin", newpassword -
chepavel
aktív tag
Köszönöm a válaszokat!
Ami nekem megvan, az az M-Files API dokumentációja, ami elérhető a skydrive-mon.
Sajnos, a programozás nagyon messze áll tőlem.. A supporthoz a szükséges regisztrációt megcsinlátam már, demég nem igazoltak vissza, így nem tudok beszélni velük..
Futtatni futtatható, valahogy így:
Dim app: Set app = CreateObject("MFilesAPI.MFilesServerApplication")Itt tartok jelenleg, de nem szuperál:
Dim app: Set app = CreateObject("MFilesAPI.MFilesServerApplication")
Dim vault: Set vault = ServerLoginAccountOperations.updateloginpassword("mfilesadmin", "")
set UpdatePassword = ServerLoginAccountOperations.Updateloginpassword()
Public Sub UpdateLoginPassword(ByVal AccountName,ByVal NewPassword)
end subKérek midnenkit, ne kövezzen meg a szakhozzáértésem hiánya miatt
-
sztanozs
veterán
válasz
chepavel #2016 üzenetére
Mivel a dokumentáció nem publikus, és nem találtam hozzá konkrét példát, így csak ex-has:
- meg kell nézned, hogy futtatható-e az alkalmazás belső api-jai külső környezetben (wbscriptből). Általában ez nem elérhető (ilyen pl NetIQ vagy MOM scripting környezete is)
- meg kell nézni, hogy a szkriptnek milyen formában adhatók át a futtatási argumentumok. WScript környezet esetén ez WScript.Arguments(n) függvénnyel, de ha nem fut WScript környezetben, akkor van saját argumentum kezelő az API-ban (ha kezel egyáltalán argumenteket)
- ha mindezzel megvagy, akkor inicializálni kell hozni a megvelelő class-t amiben az általad hivatkozott függvény van és meghívni a megfelelő argumentumokkal.
Mindez egyben kb így néz ki:
1) WScript
Dim sUser = WScript.Arguments(0)
Dim sPasswd = WScript.Arguments(1)
Dim oAPILoginClass
Set oAPILoginClass = CreateObject( "MFilesAPI.MegfelelőLoginManipulálóClass" )
oAPILoginClass.UpdateLoginPassword sUser, sPasswd2) M-Files
Dim oAPIArgumentsClass
Set oAPIArgumentsClass = CreateObject( "MFilesAPI.MegfelelőArgumentBeolvasóClass" )
Dim sUser = oAPIArgumentsClass.Arguments(0)
Dim sPasswd = oAPIArgumentsClass.Arguments(1)
Dim oAPILoginClass
Set oAPILoginClass = CreateObject( "MFilesAPI.MegfelelőLoginManipulálóClass" )
oAPILoginClass.UpdateLoginPassword sUser, sPasswd -
martonx
veterán
válasz
chepavel #2018 üzenetére
Nem tudom, neked kellene valahogy jobban képbe kerülnöd, illetve tőlük maguktól kérdezni, mivel ez egy kereskedelmi termék, élő szupporttal.
A te képbe kerülésedet arra értem, hogy ami kódrészletet belinkeltél, nem más mint egy függvény deklaráció legelső sora, azaz éppen semmit nem jelent. -
chepavel
aktív tag
Sziasztok!
Nézzétek el nekem, de VB-ben nagyon nem vagyok otthon..
A problémám a következő: van egy M-Files server névre hallgató csoda. Ez a dokumentumkezelő rendszer sajnos nem támogatja a powershellt, mindössze a VB-es scripteket. (én bizony rendszeradmin vagyok, nem fejlesztő..)
Tehát, van ennek egy saját API-ja, amit lehet használni számtalan feladatra. Amire nekem szükségem lenne, az az, hogy az egyik meglévő felhasználónak a jelszavát kellene parancssorból felparaméterezve lecserélni. (pl: cscript passwordchange.vbs IttAJelszónakAHelye)No,és amit írnak erről (mert meg lehet csinálni..) ennyi az API súgójában:
Public Sub UpdateLoginPassword( _
ByVal AccountName As String, _
ByVal NewPassword As String _
)Hogy tudnám ezt a kódsort felhasználni, hogy működésre bírhassam?
Nagyon fontos lenne ez nekem (egy automatizálási folyamat fontos része ez..)
Elnézést a hozzá értés hiánya miatt, bízom benne, hogy tudtok segíteni..
Köszönöm,
Üdv! -
vilag
tag
válasz
sztanozs #2014 üzenetére
Valóban ez lehet a megoldás.
Eleddig úgy tűnik, hogy ha "UserForm3.Show vbModal" paranccsal hívom meg a Formot, akkor beavatkozásra vár.
Szóval elvileg, így megoldható lesz, csak most meg már annyira belebonyolódtam a kódba, hogy nem találok ki belőle...
...na de majd holnap nekifutok újra tiszta fejjel.Addig is köszönöm a segítséget...megint.
Üdv, vilag
-
sztanozs
veterán
Ezt javaslom átnézésre: [link]
MSDN-ről:
RemarksWhen a UserForm is modal, the user must supply information or close the UserForm before using any other part of the application. No subsequent code is executed until the UserForm is hidden or unloaded. Although other forms in the application are disabled when a UserForm is displayed, other applications are not.
When the UserForm is modeless, the user can view other forms or windows without closing the UserFor
-
vilag
tag
válasz
sztanozs #2009 üzenetére
Őszintén lövésem nem volt mi az a Modalis meg nem Modális.
Némi googlizás után ezt találtam a VBA súgójában:
Constant Value Decription
vbModeless 0 UserForm is modeless.
vbModal 1 UserForm is modal (default)Bár példa nincs hozzá, így nem tudom hogyan lehet ezt a tulajdonságot állítani, de ha jól értelemezem, akkor a UserFormok alapesetben Modalis tulajdonságúak. Ezt támasztja alá, hogy kipróbálva nem lehet a felugró UserForm mögötti másik UserFormrot fókuszba hozni kattintással.
-
vilag
tag
válasz
sztanozs #2009 üzenetére
Az első probléma meg is oldódott!!
Eszembe nem jutott, hogy a projectet át is lehet nevezniA rövidített megoldás ennyi lett:
With Application
.SendKeys "%{F11}", True 'VB megnyitása
.SendKeys "^r", True 'Project Explorer ablak aktiválása
.SendKeys "SZTK" 'SZTK projectre ugrás
.SendKeys "~", True 'Enter leütés imitálása
.SendKeys "JELSZÓ" 'Jelszó megadása
.SendKeys "~", True 'Enter leütés imitálása
End WithNagyon köszönöm a segítséget!
A másik dologhoz:
Itt valami turpisság van szerintem.
Van ugyan ebben a programban egy másik form is ami hasonló körülmények között kerül meghívásra.
Nevezetesen a UsefForm1-en van egy gomb, aminek ennyi a kódja:UserForm2.Show
UserForm2 Initialize:
Private Sub UserForm_Initialize()
szoveg1 = "A fejlesztői felületre történő belépéshez jelszó szükséges!" + Chr(13) + Chr(13) + _
"(3 lehetőséged van)" + Chr(13) + Chr(13) + "Kérlek add meg a jelszót:"
szoveg2 = "A megadott jelszó hibás! Kérlek add meg a helyes jelszót!"
szoveg3 = "A megadott jelszó hibás! 1 további lehetőséged maradt!"
fejlec1 = "Kérlek add meg a jelszót! Még 3 további lehetőséged maradt!"
fejlec2 = "Érvénytelen jelszó! Még 2 további lehetősged maradt!"
fejlec3 = "Érvénytelen jelszó! Még 1 további lehetősged maradt!"
UserForm2.Caption = fejlec1
Label1.Caption = szoveg1
TextBox1.SetFocus
n = 1
End SubVégeredmény: a UserForm2 előtűnik és a TextBox1-ben villog a kurzor és bevitelre vár.
A különbség a másik esethez képest (szerintem) csupán annyi, hogy itt nem egy gomb megnyomása adja ki a UserForm3.Show parancsot, hanem az ha a ComboBox9
hange()-ben teljesül a következő feltétel (részlet a kódból):
If ComboBox9.Value = "Budapest" Or ComboBox8.Value = "Miskolc" Or ComboBox8.Value = "Debrecen" Or ComboBox8.Value = "Szeged" Or ComboBox8.Value = "Pécs" Or ComboBox8.Value = "Győr" And gkodkereses = False Then
Label24.Caption = ""
'irszam = Application.InputBox("Kérlek add meg a ""levelezési cím""-hez tartozó irányítószámot:", "Irányítószám megadása", irszam)
nagyvaros = True
UserForm3.Show
nagyvaros = False
(...) -
sztanozs
veterán
Hali - a projektet át tudod nevezni a project explorerben (szerintem a baloldalon megjelenő properties menüben is).
Más: az Initialize mindig végigfut. Nem is értem miért kellene megálljon. A VBA eseményvezérelt környezet, nem "áll meg" csak úgy egy rutin közepén (és nem is jó erre kényszeríteni). Ha azt akarod, hogy bevitelre "várjon" akkor legyen modális a form (ne lehessen "mögé" kattintani) és legyen egy gombod amivel leokézod a formot. -
vilag
tag
A GroupBox (ha jól gondolom) olyasmi lehet mint a VBA-ban a Frame?
VBA-ban minden vezérlőnek van egy top és egy left tulajsonsága, ez határozza meg a 0,0 ponttól viszonyított helyzetét. Ez kódból könnyedén módosítható.
A Te kívánságodnál maradva pl.:
TextBox1.Top=TextBox1.Top + TextBox1.Height
ahol Height a TextBox1 magassága.
Tehát a TextBox1 fölülről viszonyított új helyzetét egy TextBox1 magasságnyival lejjebb határoztuk meg.
Feltételezem a Groupboxnak is lehet ilyen tulajdonsága és így a fenti példából kiindulva könnyedén eltolhatod azt.
-
SG3rg0
őstag
Sziasztok!
Lenne egy problémám, lehet tudtok segíteni.Van két groupboxom, az elsőben van egy gomb, aminek a hatására textboxok jönnek létre, így megnő a groupbox mérete. Hogy lehetne a második groupboxot lejjebb tenni egyel egy textbox magasságával. A két groupbox és a gomb és minden egyéb forráskódba van létrehozva.
-
vilag
tag
Üdv!
Az előzőektől független problémám támadt amire nem találom a megoldást és már az őrületbe kerget.
Fut egy rutin, ahol az egyik sornál ha egy feltétel teljesül akkor Show paranccsal meghív egy UserFormt.
Ezzel még nem is lenne gond, azonban a UserForm megjelenésekor lefut az említett UserForm Initialize rutinja -és ahelyett, hogy megállna és bevitelre várna- fogja magát és visszatér az eredeti rutinba és megy tovább.Mi a frászért nem áll ez meg nekem?
A kód (természetesen sallangok nélkül):
Eredeti rutin:
(...)
nagyvaros=true
UserForm3.Show
(...)UserForm3:
Private Sub UserForm_Initialize()
If nagyvaros = True Then
UserForm3.Caption = "Irányítószám megadása!"
szoveg = "Kérlek, add meg az irányítószámot! Ha Pf.-hoz tartozó irányítószámot" + Chr(13) + Chr(13) + _
"adtál meg, akkor a jelölőnégyzet bepipálásával jelezd azt!"
Else
UserForm3.Caption = "Postafiók irányítószámának megadása"
szoveg = "Kérlek, add meg a postafiók irányítószámát!" + Chr(13) + Chr(13) + _
"(Ha nem postafiókról van szó, nyomd meg a ""Mégsem"" gombot!)" + Chr(13) + Chr(13) + "Postafiók irányítószáma"
End If
Label1.Caption = szoveg
TextBox1.Text = pfirsz
TextBox1.SetFocus
End SubInnen meg fogja magát és megállás nélkül visszatér az eredeti kiugrási pontra.
Mért nem áll ez meg nekem????Biztosan triviális a megoldás, de nem jövök rá...
-
vilag
tag
válasz
sztanozs #1999 üzenetére
Nos, működik a dolog. Már csak egy kicsi szépséghiba van benne:
Hogyan lehet a Project Explorer ablakban egyértelműen azonosítani egy Projectet?
Sajnos a név begépelés csak a szóközig működik, aztán már csak pittyeg, és hát a szóközig mindegyiknek ugyan az a neve ("VBAProject").A hivatkozott oldalon ez a programkód van:
Sub Gomb2_Kattintáskor()
Workbooks.Open "C:\Your\File\Path\YourFileName.xls"
With Application
'Go to the VBE
.SendKeys "%{F11}", True
'Activate Project Explorer window
.SendKeys "^r", True
.SendKeys "VBAProject" + Chr(32) + "(Próba.xls)"
'Tab your way to the workbook project
'Note - - when I tested this, it was in a separate workbook,
'following 6 add-in projects.
'"YourFileName" was the 8th project in my PE window,
'so 9 tab hits were required.
'You could also down-arrow using .SendKeys "{DOWN}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
'Simulate the Enter key
.SendKeys "~", True
'Enter your password - - this example is "Password"
.SendKeys "Blackout"
'Enter again
Password
.SendKeys "~", True
End With
End SubItt TAB-okkal van megoldva a probléma, de nekem ez nem jó, mert nem ismert, hogy a program futtatásakor hány darab project fut és azok milyen sorrendben vannak.
Én jelenleg így alakítottam át a kódot, de a megfelelő project kiválasztása nem működik, erre keresek megoldást.
Sub Gomb2_Kattintáskor()
With Application
.SendKeys "%{F11}", True
.SendKeys "^r", True
.SendKeys "VBAProject" + Chr(32) + "(Próba.xls)" 'Sem így sem "VBAProject (Próba.xls)"-t beíva nem működik
.SendKeys "~", True
.SendKeys "Password"
.SendKeys "~", True
End With
End SubÜdv, vilag
-
vilag
tag
válasz
sztanozs #1999 üzenetére
Valami protect, unprotectet használok már a programban (azt hiszem munkalapok védelmére).
Egyébként ha még így meg is lehet oldani, akkor is ott a másik probléma, hogy a fájl írásvédett.
A 2.-al kapcsolatos válaszodat ki tudnád egy kicsit bővebben fejteni, hogy hogyan lehetne megcsinálni?
Valami ilyesmire gondoltál:
Mondjuk a programom kérdez valamit, amire az adott választ szeretném eltárolni a programon belül.
Erre a program bezárja magát és elindít mondjuk egy batch fájlt ami adatátadással megkapja a kérdésre adott választ, majd ennek függvényében az eredeti programfájl fájlrendszeri jogait megváltoztatja írásvédettről nem írásvédettre, ezt követően pedig eltárolja a programban a választ, ráment, majd bezárja, írásvédetté teszi, és újra elindítja.
Új hozzászólás Aktív témák
Hirdetés
- Milyen GPS-t vegyek?
- Luck Dragon: Asszociációs játék. :)
- Futás, futópályák
- PlayStation 5
- Megjelent a Poco F7, eurós ára is van már
- Nagyon erős ajánlattá kezd válni a SteamOS
- Lexus, Toyota topik
- CMF Buds Pro 2 - feltekerheted a hangerőt
- Windows 11
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- További aktív témák...
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5070Ti 16GB GAMER PC termékbeszámítással
- Honor Pad X8 64GB, Wi-Fi, 1 Év Garanciával
- ÁRGARANCIA!Épített KomPhone i5 13400F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Kingmax 1x2GB DDR2 800 RAM eladó
- Phanteks NV5 MK2 White (PH-NV523TG DMW02)
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest