- Samsung Galaxy S24 - nos, Exynos
- Poco X6 Pro - ötös alá
- Alkalmazásbemutató: Keep
- Futott egy Geekbench kört egy új HTC készülék
- Azonnali mobilos kérdések órája
- Apple AirPods Pro (2. generáció) - csiszolt almaságok
- Huawei Mate 10 Pro - mestersége az intelligencia
- Vodafone-ra áttért Digi Mobilosok
- Xiaomi Mi 11 Ultra - Circus Maximus
- iOS alkalmazások
Hirdetés
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
-
Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
ph A Kereskedelmi Minisztérium egyelőre csak felméri a helyzetet, egyelőre nem látni, hogy tudnak-e bármit is tenni.
-
Saját Redmi Note 13 Pro+ a világbajnok focicsapatnak (és indiai rajongóiknak)
ma Argentína nemzeti válogatottjának mezével díszítik az új Redmi különkiadást.
Új hozzászólás Aktív témák
-
vilag
tag
válasz sztanozs #1791 üzenetére
Először is köszönöm a válaszokat!
Az első két megoldási javaslattal kapcsolatban nincs semmi tapasztalatom, szóval nem tudom, hogy vajon mekkora meló lenne egy több mint 5000 soros kód lefordítása.
Valakinek valami tapasztalat ezzel kapcsolatban?
A bat fájlra -mint írtam- azért van szükség jelenleg, mert ez a fájl tartalmazza az excel fájl nevére mutató hivatkozást. Vagyis inkább ez nyitja meg a benne megadott hivatkozást.
Minderre azért van szükség, mert a fájl nevét időnként változtatom. Erre a verziószám változások miatt van szükség. Ebből kifolyólag pedig az arra mutató parancsikonok érvénytelenek lennének.Azért keresek olyan megoldást amivel magában a fájlban lehet tárolni a parancsikont, vagy automatizálni annak lecserélését, mert a hálózat (illetve a program) felhasználóit 100 km is elválasztja egymástól, így nem mehetek oda minden egyes géphez és végezhetem el én az ikoncserét
Azt meg ne is mondjam, hogy a felhasználók milyen szinten állnak informatikából...
Vagy aki meg ért is hozzá, az esetleg tesz rá... -
vilag
tag
válasz sztanozs #1801 üzenetére
Van esetleg valami hasonló command file mintád?
Valami hasonlót kerestem igazából. Bár sejtem, hogy egy file ikoncserét nemigen lehet belőle levezérelni.
Már az is haladás volna ha egy asztali parancsikon elhelyezést le tudnék vele vezérelni.Egyébként van domain, szerver meg minden Istennyila.
Azért az vicces lenne ha a rendszergazda gépén is megjelenne a kis telepítőablak
-
vilag
tag
válasz sztanozs #1833 üzenetére
Igazából csak annyit szeretnék elérni, hogy az excel megnyitása után azonnal csakis a userform látszódjon. Se a munkalap, se pedig az üres excel ablak ne látszódjon, csak és kizárólag a userform.
A táblába jelen esetben semmiféle kivétel-visszaírás nem történik!
Gyakorlatilag kódból fut minden.
Az egész csak annyit csinál, hogy gombnyomásra kiválasztott fájlt/fájlokat bizonyos helyre másol. Kilépéskori mentésre semmi szükség.
Rendben, valamint egy kilépés gomb.--------------------
A több munkafüzetes problémára esetleg valami megoldás?
Üdv, vilag
-
sztanozs
veterán
válasz sztanozs #1841 üzenetére
Amúgy vsz amiatt csinál(hat)ja, mert a tömb utolsó eleme üres:
3 printert kiválsztva
strComputer tartalma ez lesz: cn=printer1%cn=printer2%cn=printer3%
az ebből generált tomb pedig ez:
(
"cn=printer1",
"cn=printer2",
"cn=printer3",
""
)Szóval nem ártana levágni az strComputer utolsó karakterét
[ 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...
-
sztanozs
veterán
válasz sztanozs #1842 üzenetére
Ja - és ahogy mondani szoktuk - nem ártana debogolni... Sok kérdést meg lehet vele spórolni:
0. Megoldás
1) azon a soron, ahol megáll, megnézed a változók értékét...1. megoldás
1) Problémás sorra rámész
2) F9 vagy sor elé (szürke sávra) kattintasz - Breakpoint
3) még egyszer futtatod a kódot és megnézed, mi a sorban található változók értéke - a problémák nagy része a helytelenül használt / inicializált változókból adódik.2. megoldás
1) Problémás sor elé beszúrsz egy sort:
On Error Resume Next
2) Problémás sor után beszúrod az alábbiakat:
If Err Then
MsgBox Err & vbCrLf & Err.Description
Err.Clear
End If
On Error Goto 0JOGI 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 #1835 üzenetére
Hali!
Az ötleted sokat segített a modul tekintetében.
a Show Modal = False az jó volt, de Window Position tulajdonsága nincs a userformnak.Végül is úgy sikerült megoldani, hogy ötvöztem az általad javasoltat a saját ötlettel, azaz a Show Modal-t Falsra állítottam, illetve a userform initializáláshoz beírtam ezt:
Application.WindowState = xlMinimizedA kettő együtt végül is azt csinálja amit szerettem volna
A több Workbook-ra kínált megoldással még nem volt időm foglalatoskodni, mert a másik sürgősebb.
Azzal igazából azt szeretném megoldani, hogy amikor a userformon megnyomom a kilépés gombot, akkor megvizsgálja, hogy van e nyitva másik munkafüzet is vagy sem. Ekkor kettéválna a folyamat:
1. Az eredmény az, hogy nincs nyitva másik munkafüzet -> zárja be az egész excelt
2. Az eredmény az, hogy van nyitva másik munkafüzet -> csak ezt a munkafüzetet zárja be.A két különböző bezárást le tudom vezérelni, igazából a vizsgálatot nem tudtam megoldani.
Remélem az általad vázoltal meg tudom majd oldani.
Üdv, vilag
[ Szerkesztve ]
-
vilag
tag
válasz sztanozs #1835 üzenetére
Üdv!
Csináltam magamnak egy kis időt és megnéztem a több munkafüzetes megoldást is.
A megoldás működik...csak fordítva
Igazából azt írtad, hogy ha csak egy munkafüzet van nyitva, akkor csak a munkafüzetet zárja be, és ha több akkor pedig az egész programot
De a problémát megoldottam.
A hiba a következő volt:Private Sub CommandButton1_Click()
Dim wcount As Integer
Dim twb As Workbook
wcount = 0
For Each twb In Application.Workbooks
wcount = wcount + 1
Next
If wcount = 1 Then helyette 0 kell
Application.Quit
Else
Application.DisplayAlerts = False
wb.Close False
End If
End SubValamint a wb.Close -ra hibát dob, így azt átírtam twb-re (de így sem működött), így átírtam ThisWorkbook-ra.
Meg annyi, hogy én ez után a hibajelzést újra true-ra állítottam, hogy a nyitva maradt munkafüzetekben működjön. Bár lehet, hogy ez csak adott munkafüzetre vonatkozik.
Az igazat megvallva ezt nem tudom.Mindent egybevéve, nagyon köszönöm a segítséget, most több programomba is beépítem a megoldást.
Üdv, vilag
-
-
vilag
tag
válasz sztanozs #1850 üzenetére
Végül is eddig úgy tűnik, hogy a következő verziónál maradok:
Workbook:
Private Sub Workbook_Open()
UserForm1.Show
End SubUserform:
Private Sub CommandButton2_Click() 'Kilépés gomb
mfszam = 0 'mfszam=munkafüzetek száma
For Each twb In Application.Workbooks
mfszam = mfszam + 1
Next
If mfszam = 0 Then
Application.Quit
Else
Application.DisplayAlerts = False
Unload Me
ThisWorkbook.Close
Application.DisplayAlerts = True
End If
Application.WindowState = xlNormal
End SubPrivate Sub UserForm_Terminate()
Application.DisplayAlerts = True
Application.WindowState = xlNormal
End SubEz lett a végleges (legalább is most annak tűnő) megoldás.
Még betettem egy Unload Me-t, mert így lefut a lejjebbi részben írt Terminate is, amivel el tudom érni, hogy a hibajelzést visszakapcsoljam, illetve, hogy újra nagy méretű legyen a megnyitva maradt munkafüzet (már persze ha több volt nyitva). Ha csak egy volt nyitva az sem gond, mert felugrik és aztán bezáródik az egész.A dim-eket kihagytam, mert anélkül is megy, illetve a változó nevét megváltoztattam, mert nekem így beszédesebb
Üdv, vilag
-
vilag
tag
válasz sztanozs #1852 üzenetére
Üdv!
Kicsit utánaolvastam az Option Explicit-nek, mert megmondom őszintén nem is hallottam róla.
A meglévő kevéske tudásomat a kollégámtól, innen, általánosságban az internetről, illetve saját kútfőböl szereztem. Vélhetően ezért nem hallottam róla.Szóval utánaolvastam, és szerintem nem fogom bekapcsolni (legalább is ebben a programban tuti nem), mert rövidke a program és a tárgyalt kódon kívül mindössze egy változó van, így igazán nincs is értelme.
Meg rosszat is olvastam (1 hsz):
[link]Bár nem olvastam végig, így könnyen lehet, hogy nem is ez okozta a problémát.
Üdv, vilag
Szerk: Annyit azonban észrevettem, hogy a fenti módon megoldott kilépéssel előállta az a helyzet, hogy a personal.xls-t is bezárja, így a kipakolt saját menük, illetve beállítások elszállnak.
Ezt nem lehet valahogyan elkerülni????[ Szerkesztve ]
-
vilag
tag
válasz sztanozs #1854 üzenetére
Üdv!
Felmerült még egy probléma.
Az a baj, hogy nem tudom, hogy a felhasználók közül ki az akinek van personal.xls és esetleg rendelkezik az általunk írt sajatfuggvenyek.xla-val.
Ebből kifolyólag sajnos nem tudom előre meghatározni, hogy melyik az ominózus munkafüzetszám amihez viszonyítani tudnám, hogy van e még nyitva munkafüzet vagy sem.Tudunk esetleg beépíteni valami erre vonatkozó vizsgálatot?
Esetleg vizsgáljuk meg, hogy megnyitáskor mennyi munkafüzet van nyitva és azt vegyük bázisértéknek?
Bár lehet, hogy ez sem jó, mert még így sem tudjuk megmondani, hogy az valóban egy látható munkafüzet e vagy az előbb említett kettő valamelyike...Próbáljunk meg esetleg ezekre a munkafüzet nevekre keresni és kivonni a számukat a bázisszámból?
Valami ötlet esetleg?Üdv, vilag
-
vilag
tag
válasz sztanozs #1856 üzenetére
Ez lett a végső (nek tűnő) megoldás:
For Each twb In Application.Workbooks
wbnev = twb.Name
If wbnev <> "PERSONAL.XLS" And wbnev <> ThisWorkbook.Name Then
GoTo bezar
End If
Next
kilep:
Application.Quit
GoTo vege
bezar:
Application.DisplayAlerts = False
Unload Me
ThisWorkbook.Close
vege:
Application.WindowState = xlMaximizedJelenleg úgy tűnik, hogy minden gond nélkül működik. mondom ezt néhány teszt után.
Remélem most már így is marad.Van azonban egy másik kérdésem:
A szóban forgó project le van jelszavazva a basicben azon oknál fogva, hogy a mezei felhasználó ne tévedhessen debug módba.
Van a felhasználói felületen egy gomb aminek a jelentősége most megnőtt (eddig nem is használtam). Ez a gomb arra szolgál, hogy a userformot bezárja és megnyissa a basicet.A probléma az lenne, hogy a project kibontásához jelszót kér (mivel ugye lejelszavaztam).
Szóval a kérdés az, hogy lehet e automatizálni a pojecthez tartozó jelszóbeadást?
Természetesen a userformon lévő gomb jelszavazva van.
Üdv, vilag
-
Speeedfire
nagyúr
válasz sztanozs #1878 üzenetére
Átírtam call-ra, most elfogadja a zárójelet, ellenben még mindig azt írja, hogy a fájl nem található. Ilyenkor mi van? Csináljak valahova egy parancsikont róla és azt linkeljem be neki?
Ahol nincs szóköz a mappa nevében, azt simán elindítja.Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
vilag
tag
válasz sztanozs #1937 üzenetére
Üdv!
Megpróbáltam, de ez a Sub le sem fut
A UserForm_Initialize () után még lefut a TextBox1_Change(), majd visszatér a CheckBox1_Click ()-be és itt véget is ér a történet.
A vicces azonban az (amit eddig nem vettem észre), hogy a UserForm megjelenése után a textboxban van már érték (ez eddig is így volt) és ugyan fókuszba hozni nem tudom a textboxot, de backspace-el mégis ki lehet törölgetni azt ami benne van, írni viszont már nem tudok bele.
Más ötlet esetleg?
-
vilag
tag
válasz sztanozs #1939 üzenetére
Elképzelhető, de nem tudom milyen gond okozhatja ezt.
Nekem egyszerűen be sem lép az újonnan megjelenő UserForm Userform_Activate () rutinba.
Nálam CheckBox1_Changeből indul a dolog, majd Userform_Initialize-el folytatódik, ahonnan teszünk egy kis kitérőt a TextBox1_Change-be, amikor is értéket vesz fel a TextBox1, onnan vissza a Userform_Initialize-be, majd vissza a CheckBox1_Change-be, aztán pedig itt a vége fuss el véle.
-
vilag
tag
válasz sztanozs #1942 üzenetére
Üdv!
Úgy tűnik nálunk nem ez a hiba. A hivatkozás nem éri el az 1024 karaktert amiről a cikkben írnak.
A hiba pedig nem állandó jelenség, hanem ad-hoc jelleggel fordul elő.
Eddig nem sikerült a szabályosságot felfedezni, ami ezt okozza, így továbbra is homályban tapogatózom.Minden esetre köszönöm a linket, az ott leírtak is tanúlságosak.
Üdv, vilag
-
vilag
tag
válasz sztanozs #1957 üzenetére
Sajnos egyik általad vázolt verzió sem áll fent.
A probléma akkor is szokott jelentkezni, ha ugyan erről a gépről csak A felhasználó nyitja meg a fájlt.
De ha jobban belegondolok, akkor a 2 verzió nagy ritkán előfordul, amikor én egy másik gépről nyitom meg ahol más van bejelentkezve.
Ezt kipróbálom.
-
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
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.
-
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
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
-
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.