- Motorola Edge 50 Pro - több Moto-erő kéne bele
- Android szakmai topik
- iPhone topik
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Nothing Phone 2a - semmi nem drága
- Samsung Galaxy Z Fold4 - egyre megy, honnan nézed
- Google Pixel 6/7/8 topik
- Milyen okostelefont vegyek?
- Samsung Galaxy A54 - türelemjáték
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
Hirdetés
-
Ingyenes az Epic Store-ban a Town of Salem 2 és a The Big Con
gp A jövő hét folyamán az Industria és a LISA: The Definitive Editiont kapjuk meg ajándékba.
-
Antec kirakatház Lian Li zöngével és egy csavarral
ph A hét légkavaróval árusított, félkörpanorámás megoldás kompatibilis a "lopakodó" ASUS/MSI alaplapokkal is.
-
Motorola Edge 50 Pro - több Moto-erő kéne bele
ma Érdekes egyveleg a középső Edge 50: a jó tulajdonságai közé becsúszott pár rossz, de vannak szerethető, egyedi megoldásai is.
Új hozzászólás Aktív témák
-
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. -
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
Ü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á...
-
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
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.
[ Szerkesztve ]
-
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.JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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 ComboBox9hange()-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
(...) -
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.
-
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
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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
-
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!Áj Láv Aggregáth 5.0! ||| Rosetta@home, lépj be Te is a PH! csapatába! ||| https://500px.com/pavelandras
-
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.Én kérek elnézést!
-
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, sPasswdJOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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
Áj Láv Aggregáth 5.0! ||| Rosetta@home, lépj be Te is a PH! csapatába! ||| https://500px.com/pavelandras
-
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[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
chepavel
aktív tag
válasz sztanozs #2022 üzenetére
Hi!
Ez egy dolgot eltekintve műlödik: a paramétere azt mondja, hogy:
Microsoft VBScript runtime error: Object doesn't support this property or method: 'WScript.Argument'ha fixen adjom meg neki, akkor bizony gond nélkül lecseréli, királyság
Áj Láv Aggregáth 5.0! ||| Rosetta@home, lépj be Te is a PH! csapatába! ||| https://500px.com/pavelandras
-
sztanozs
veterán
válasz chepavel #2025 üzenetére
Inkább nem mondj le
Csapódj a következő PH-s (logoutos) sörözéshez, és ott dumálhatunk - ha tudok rá időt szakiíani, ami azárt mostanában kicsit cinkes leszJOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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?
-
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?
-
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. -
sztanozs
veterán
Vizsgálj keyup-ot, az meghívodik minden billenytűlenyomáskor (pontosabban elengedéskor) - persze ez viszont nem hívódik meg pl copy/paste esetén. Change (néha?) csak akkor hívódik meg, ha a text mező értéke véglegesítődik (pl. elveszti a mező a fókuszt).
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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).
-
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
Új hozzászólás Aktív témák
- Luck Dragon: Asszociációs játék. :)
- Remnant II
- Steam, GOG, Epic Store, Humble Store, Xbox PC Game Pass, Origin Access, uPlay+, Apple Arcade felhasználók barátságos izgulós topikja
- Háztartási gépek
- Motorola Edge 50 Pro - több Moto-erő kéne bele
- Melyik tápegységet vegyem?
- Argos: MuzsikAI
- Android szakmai topik
- Milyen billentyűzetet vegyek?
- Mozilla Thunderbird
- További aktív témák...
- Be quiet! Pure Wings 2 140mm PWM High-Speed
- Ejha! HP EliteBook 840 G6 Fémházas Laptop 14" -70% i5-8365U 4Mag 16Gb 1TB SSD FHD IPS + Táska!
- ELADÓ intel i5-9400f (igény esetén hűtővel)
- GeForce EVGA GTX 1660 SUPER 6GB
- Részletfizetés. Bontatlan. noblechairs EPIC székek azonnal . 24 / 36 hónap garancia . +36301300000