- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Fejhallgató erősítő és DAC topik
- 5.1, 7.1 és gamer fejhallgatók
- Bejelentette az Arc A sorozat nyugdíjazását az Intel
- OLED monitor topik
- TCL LCD és LED TV-k
- Milyen RAM-ot vegyek?
- Milyen alaplapot vegyek?
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Nem indul és mi a baja a gépemnek topik
Új hozzászólás Aktív témák
-
bepken
veterán
sziasztok!
a sokadik kezdő kérdésem lesz, szóval bocsi azoktól, akik korábban már nem egyet megválaszoltak más topic-ban
egy egyszerű programot szeretnék, ami tartalmaz:
- egy access adatbázist
- egy "azonFind" TextBox-ot, ahová beillesztve egy azonosító számot
- egy "btnFind" gombot, mely segítségével a TextBox-ba beírt azonosítószámot tudom kikeresni
- egy "btnSave" gombot, mellyel hozzá lehet adni az adott azonosítószámot, hogyha még nincs benne az adatbázisbanPublic Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Munka1TableAdapter.Fill(Me.AzonositoDataSet.Munka1)
End Sub
Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click
Me.Munka1BindingSource.Filter = "[Azonosítószám] = '" & Me.azonFind.Text & " ' "
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Me.Validate()
Me.Munka1BindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.AzonositoDataSet)
End Sub
End Classeddig meg is vagyok - bár valamiért az adatbázist nem mindig akarja módosítani.....
na de ezekhez az azonosítószámokhoz az adatbázisban tartozik egy checkbox is!
szeretném, ha a program ezek értékeinek megfelelően (true/false) meghatározott szöveget adna vissza.egyébként az ilyesmit Label segítségével szokás kiíratni? (tehát amikor nem MsgBox féle ablakot szeretnénk, hanem csak egy szöveg változót valahova)
remélem nem kérdeztem sok hülyeséget...
köszi erőre is a segítséget!
-
vilag
tag
Üdv!
Van arra valami egyszerű megoldás, hogy ha egy munkafüzethez kapcsolódó összes kódot szeretném átvinni egy másik munkafüzetbe anélkül, hogy a munkafüzetlapok tartalmát megváltoztatnám?
Nagyjából arra szeretném ezt használni, hogy egy másik munkafüzet kódját "frissítsem".
-
vilag
tag
Találtam megoldást:
Application.EnableEvents = False
Workbooks.Open (arhiv)
Application.EnableEvents = TrueMegjegyzés: ebben az esetben a makrók letiltása csak a False és True közti eseményekre vonatkozik.
Ha pl. ezután a Close paranccsal bezáratom a megnyittatott "arhiv" minkafüzetet, akkor ha a BeforeClose eseményhez van valami definiálva, akkor az lefut.Szóval, csak jól kell használni és igazán kezes a dolog.
-
vilag
tag
Egy újabb kérdés:
Alapesetben úgy van beállítva az Excel, hogy makrót tartalmazó excel megnyitásakor rákérdezzen, hogy akarom e futtatni a makrókat.
Most kódból szeretnék megnyitni egy másik makrókat tartalmazó excel fájlt, de úgy, hogy makrók nélkül nyíljon meg.
Makrórögzítéssel próbáltam felvenni az eseményt, de ott csak annyi jelenik meg, hogy open, semmi a letiltásra utaló jelet nem találtam.
Tudja esetleg valaki, hogyan lehet ezt kódból megoldani?
-
vilag
tag
válasz
Cpt. Flint #2390 üzenetére
Nem maradt On error resume next-ben
Amikor csak lehet, ezt kerülöm pont azért, hogy ilyen hibák ne forduljanak elő.
Egyelőre ez a probléma megoldódott.
-
martonx
veterán
válasz
Cpt. Flint #2393 üzenetére
Én folyamatosan maszekolok, de a vbscriptet (excel makrót) már rég kinőttem. Ezért sincs időm (meg igaziból kedvem sem) ráugrani a topikban előjövő problémákra, mert napi szinten programozok mind fő, mind mellékállásban.
-
Cpt. Flint
tag
válasz
martonx #2391 üzenetére
napi hobbi.
igazából mostanság már nem foglalkozom vele túl sokat, nekem is pár éve volt ebben a csúcs. de ha valami előjön, akkor nagyon bele tudom élni magam, szeretek vele tücskörészni.de olyan sok időm nincs rá, nekem is lett volna egy maszek, de sehogy se fért bele az életembe, végül visszaadtam.
-
martonx
veterán
válasz
Cpt. Flint #2382 üzenetére
Akkor már te se vagy mai gyerek
VB-t napi szinten csinálod, vagy csak hobbi?
Én hál' istennek már csak hobbiból (ahogy ez sajnos az itteni segítségeim színvonalán kezd is látszódni), bár lehet be fog futni egy maszek excel makrós meló, és megint visszakényszerülök excel makrózni. -
-
vilag
tag
Ilyet látott már valaki:
A VBA programkódom önkényesen futkorászik.
Az történik ugyanis, hogy a programkód eljut az alábbi sorokig:
Selection.AutoFill Destination:=Range("a15:" + "a" + usortrim), Type:=xlFillDefault
Range("a" + usortrim).SelectEkkor fogja magát és az első sorban írt műveletet látszólag végrehajtja és visszatér abba a subba ahonnan kiugrott, a második sor pedig már le sem fut.
Csak jelzem, hogy ez nem egy új kódrész, és eddig tökéletesen működött.
Van valakinek ötlete, hogy ilyenkor mi van???? Én értetlenül állok a dolog előtt.
Szerk: Megvan az ok: "public usortrim as long" változóként definiáltam a változót és így nem megy.
Az okát azonban még így sem értem. -
vilag
tag
válasz
martonx #2385 üzenetére
Nem jogosultságprobléma van, inkább annyi a baja a VBA-nak, hogy nyitott fájlt (jelen esetben ugye excel, de más típussal nem próbáltam, mert az egyelőre nem érdekes) nem enged másolni.
Érdekes módon egyébként a Total Commandert nem zavarja, hogy nyitott fájlt szeretnék másolni...
-
vilag
tag
Üdv!
VBA FileCopy paranccsal miért nem tudom másolni azt a fájlt, amiből futtatom a kódot?
Ezt a hibaüzenetet kapom: "Permission denied"
Van-e ötlet ennek a hibának az áthidalására?
-
Cpt. Flint
tag
válasz
Fire_Vire #2381 üzenetére
Hmmm... én még abban az időben kezdtem tanultni a BASIC-et, mikor ZX Spectrumok és Commodore 64-ek voltak, külső lemezes meg kazettás "programtárolással", és baromira nem volt mindegy, hogy milyen hosszú egy kód, mennyi változó és művelet van (különösen az if-then bírt lassítani).
(nem is beszélve a TI-57 programozható számológépről
)
Mondjuk pl. én a "siker" változóknak biztos lineáris tömböt használnék, sőt, lehet, hogy a feltételnév/feltételérték/siker egymáshoz kapcsolódó teljes rendszert egy tömbben tárolnám.de ezek már csak olyan apróságok: elsőre nem feltétlenül kézenfekvő, de talán elegánsabb.
-
Fire_Vire
tag
válasz
martonx #2380 üzenetére
Amikor hazaértem elolvastam az üzeneteket csak így kaja előtt nem volt teljesen világos.
Aztán láttam Cpt. Flint (#2375) üzenetében nem értette a kérdésem ezért gyorsan válaszoltam neki.
Most hogy kicsit agyaltam rajta már készen is van a program.
Köszönöm a válaszotokat a te(martonx) első variációdat használtam fel.
Flint megoldása is jó, de az "és"-ek és az a plusz 5 változó már bőven elfér.
Így már bármilyen keresést el tudok a programmal végezni és sokkal-sokkal rövidebb lett így a programkód mint ahogy azt az elején kiagyaltam.
Kösz még 1x -
Fire_Vire
tag
válasz
Cpt. Flint #2375 üzenetére
A txt úgy működik mint egy csv fájl. A benne lévő adatok ";" vannak elválasztva.
Minden loggolni kívánt eseménynél a txt-ben egy egész sornyi adat tárolódik le.
Bocsánat mindenkinek a nem egyértelmű leírásért. Megpróbálom beszúrni a programkódomat.
Jelen pillanatban a kiolvasásom így van megírva (AutoIt):;### 2db feltétel esetén:
If $keres_berendezes=1 And $keres_eszkoz=1 And $keres_DB=0 And $keres_hiba=0 And $keres_kezd_ido=0 And $keres_nyugta_ido=0 Then
GUICtrlCreateListViewItem($count1&"|"&$count2&"|"&$count3&"|"&$count4&"|"&$count5&"|"&$count6, $listview)
$talalatok=$talalatok+1
EndIf
If $keres_berendezes=1 And $keres_eszkoz=0 And $keres_DB=0 And $keres_hiba=1 And $keres_kezd_ido=0 And $keres_nyugta_ido=0 Then
GUICtrlCreateListViewItem($count1&"|"&$count2&"|"&$count3&"|"&$count4&"|"&$count5&"|"&$count6, $listview)
$talalatok=$talalatok+1
EndIf
.
.
;### 3db feltétel esetén:
If $keres_berendezes=1 And $keres_eszkoz=1 And $keres_DB=1 And $keres_hiba=0 And $keres_kezd_ido=0 And $keres_nyugta_ido=0 Then
GUICtrlCreateListViewItem($count1&"|"&$count2&"|"&$count3&"|"&$count4&"|"&$count5&"|"&$count6, $listview)
$talalatok=$talalatok+1
EndIf
.
.
.Ebből az IF ciklusból kellene számításaim szerint 720db de eddig csak 3 feltételig írtam meg ami kb. 21db.
Ezt le lehetne egyszerűsíteni? -
martonx
veterán
válasz
Cpt. Flint #2377 üzenetére
jaja, mondtam én, hogy a pszeudo kódomon még lehet mit tökéletesíteni
-
Cpt. Flint
tag
válasz
martonx #2374 üzenetére
sőt, ha a siker(1,2 ..., n)=igaz helyett a siker(1,2 ..., n)=1 kifejezést használjuk, akkor a végén csak annyit kell vizsgálni, hogy siker(1)+siker(2)+...+siker(n)=n igaz-e.
így megspóroljuk az "és"-eket, és akár ciklust is használhatunk az összegzéshez, ami a feltételek számának esetleges későbbi módosulásakor jól jöhet, mert nem kell átírni a kódot, csak egy változót kell módosítani (és még azt is könnyen le lehet programozni). -
-
Cpt. Flint
tag
válasz
Fire_Vire #2373 üzenetére
egyelőre nem egészen érthető számomra a feladat.
a txt fájl valami módon szabályosan tagolt? (rekordok és mezők vannak benne voltaképpen?)
azon belül a feltétel 1-6 bizonyos "mezők" (a sor egyes szakaszai) értékére vonatkozna?
mi kell eredményként? a sor száma? a feltételnek megfelelő szövegrész? a teljes sor? csak az a sor érdekes, ami minden feltételnek megfelel, vagy minden sor számít, ami legalább egy feltételnek megfelel?sokat segítene, ha kicsit konkrétabban leírnád a feladatot.
-
martonx
veterán
válasz
Fire_Vire #2373 üzenetére
Nem biztos, hogy ez a legjobb módszer, de például vizsgáld le külön küllön az összes feltételre a cuccot.
Ha feltétel1 nem létezik vagy a sor megfelel feltétel1-nek, akkor siker1 igaz
Ha feltétel2 nem létezik vagy a sor megfelel feltétel2-nek, akkor siker2 igaz
...
Ha feltétel6 nem létezik vagy a sor megfelel feltétel6-nek, akkor siker6 igazVégül egy sor akkor lesz jó, ha siker1, siker2 .... siker6 mind igaz
-
Fire_Vire
tag
Helló!
Egy "txt" fájlokat soronként átnéző programon dolgozom. Hobbiként tanulom a programozást. A problémámat már részben megoldottam, de szeretném egyszerűsíteni mert gondolom van rá sokkal egyszerűbb módszer is mint amit én kiagyaltam rá.
Az én kereső módszerem:Feltétel1 Feltétel2 Feltétel3 Feltétel4 Feltétel5 Feltétel6
Ha valaki csak 1db feltételt ír be akkor egyszerű a dolog a program kilistázza azokat a sorokat ahol az adott helyen megtalálta a keresési feltétellel megeggyezőt.
DE ha 2, 3, 4, 5 vagy esetleg 6 db feltétellel egyszerre keres akkor az én kódom szerint így kellene leírnom:HA Feltétel1=”XXX” ÉS Feltétel2=”XXX” ÉS Feltétel3=”XXX” ÉS….. AKKOR
KIÍRATÁS Feltétel1=”XXX” ÉS Feltétel2=”XXX” ÉS Feltétel3=”XXX” ÉS…A lényeg hogy nincs kedvem leírni mind az 6*5*4*3*2*1 azaz 720 (HA...) variációt. Nincs valami egyszerűbb kereső procesz. Vagy esetleg valami jobb logikai módszer erre. Elég lenne néhány parancs tipp is a többit kigooglézom.
Előre is köszi
Üdv, Feri. -
sztanozs
veterán
1) Használd a kód formázást.
2) kb fejből, szal lehet benne hiba vagy elírásfor ix = 1 to fulek_szama
Dim ujful As TabPage
Set ujful = New TabPage
ujful.Text = "szöveg " & (TabControl1.TabPages.Count + 1)
' ide kéne az as varázskód ami a fülhöz hozzáadja a szovegelosorszam nevü RichTextBox-ot
Dim szovegdoboz As RichTextBox
Set szovegdoboz = new RichTextBox
szovegdoboz.Name = "szovegelosorszam" & (TabControl1.TabPages.Count + 1)
ujful.Controls.Add szovegdoboz
TabControl1.TabPages.Add(ujful)
next -
Ismerkedem a VBExpress-el, és belefutottam egy kérdésbe: Amikor a lenti kóddal hozzáadok egy új fület, hogyan adok az új fülhöz egy, a fül sorszámával megegyező nevü szövegdobozt?
Dim ujful As New TabPage
ujful.Text = "szöveg " & (TabControl1.TabPages.Count + 1)
TabControl1.TabPages.Add(ujful)
' ide kéne az as varázskód ami a fülhöz hozzáadja a szovegelosorszam nevü RichTextBox-ot
Dim "szovegdoboz" & (TabControl1.TabPages.Count) As New RichTextBox
'Átváltok az új fülre
TabControl1.SelectedTab = (ujful) -
belaur
tag
Köszi a segitséget, elkészült a mű
-
martonx
veterán
válasz
Cpt. Flint #2367 üzenetére
Egyrészt igazad van, valóban nem volt jó az ötletem.
Másrészt tényleg a te kedvedért nyitottam meg az excelt. -
Cpt. Flint
tag
válasz
martonx #2366 üzenetére
Az ÉN kedvemért???
Szerintem összekeversz valakivel.
Én leírtam egy megoldást. Elvből sem titkolva, mert nem mindenki akar ezzel foglalkozni, lehet, hogy siet, lehet, hogy most az egyszer van erre szüksége, lehet, hogy most kezdi; és ebből is tanul, ahogy én is tanulok mások példáiból.
Nem akartalak felbosszantani, csak mellékesen megjegyeztem, hogy az általad adott megoldás nem felel meg a feltett kérdésnek (fealadatleírásnak).
Erre kaptam egy egyszerű választ, ami már bosszantott kicsit, mert megint nem volt igazán értelmezhető.
Legutóbbi beírásod után meg már teljesen egyértelmű számomra, hogy sem azt nem nézted meg, hogy ki kicsoda, sem azt, hogy pontosan mit is akar...Az activate/deactivate nem igazán alkalmas a worksheetek nyitott workbookon belüli jelszavazott elrejtésére egyes felhasználók elől. Én legalábbis nem tudom elképzelni.
-
martonx
veterán
válasz
Cpt. Flint #2365 üzenetére
Figyi, tökre örülök neki, hogy hónapok óta nem kellett excel makróznom (és ha minden igaz ez még sok évig így is marad
), de a kedvedért indítottam egy excelt. Pontos megoldást elvből nem vagyok hajlandó adni, az elv a lényeg. Aki értelmes annak ez úgyis elég, aki nem annak meg úgyis mindegy, hogy fél percet foglalkozok-e vele, vagy éveket.
Szóval: Worksheet_Activate esemény van, sőt van Deactivate is, vedd úgy hogy ezeket akartam az open - close helyett írni.
-
martonx
veterán
válasz
Cpt. Flint #2362 üzenetére
Bocs, igazad van, worksheet-et akartam írni.
-
Cpt. Flint
tag
válasz
Cpt. Flint #2362 üzenetére
bocs, annyi még, hogy a WorkbookOpen-ben alapok elrejtéséhez a Worksheet(i).Visible = xlVeryHidden sort kell használni ahhoz, hogy a felhasználó ne tudja popup menüből láthatóvá tenni az elrejtett munkalapokat, hanem ez csak a visible property programkódból való állításával legyen lehetséges.
(vagy eleve erre kell beállítani az adott lapok "visible" tulajdonságát a VB projektben) -
Cpt. Flint
tag
válasz
martonx #2360 üzenetére
na de ez a teljes workbookra vonatkozik, neki meg bizonyos sheetekre kell csak, gondolom a workbookot meg kell tudni nyitni "korlátozottan" is.
Én ezt tenném:
Private Sub CommandButton1_Click()
pwd = InputBox("Adja meg a jelszót:", "Munkalapok felfedése")
If pwd = "akarmi" Then
For i = 2 To 3
Worksheets(i).Visible = True
Next
Else
hiba = MsgBox("A megadott jelszó hibás!", vbCritical + vbOKOnly, "Jelszó hiba")
End IfEnd Sub
A CommandButton1 beágyazva az 1-es munkalapra a "Felfedés" felirattal.
A WorkbookOpen-ben persze megcsinálom ugyanilyen for-next ciklussal a worksheetek visible=false beállítását. És nyilván le kell jelszavazni a VB részhez való hozzáférést. -
belaur
tag
Sziasztok,
Azt szeretném megoldani, hogy bizonyos sheetek a workbookomban csak akkor legyenek megnyithatóak, ha a user beir egy passwordot egy sheeten, majd megnyom egy lekérés gombot. Erre van valami módszer, mert a protect sheet csak az irast védi, az olvasást nem
.
A protect workbook funkcióval, ha elrejtek egy sheetet azt a user nem tudja unhideolni, de azthiszem az esetemben ez nem teljesen járható út.
Van valami ötletetek?
-
bobsys
veterán
Kene nekem egy olyan vbs ami a user bejelentkezesekor fut (GPO login script) Windows XP-n es egy a halozaton mar meglevo csv-be beirja egy uj sorba a gep nevet es a bejelentkezo user nevet es esetleg tudja kezelni ha reggel ugye 50-en nyitjak meg a filet.
Teljesen semmit nemtudok a vbsrol de ha esetleg valakinek pont van egy ilyenje es megosztja azt megkoszonom. -
vilag
tag
válasz
pieceofpaper #2349 üzenetére
Ezzel a módszerrel kísérleteztem, de nem úgy tűnik mintha megfelelően működne.
Ugyan is ha bemegyek a "Nyomtatók és faxok"-ba, akkor egy csomó olyan nyomtatóra azt állítja, hogy üzemkész, holott még csak rá sincs dugva a gépre, vagy éppen egy másik gépre van rádugva ami meg éppen be sincs kapcsolva.
Nekem valami olyasmi kéne amivel kvázi "megpingelem" a nyomtatót.
Tud valaki ilyesmi megoldást?
-
vilag
tag
Halihó!
Egy újabb fantasztikus kérdés merült fel bennem.
Lehet e VBA-ból lekérdezni/ellenőrizni, hogy az alapértelmezett nyomtató (amely ugye lehet a helyi géphez csatolt és hálózati is) elérhető e?
Próbáltam a gugli segítségével kutakodni, de számomra értékelhető infót eddig nem találtam.
-
vilag
tag
válasz
pieceofpaper #2345 üzenetére
HEURÉKA!
Hát ez az amit egész idáig kerestem!!!!!
Ezzel minden probléma meg is oldódott.
Ki üröm az örömben, hogy kicsit lassítja a megnyitást, mert megnyitás után amikor eljut az előbb említett sorig akkor elmenti a munkafüzetet (azt nem tudom, hogy miért), aztán újból megnyitja, de már olvasásra.
Vajon ezt a mentést ki lehet e vele hagyatni, vagy ez szükséges rossz?
-
vilag
tag
válasz
pieceofpaper #2343 üzenetére
Ezt az ötletet már korábban elvetettem, mert ugyan nem valószínű, de bekövetkezhet, hogy mindkét személy ugyan abba a cellába ír és ha kilépéskor kap egy olyan kérdést, hogy melyik adat kerüljön megtartásra, akkor nagy valószínűséggel lövése sem lesz róla, hogy mit kell válaszolnia.
-
vilag
tag
válasz
martonx #2341 üzenetére
Mivel bátor vagyok, így akár a 4. megoldási javaslattal is szívesen élnék, de mint korábban írtam, nem végeztem ilyen irányú iskolákat, jelenlegi VBA tudásomat is részben a kollégám útmutatásával, googlizással, autodidakta módon történő tanulással, és tőletek szereztem.
Ebből levonható az a következtetés, hogy ha ebbe az irányba szeretnék elindulni (márpedig régóta kacérkodom a gondolattal), akkor biztosan kell valaki, aki segít a nehézségek leküzdésében.
Esetleg Te vállalnád e ezt a megpróbáltatást?
Egyáltalán milyen fejlesztőkörnyezetben érdemes gondolkodni?
-
martonx
veterán
Pedig szerintem a programod megérett arra, hogy ne egy file-ban legyen. Sok út áll előtted, néhány a teljesség igénye nélkül, megoldási komplexitás szerint növekvő sorrendben:
1. adat részét másik excelbe viszed át
2. adat részét adatbázisba viszed át (ez lehet bármilyen adatbázis, akár csak egy sima access-es kis lokális db)
3. a programot fogod és kompletten átírod valamilyen vastag klienses megoldásra.
4. átírod webalkalmazásra, ugyebár böngésző garantáltan minden gépen van, még mobilon és tableten is. Én ezt a megoldást preferálom, bár én webfejlesztő vagyok, szóval részrehajlok. Ez a legmacerásabb, legnagyobb váltás, ugyanakkor ez a legelőremutatóbb is. -
vilag
tag
Ezt a megoldást már korábban elvetettem.
Meg lehetne így is oldani nem arról van szó, csak mondjuk jelen esetben kb. 13000 sort kellene másolni egyik táblából a másikba. Nem próbáltam ki, hogy ez mennyi ideig tart, de lassabb gépen (amiből itt akad elég) gondolom azért nem egy pillanat alatt megy végbe.
Ha feljebb olvasol egyéb más érveket is felhoztam amiért nem kívánom szétválasztani több fájlra a programot.
Ha már így is lenne, akkor egyszerűbb lenne az ha csinálnék egy segédfájlt és ez indulna először, ebből pedig külső fájlt már (ha jól emlékszem) lehet úgy nyitni, hogy megadom, hogy szerkesztésre vagy olvasásra nyíljon meg.
Ezt a megoldást egy másik programban már alkalmazom, de pont az lenne a lényeg, hogy nem akarok segédfájlt.
-
belaur
tag
Én ezt ugy oldanám meg, hogy csinalok egy Read excel-t ami gombnyomásra/megnyitaskor kilistázza a a Read/Write excel tartalmát, valamint egy Write excel-t amiben lehet szerkeszteni.
Hasonló módszer lehet hogy kimented egy külső fájlba az adatot és azt az egyik excel csak beolvassa a másik pedig szerkeszti is.UI. nemtudom, hogy megoldható-e, de én valahogy igy kezdenék neki a dolognak. A fájl olvasás irás jogosultságokkal lehet galiba imo.
-
vilag
tag
válasz
sztanozs #2337 üzenetére
Akkor én is ismétlem magam
, mert úgy érzem van itt egy kis félreértés.
Nem ez a gond, az ilyesfajta tiltás már meg van oldva. (Van aki írhat is a táblába, és van aki csak megtekintheti)
A gond az, hogy magát a fájlt foglalják szerkesztésre olyanok akiknek egyébként (ha úgy tetszik) egyébként sincsen már joguk beleírni, mert beállítások miatt nem tud beleírni, csak keresni tud benne.
Ha azonban ugyan ekkor egy olyan személy szeretné megnyitni szerkesztésre akinek egyébként lenne joga beleírni, az meg nem tudja csak olvasásra megnyitni, mert ezt az üzenetet kapja:
"A xyz.xls fájl zárolva van szerkesztésre
'xy' által.
Megnyithatja "Olvasásra", vagy válassza az "Értesítés" gombot, ha az olvasásra való megnyitás mellett értesítést is kér, mikor a dokumentum használatát befejezik."
Erre a problémára keresek én megoldást.
-
vilag
tag
válasz
sztanozs #2334 üzenetére
Őszintén szólva, sajnálatos módon az általam végigtanult iskolák egyikében sem oktattak Accesst-t (még csak bele sem néztünk), pedig egy-két iskolát végigtapostam már.
Nagyjából Excel és Word volt mindenhol, de a mostani Excel és VBA tudásom 95%-a is sajáterős.Access-ben igazából még életemben nem dolgoztam, bár sejtem már régen, hogy valahogyan meg kellene vele ismerkednem.
A másik ok pedig az, hogy excelben már készen van a program (ezt a problémát leszámítva).Egyébként nehéz lenne áttenni accessbe?
Szerk: Plusz, fogalmam sincs, hogy a cég minden gépén rajta van e az access.
Erről eszembe jut valakinek egy korábbi hozzászólása, miszerint: a böngésző az amely minden gépen ott van...
A végső cél az lenne, hogy valami ilyenbe át tudjam ültetni, de ehhez is kellene egy konkrét ember aki ebben tudna segíteni, mert egyedül biztos nem fog menni. -
vilag
tag
válasz
martonx #2333 üzenetére
Másik programnál már kénytelen voltam így megoldani ezt a problémát, bár ott más körülmény is indokolta a szétválasztást.
Ennél a programnál viszont semmi más nem indokolja ezt. A munkalapon gyakorlatilag egy képlet sincs, így nagyjából maga az excel így is csk adatbázisként funkcionál.
Ebből kifolyólag semmiképpen sem szeretném kettéválasztani.
-
sztanozs
veterán
Ha már office - miért nem használsz access-t, abban legalább ez megoldható volna?
Vagy miért nem használsz az excelben korlátozásokat, azt tudod programozottan módosítani. Egyszerűen beállítod, hogy a form mezőők nem módosíthatók és kész. Megfelelő felhasználóknak meg feloldod a zárolást.
[link] -
vilag
tag
válasz
martonx #2331 üzenetére
Ez a része már régen megvan.
Úgy van megoldva, hogy az excelben tárolom az összes felhasználót, és a hozzájuk tartozó jogosultsági szintet. A munkafüzet megnyitásakor a környezeti változók közül lekérdezem a Windowsba bejelentkezett felhasználó felhasználónevét és a hozzá kapcsolódó jogosultságot.
Tehát miután megnyílt a fájl már el van döntve, hogy mit tehet és mit nem. Ezzel nincs is gond.
A gond ott van, hogy ha egy felhasználó szintű felhasználó nyitja meg a fájlt, akkor ő azt írásra nyitotta meg, még ha nem is tud bele konkrétan írni mert zárolva vannak a táblák meg minden.
Azonban ha eközben egy admin jogú felhasználó nyitja meg a fájlt, akkor ő már csal olvasásra tudja megnyitni a fájlt, mert a másik felhasználónál nyitva van írásra is.Ezt a problémát szeretném áthidalni, akár kerülőúton is. Csak ezt a kerülőutat nem tudom. Erre nem találok megoldást már hetek óta.
Ha esetleg nem olvastál feljebb, felmerült a ActiveWorkbook.ReadOnly.Recommended amivel ugye el lehet érni, hogy megkérdezze a megnyitáskor, hogy írásra vagy olvasásra szeretnéd megnyitni.
Van egy olyan is, hogy ActiveWorkbook.ReadOnly, de ez sajnos csak lekérdezhető
-
martonx
veterán
ezt már számtalanszor kitárgyaltuk, de az excel annyira nem erre való. A jogosultság kezelés nem az erőssége.
Egyébként kerülő megoldásokat el tudok képzelni. Az excel megnyitásakor mindenképpen kérsz egy felhasználónév, jelszó párost. Ehhez te csinálnád a formot, meg te tárolnád az excelen belül ezeket az adatokat is. Aztán annak függvényében, hogy ki mihez férhet hozzá, kódból tudsz szabályozni mindent.
De ez azért nem kis macera lesz.
-
vilag
tag
válasz
sztanozs #2329 üzenetére
Szerintem itt valami félreértés lesz (vagy én nem értek valamit).
Röviden: van egy postakönyv program, amelyet egyesek írásra, míg mások csak olvasásra nyithatnának meg. Ez lenne a cél.
Ennek a megnyitáskor kellene eldőlnie.
Egyrészt a véletlen belenyúlások miatt vannak két csoportba osztva, másrészt azért, hogy ne legyen az, hogy az akinek írásra is van joga nem tud dolgozni benne, mert szerkesztésre már megnyitotta egy olyan felhasználó akinek egyébként nincs (vagy nem lenne) joga beleírni.
-
vilag
tag
válasz
sztanozs #2327 üzenetére
Azt már próbáltam.
Működik is a dolog, azonban hiába állítom be, hogy a saját tulajdonba vételt megtagadom mindekitől, ha mentés máskénttel elmenti (és felülírja) a fájlt, akkor minden ilyen beállíts ment a levesbe.
Ráadásul a beállítása is elég nehézkes, pláne, hogy domain váltás miatt az újonnan jött kollégákat ki sem tudom tallózni, így persze a jogokat sem tudom beállítani hozzájuk.
(A domain váltás következtében kialakult ilyen jellegű problémát pedig több mint egy éve nem javították, és szerintem nem is fogják.)Egyébként én abból indulok ki, hogy ha megnyitás közben képes az excel állítani a jogot (mert ugye az, hogy megkérdezze, az is a Workbook_Open()-ben van), akkor valahogy csak meg lehet oldani, hogy hagyjuk ki a kérdést (vagy esetleg válaszoljunk programból). Csak a hogyanra nem tudom a választ.
-
vilag
tag
válasz
Tomaaasz #2325 üzenetére
Nem egészen.
Én azt szeretném, hogy amikor megnyitok egy adott excel fájlt, akkor az abban lévő programkód (megadott feltétel alapján) döntse el, hogy írásra vagy olvasásra nyílik meg. Csak egy fájlról van szó, nincs második.
Egy alábbi félmegoldás van, mert abban az esetben induláskor megkérdezi, hogy írásra vagy olvasásra akarom e megnyitni:
Private Sub Workbook_Open()
ActiveWorkbook.ReadOnlyRecommended = True
End SubÉn viszont azt szeretném ha nem tenné fel a kérdést.
Kb. így:
If felhasználó = admin then
megnyitás írásra
Else
megnyitás olvasásra
End if -
sztanozs
veterán
-
momoxp
tag
Adott ez a script, Az lenn a kérdésem hova keéne és mit beszúrnom hogy a felhasználói nevet és jelszót hozzáadja?
Option Explicit
Dim objNetwork
dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objNetwork = WScript.CreateObject("WScript.Network")
Dim strDriveLetter1, strRemotePath1
Dim strDriveLetter2, strRemotePath2
'end of varible declarationsstrDriveLetter1 = "D:"
strRemotePath1 = "\\server\mappa01"
strDriveLetter2 = "E:"
strRemotePath2 = "\\server\mappa02"
'end of varible setupobjNetwork.MapNetworkDrive strDriveLetter1, strRemotePath1
objNetwork.MapNetworkDrive strDriveLetter2, strRemotePath2
'end of map creation codeWScript.Quit
-
vilag
tag
Először is Boldog és sikerekben gazdag új évet mindenkinek!
Köszönöm a választ!
Ez már fél siker, mert most megkérdezi, hogy olvasásra akarom e megnyitni vagy írásra.
Nekem viszont az kellene, hogy meg se kérdezze csak állítsa be.
ActiveWorkbook.ReadOnly sajnos csak lekérdezhető, pedig jó lenne ha állítható is lenne
Próbáltam a rákérdezést kihagyatni Application.Displayalerts=false-al kihagyatni, de nem vált be.
Próbáltam makrórögzítéssel is felvenni, a válaszadást, de ez sem vált be.Van esetleg ötlet arra, hogyan lehetne ezt megbuherálni?
Szerk: egy másik jellegű kérdés: hogyan lehet lekérdezni, hogy egy adott UserForm "meg van-e nyitva"?
Próbáltam így:
if UserForm1.visible = true then...
(ekkor azonban elindul az adott UserForm Initializálása még ha eddig nem is volt "nyitva")
A UserForm.Show azt hiszem nem lekérdezhető, bár ebben nem vagyok egészen biztos. -
martonx
veterán
Hehe, ez az a hozzáállás, amivel soha nem fogok tudni azonosulni. Le is léptem a cégtől, miután sorra leszavazták a jobbító ötleteimet.
A sors iróniája, hogy a lelépésemmel észbe kapott a vezetőség, és per pillanat nagyban képzik át a maradék pár programozójukat ASP.NET MVC-re.
Ez a tipikus halál primitív, káderi menedzsment hozzáállás, hogy az excel a legolcsóbb, az úgyis ott van mindenkinek a gépén. Valójában ez baromság. A böngésző az, ami ott van mindenkinek a gépén.
Az excel tökéletes, amikor pivotozni kell, meg OLAP kockákat forgatni, többféle adatforrásból összedolgozni az adatokat.
Minden másra merő pénzkidobás, kezdve a fejlesztők munkaidő ráfordításának többszörösével, folytatva az üzemeltetők bérével, amivel a gépeket karbantartják, office licenszeket vesznek, stb... -
Syntax
csendes tag
válasz
martonx #2314 üzenetére
Szegény ember kézzel nőz...
(Ha csak ez van akkor ezt kell szeretni, én is szeretnék repülővel járni, de sajnos pont nincs repülőm...)
Az oktatási rendszerünk hibáinak ez csak a csúcsa. "Akit érdekel a dolog az jobban utána néz", a lehetőséget megadja az iskola, jelige alatt futunk. A munkahelyek meg olyanok mint akármelyik profitorientált szervezet, mindent a lehető legolcsóbban akarnak megoldani, így érthető az excel mánia is.
-
martonx
veterán
"Hiszen rájön, hogy mi minden lehet excel-ben csinálni." - esetünkben éppen a lényegre nem jön rá, miszerint az excel egy adatvizualizációs, adatbányász céleszköz. Nem pedig sakk program írásához kereteszköz. Persze láttam már lövöldözős játékot is excelben megvalósítva, az emberi butaság (és az excel tudásának határa) végtelen. Sőt írhatod a szakdolgozatod is excelben, attól az még akkor sem lesz szövegszerkesztő program.
Szvsz az excel oktatásnak éppen ezért az adatokról, adat lekérésről (különböző adatforrásokhoz programozottan kapcsolódás), adat megjelenítésről, formokról illetve ezek programozásáról kellene, hogy szóljon, nem pedig sakk, meg akasztófa játékok excelben programoztatásáról.
Dolgoztam olyan cégnél, ahol ki is volt mondva, hogy mindent excelben kell megvalósítani. A CRM rendszertől, a projektvezető toolokon át. Volt exceles pdf generátorunk, exceles vonalkód nyomtató porgramunk, és még ki tudja mi minden. Ami kerek volt azt kézben vittük, ami négyszögletes, azt meg gurítottuk. El is jöttem onnan 4 év után, és nagyon óvok mindenkit attól, hogy ugyanabba a hibába essen, mint anno nálunk annál a cégnél.
Nem véletlenül szajkózom itt a topikban, hogy az excelt arra használjuk, amire való, mert minden más esetben csak a fölösleges körök futása, és a rossz programozói gyakorlatok beidegződése fog történni.
-
luzer0901
csendes tag
Sziasztok köszi a segítséget, de akkor szerintem maradnak a betűk.
-
Syntax
csendes tag
válasz
martonx #2311 üzenetére
Szegény ember kézzel nőz...
Amúgy meg ha ez a vizsga feladat akkor ez a feladat.
A feladat ugyan nem tipikus excel feladat, de ha valaki erre rájön, és veszi a fáradtságot, hogy megcsinálja akkor azzal sokat nyer. Hiszen rájön, hogy mi minden lehet excel-ben csinálni. Illetve más specifikusabb feladathoz sokkal több magyarázat kell illetve esetleges forrásadatok amivel lehet dolgozni. Amíg a sakkot mindenki ismeri, így 1 mondatban ki lehet adni a feladatot. Igazi egyszerű szivatos feladat -
Syntax
csendes tag
válasz
martonx #2308 üzenetére
Hali
Meg lehet oldani.
ActiveSheet.PasteSpecial Format:="gyalog (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False
ActiveSheet.Shapes.Range(Array("gyalog")).Select
Selection.Cut
Range("K4").PasteAz első sor arra szolgál, hogy egy képet úgy lehet vele beszúrni, hogy azt később az excel tudja kezelni.
Manuálisan úgy néz ki, hogy a kiválasztott képet be kell szúrni az excel táblába de amikor beszúrod akkor az egér jobb gombját használva paste special mód kiválasztásával, és a "Picture (enhanced metafile)".Miután ez megvan akkor a képet át lehet nevezni, hogy később tudjad, hogy melyik figuráról van szó. Ezt a tábla bal felső sarkában tudod megtenni. (közvetlenül a gombsor és az oszlop címek közt)
Ha ez megvan akkor már csak az a dolgod, hogy simán csak másolgatod tovább a képet. Az az előbb leírt kód utolsó 3 sora.
Igyekeztem érthető lenni, ha nem voltam az szólj, és megpróbálom másképp.
Üdv
-
martonx
veterán
válasz
luzer0901 #2307 üzenetére
Nézd, excelről beszélünk. Igaziból fingom sincs, hogy lehet-e egy cellába képet beszúrni. Ha lehet, akkor nyert ügyed van, ha nem lehet, akkor marad a szöveg. Én látatlanban arra tippelek, hogy nem lehet a cella tartalma kép, de lehet tévedek. Néha engem is meglep, hogy felhasználói szinten is mennyi mindent tud az excel.
-
luzer0901
csendes tag
Sziasztok még egy olyan kérdésem lenne, hogy végre eljutottam a sakkal egy jó darabig, de én betűkkel jelöltem a bábukat viszont azt szeretném, hogy a bábuk képét lehessen ott láttni, ezt, hogy tudom megoldani. A segítséget előre is köszi.
-
martonx
veterán
válasz
luzer0901 #2301 üzenetére
pl. csikó léphet:
2 cellét horizontálisan, és 1 cellát vertikálisan. Vagy 2 cellát vertikálisan és 1 cellát horizontálisan.
Az excelnek munkalapoknak van onchange vagy valami ilyesmi eseménye. Ezzel megnézed, hogy honnan indult, hova jutott és megnézed, hogy ez szabályos-e. Ha nem szabályos, akkor kiadsz egy undo parancsot, ha szabályos volt, akkor nem csinálsz semmit. -
luzer0901
csendes tag
Igazából az nem megy hogy nagyon nem tudom, hogy hogyan induljak el alépések megfogalmazásában
Új hozzászólás Aktív témák
Hirdetés
- Kerékpárosok, bringások ide!
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Android alkalmazások - szoftver kibeszélő topik
- Fejhallgató erősítő és DAC topik
- VoLTE/VoWiFi
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Háztartási gépek
- E-roller topik
- Autós topik
- AliExpress tapasztalatok
- További aktív témák...
- Szinte új, minőségi, állítható ritkítóolló
- Telefon felvásárlás!! Samsung Galaxy A50/Samsung Galaxy A51/Samsung Galaxy A52/Samsung Galaxy A53
- VÉGKIÁRUSÍTÁS - REFURBISHED - Lenovo ThinkPad 40AC Thunderbolt 3 docking station
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged