- Crypto Trade
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- MinDig TV
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Rendszergazda topic
- Mindenki AI-t akar, már 2025-re is eladták a HBM chipeket
- Proxmox VE
- Kapnak egy rakás reklámot a Roblox játékosai
- ArchiCAD és Artlantis topik
- Mikrotik routerek
Új hozzászólás Aktív témák
-
Milgram1
aktív tag
Hali,
Középsuliban tanulok most MS Visual Basic-et és úgy gondolom hogy az ami órán van az kevés mert vettünk programozási tételeket, fájlkezelést valamennyire és kb ennyi. ezekkel több összetettebb feladtat. Engem érdekelne a dolog, ha ismerném rendesen akkor itthon alkotnék vele dolgokat csak nem tudom hol lehetne tanulni rendesen. Szóval az lenne a kérdésem hogy ismer-e valaki olyan oldalt/könyvet ahol tudok tanulgatni több dolgot hogy hasznavehető programokat írhassak magamnak. -
bucsupeti
senior tag
válasz Milgram1 #2501 üzenetére
Ezek között érdemes lehet keresgélni...
Persze angolul tudni kell valamilyen szinten. Egyébként az angolt úgysem tudod megúszni, ha komolyan gondolod a programozást!
[ Szerkesztve ]
"Nem gond ha nem vágod a párologtatók bináris nyelvét..."
-
sztanozs
veterán
De ugye a kódod lefutása is időbe kerül és a timer esemény lekezelése is időbe kerül. A 1000 ms pedig az előző kód lefutása után értendő. Egyszerűbb, ha 100 ms-ként csinálod és elmentett Time (Now) és aktuális Time (Now) közötti különbséget írod mindig ki.
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...
-
cigam
félisten
-
cigam
félisten
válasz sztanozs #2506 üzenetére
VB2010-el bírkózok, és nagyon kezdő vagyok.
Szöveges változóba tároljam le, és csak vonjam ki belőle az aktuális időt?
stopperido=startido$-time(now)
Vagy nekem kell kisakkozni a perc, másodperc értékekből?Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
sztanozs
veterán
Nem, DateTime-ban tárold és a kivonás egy TimeSpan objektumot hoz létre. Ez már magában időtartamot reprezentál. MSDN-ről:
Dim startTime As Date = Now
' Run the process that is to be timed.
Dim runLength As Global.System.TimeSpan = Now.Subtract(startTime)
Dim millisecs As Integer = runLength.MillisecondsJOGI 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
Igen, de ez nem túl pontos.
Ezt célszerű használni inkább: Stopwatch (System.Diagnostic)
[link]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
Hali!
Nem tudja valaki, hogy Win7 és Office 2007 alatt az alábbi kódrészlettel mi lehet a baj?
Private Function GetActive(con As Control) As Control 'Aktív vezérlő meghatározása
If TypeName(con) = "UserForm" Then
Dim f As UserForm
Set f = con
Set GetActive = GetActive(f.ActiveControl)
ElseIf TypeName(con) = "MultiPage" Then
Dim mp As MultiPage
Set mp = con
Set GetActive = GetActive(mp.SelectedItem)
ElseIf TypeName(con) = "Page" Then
Dim pg As Page
Set pg = con
Set GetActive = GetActive(pg.ActiveControl)
ElseIf TypeName(con) = "Frame" Then
Dim fr As Frame
Set fr = con
Set GetActive = GetActive(fr.ActiveControl)
Else
Set GetActive = con
End If
End FunctionXP alatt tökéletesen működik.
Win7 alatt a "Set pg = con sornál "Type mismatch" hibaüzenetet ad.Van esetleg valakinek ötlete?
Olyan megoldás is érdekel ha valaki tudja hogyan lehet kinyerni, hogy éppen melyik vezérlőben vagyok, vagyis annak a nevét. -
vilag
tag
Tud esetleg valaki segíteni abban, hogy vonalkódgenerátor kellene.
Igazából postai ragszám alapján szeretnék vonalkódot előállítani.
Ma találtam vonalkód betűtípust, de sajnos a vonalkódolvasó nem olvasta be (ellenben a telefonom igen ).
Egyébként pedig tökre nem hasonlít az eredeti ragszám vonalkódjára.Ötlet valakinek?
-
vilag
tag
válasz sztanozs #2519 üzenetére
A kollégám hozzájárulásával közzéteszem.
Röviden annyi a lényeg, hogy maga a vonalkód betűtípus nem elégséges arra, hogy visszaolvasható vonalkódot készítsünk, kell még bele egy indító- egy záró- és egy ellenőrző karakter is.
Az alábbi kódrészlet a magyar postai ragszámnak- (RL) és a nemzetközi ragszámnak (RR) megfelelő vonalkódot generál.
Figyelem! Az alábbi kóddal generált ragszám "képe" nem egyezik meg (hosszabb) a ragszámon lévő vonalkód képével, azonban beolvasáskor ugyan azt az értéket kapjuk!Public szov As String
Public h As Long
Private Sub CommandButton1_Click()
vkod = ""
ossz = 0
szov = Trim(InputBox("Vonalkód értéke:", "Kód bevitel"))
ActiveSheet.Cells(3, 3) = szov
If szov = "" Then GoTo vege
h = Len(szov)
If h > 100 Then GoTo vege
Dim vk(2, 100)
For i = 0 To h
If i = 0 Then
vk(1, i) = Chr(204)
vk(2, i) = 104
Else
vk(1, i) = Mid(szov, i, 1)
vk(2, i) = Asc(vk(1, i)) - 32
End If
If i = 0 Then k = 1 Else k = i
ossz = ossz + vk(2, i) * k
vkod = vkod + vk(1, i)
Next
eossz = ossz Mod 103
ActiveSheet.Cells(2, 2) = eossz
vkod = vkod + Chr(eossz + 32) + Chr(206)
ActiveSheet.Cells(2, 3) = vkod
vege:
vege = MsgBox("Konverzió vége!", vbOKOnly, "Vége")
End SubAz eltérésnek az az oka, hogy a vonalkódban rövidítést alkalmazni, azaz minden számpár helyére az értékének megfelelő karakter kerül. Pl.: a RL33... -nál a 33 helyére az "A" betű kódja kerül.
Az alábbi kóddal generált vonalkód képe megegyezik a valódi ragszámon megjelenő "képpel" azonban ez csak a magyar (RL) ragszámmal működik!
A nemzetközi ragszámhoz (RR) még ki kell derítenünk az algoritmust, aztán remélhetőleg azt is megcsináljuk.Public szov As String
Public h As Long
Private Sub CommandButton1_Click()
vkod = ""
ossz = 0
szov = Trim(InputBox("Vonalkód értéke:", "Kód bevitel"))
ActiveSheet.Cells(3, 3) = szov
If szov = "" Then GoTo vege
h = Len(szov)
If h > 100 Then GoTo vege
j = 1
Dim vk(2, 100)
For i = 0 To h
Select Case i
Case 0
vk(1, i) = Chr(204)
vk(2, i) = 104
j = i
Case 1 To 2
vk(1, i) = Mid(szov, i, 1)
If Asc(vk(1, i)) < 195 Then vk(2, i) = Asc(vk(1, i)) - 32 Else vk(2, i) = Asc(vk(1, i)) - 100
j = i
Case 3
j = i
vk(1, i) = Chr(199)
vk(2, i) = Asc(vk(1, i)) - 100
Case Else
If Application.WorksheetFunction.IsEven(i) = True Then
j = i - ((i - 4) / 2)
s2 = Val(Mid(szov, i - 1, 2))
If s2 < 95 Then vk(1, j) = Chr(s2 + 32) Else vk(1, j) = Chr(s2 + 100)
vk(2, j) = s2
End If
End Select
If j = 0 Then k = 1 Else k = j
If i <= 3 Or Application.WorksheetFunction.IsEven(i) = True Then
ossz = ossz + vk(2, j) * k
vkod = vkod + vk(1, j)
End If
Next
eossz = ossz Mod 103
ActiveSheet.Cells(2, 2) = eossz
vkod = vkod + Chr(eossz + 32) + Chr(206)
ActiveSheet.Cells(2, 3) = vkod
vege:
vege = MsgBox("Konverzió vége!", vbOKOnly, "Vége")
End SubSzerk.: Ahhoz, hogy valóban vonalkódot állítsunk elő a fentiek segítségével, ahhoz szükség van még egy Code 128 B betűtípusra is, melyet a googli segítségével könnyedén találhatunk.
Ha azt szeretnénk, hogy a kapott vonalkód más -olyan számítógépeken is megjelenjen, amelyeken az adott betűtípus nincs telepítve, akkor a betűtípust be kell ágyaznunk a fájlba, hogy vigye magával.
Ez csak ttf és otf betűtípusok esetében lehetséges és csak akkor, ha a betűtípus licence megengedi.Beágyazás: Office 2007 Word esetében: Fájl/Word beállításai/Mentés/Betűtípusok beágyazása fájlba.
[ Szerkesztve ]
-
Delila_1
veterán
Egy ismerősöm úgy oldotta meg, hogy a konvertálásnál a szöveg elé és mögé tett egy-egy csillagot.
A1 tartalmazza a szöveget, a bárkód betűtípust tartalmazó cella képlete pedig ="*" & A1 & "*"Nem minden olvasó tudja ezt követni, de náluk a munkahelyén egyikkel sem volt gond.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Diopapa
addikt
Sziasztok!
A segítségeteket kérném. Belefutottam egy problémába és nem boldogulok vele. Egy függvényt szeretnék írni az alábbi problémára. Vannak adataim.. Két oszlop, benne összetartozó számok. Ezek helyek azonosítói. A számok azt reprezentálják, hogy pl a "41"-es helyről el lehet jutni a "64"-esre, a "42-"-esre, a "49"-esre stb. A függvényem azt csinálná, hogy megadott helyről pl "32" egy másik helyre pl "42" milyen útvonalon tudok eljutni a legkevesebb lépésből. pl 32 -> 74 -> 48 -> 42. Remélem érthető. Ezek az adatok egy adatbázisban vannak ha számít valamit.
Nagyon köszönöm a segítséget előre is..
Citizen Diopapa / Commander Diopapa "SC csomag olyan, mint a barackfa, unokáidnak veszed - .tnm / De pálinkát nemlehet főzni belűle - *SkyS1gn"
-
sztanozs
veterán
-
sztanozs
veterán
válasz Diopapa #2525 üzenetére
Akkor olyan bejárás kell, hogy először megkeresed az első lehetséges utat (tetszőleges bejárással) és a talált útnál rövidebb utat keresel visszalépés-alternatív próbálkozás-hosszabb kizárás módszerrel.
[ 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...
-
Diopapa
addikt
válasz sztanozs #2526 üzenetére
Hű ez jól hangzik, valami ilyesmit képzeltem, csak nem voltam benne biztos, hogy ez megadja a legrövidebb lépésszámot a végén.
Citizen Diopapa / Commander Diopapa "SC csomag olyan, mint a barackfa, unokáidnak veszed - .tnm / De pálinkát nemlehet főzni belűle - *SkyS1gn"
-
-
vilag
tag
válasz Delila_1 #2522 üzenetére
Elképzelhető, hogy működik, bár ebben az esetben biztos, hogy nem a ragszámon szereplő vonalkód "képét" kapod vissza. Ennek oka az, hogy nem történik rövidítés (mind az általam közzétett 1. változatban sem).
Beszélgettünk erről a kollégával és arra jutottunk, hogy valóban lehetne rövidíteni a programkódot, hogy ha figyelembe vennénk a postai ragszám tényleges hosszát, mert jelenleg 'bármilyen' hosszú vonalkódot kezel, nem csak 16 karakterig.
-
Apollo17hu
őstag
Sziasztok!
Van egy Excel-fájlom rengeteg makróval megbolondítva. Néhány hónapja vettem át egy kollégától, a makrókhoz szándékosan nem nyúltam, nehogy megboruljon az egész.
Sajnos az utóbbi időkben mentéskor(!) elég sűrűn fordul elő, hogy hibaüzenetet kapok, miszerint az egyik makró hibára futott. Mindez teljesen random jelentkezik (tehát nem minden mentéskor).
Van autoopen makró, és vannak olyan makrók is a munkafüzetben, amelyek worksheetchange esetén futnak.
Az a kérdésem, hogy létezik-e olyan makró, aminek futását a mentési esemény indítja el? Ha nincs, mi okozhatja a mentéskori indulást?
-
Delila_1
veterán
válasz Apollo17hu #2530 üzenetére
A BeforeClose ez az esemény. Rendszerint a ThisWorkbook laphoz rendeljük. Próbáld meg lépésenként futtatni, úgy könnyebben felfedezheted a hiba okát.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
veterán
válasz Apollo17hu #2532 üzenetére
Remélem, sikerül kiszűrni.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
vilag
tag
válasz Delila_1 #2522 üzenetére
Nos, végre eljutottam odáig, hogy kipróbáljam.
Nem működik!
A vonalkód olvasó nem olvassa, pedig ez nem valami himpli-hampli 500 Ft-os vonalkódolvasó.Most úgy vagyok mint Edison az első 1000 villanykörténél, most már tudom, hogy ez a megoldás nem vezet a kívánt eredményre.
-
Apollo17hu
őstag
válasz Delila_1 #2533 üzenetére
Sajnos se BeforeClose, se BeforeSave eseményt nem találtam, viszont kis szerencsével megtaláltam, hogy mely makró(k) fut(nak). (Az egyik az állapotsor szövegét is módosítja, ott vettem észre futás közben.) Az továbbra is rejtély, hogy miért indulnak el ezek a makrók. (Ebből az egyik egy "gyorsító" makró, ami kikapcsol mindenféle frissítést, kalkulációt, majd a végén mindent visszaállít.) Nálam 2007-es Excel van, munkatársamnál 2013-as, nála nem jelentkezik a hiba. Nagyon homály ez az egész nekem, de nemsokára én is átállok 2013-asra...
-
Delila_1
veterán
válasz Apollo17hu #2536 üzenetére
A VB szerkesztőben a füzetedhez tartozó ThisWorkbook lapra kattints rá bal oldalon, akkor jobb oldalon megtalálod a leírt események makróit.
A "gyorsító" makrók valószínűleg az egyes munkalapjaidhoz vannak rendelve, a fenti leírás szerint találod meg, a munkalapokra klikkelve egyenként.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Apollo17hu
őstag
válasz Delila_1 #2537 üzenetére
Ez a probléma, hogy végignéztünk már szinte mindent, és még így is rejtély.
ThisWorkbook-ban két dolog van AutoOpen-hez rendelve:
- R1C1 -re állítódik a függvénykezelés,
- egy összesítő munkalapra ugrik a fókusz (ehhez az összesítő laphoz semmilyen makró nincs hozzárendelve).Azért ha idő közben újabb nyom van, vagy sikerül rájönni a probléma forrására, jelentkezem.
-
vilag
tag
Üdv!
Van egy újkeletű problémám:
A korábban említett vonalkód témához kapcsolódik.
Mint említettem is a Word esetében a betűtípus beágyazása csak többé-kevésbé működőképes megoldás, így az abban érintett gépekre kézzel telepítettem a megfelelő betűtípust rendszergazdaként.Egy újabb fejlesztés eredményeként egy excel fájlban szeretném alkalmazni az említett vonalkód-betűtípust, azonban mint előbb írtam ehhez rendszergazda jog szükséges.
A rendszergazda felhasználónév és jelszó ismert a számomra.A kérdés tehát az, hogy mezei felhasználóként bejelentkezve VBA-ból tudok-e -és ha igen, akkor hogyan- olyan másolás parancsot kiadni, ahol programból kerül megadásra a rendszergazda felhasználónév és jelszó felhasználói beavatkozás nélkül.
Azaz tudok-e a Font mappába másolni anélkül, hogy kérje a rendszergazda felhasználónevet és jelszót magától a felhasználótól?
a "FileCopy" parancsnál nem láttam olyan paramétert, hogy felhasználónév, jelszó.
Gondolkodtam még batch fájlban is hasonló megoldással ha esetleg abban meglehet oldani.Várom a javaslatokat! Köszi!
[ Szerkesztve ]
-
vilag
tag
Kis javítás a kódokban:
1. verzió:
Public szov As String
Public h As Long
Private Sub CommandButton1_Click()
vkod = ""
ossz = 0
szov = Trim(InputBox("Vonalkód értéke:", "Kód bevitel"))
ActiveSheet.Cells(3, 3) = szov
If szov = "" Then GoTo vege
h = Len(szov)
If h > 100 Then GoTo vege
Dim vk(2, 100)
For i = 0 To h
If i = 0 Then
vk(1, i) = Chr(204)
vk(2, i) = 104
Else
vk(1, i) = Mid(szov, i, 1)
vk(2, i) = Asc(vk(1, i)) - 32
End If
If i = 0 Then k = 1 Else k = i
ossz = ossz + vk(2, i) * k
vkod = vkod + vk(1, i)
Next
eossz = ossz Mod 103
ActiveSheet.Cells(2, 2) = eossz
If eossz < 95 Then
vkod = vkod + Chr(eossz + 32) + Chr(206)
Else
vkod = vkod + Chr(eossz + 100) + Chr(206)
End If
ActiveSheet.Cells(2, 3) = vkod
vege:
vege = MsgBox("Konverzió vége!", vbOKOnly, "Vége")
End SubValamiért nem csinálja meg a kiemelést.
Ez a javítás:
If eossz < 95 Then
vkod = vkod + Chr(eossz + 32) + Chr(206)
Else
vkod = vkod + Chr(eossz + 100) + Chr(206)
End If2. verzió:
Public szov As String
Public h As LongPrivate Sub CommandButton1_Click()
vkod = ""
ossz = 0
szov = Trim(InputBox("Vonalkód értéke:", "Kód bevitel"))
ActiveSheet.Cells(3, 3) = szov
If szov = "" Then GoTo vege
h = Len(szov)
If h > 100 Then GoTo vege
j = 1Dim vk(2, 100)
For i = 0 To h
Select Case i
Case 0
vk(1, i) = Chr(204)
vk(2, i) = 104
j = i
Case 1 To 2
vk(1, i) = Mid(szov, i, 1)
If Asc(vk(1, i)) < 195 Then vk(2, i) = Asc(vk(1, i)) - 32 Else vk(2, i) = Asc(vk(1, i)) - 100
j = i
Case 3
j = i
vk(1, i) = Chr(199)
vk(2, i) = Asc(vk(1, i)) - 100
Case Else
' If Application.WorksheetFunction.IsEven(i) = True Then 'XP alatt nem működik!!!
If i Mod 2 = 0 Then 'XP alatt is működik
j = i - ((i - 4) / 2)
s2 = Val(Mid(szov, i - 1, 2))
If s2 < 95 Then vk(1, j) = Chr(s2 + 32) Else vk(1, j) = Chr(s2 + 100)
vk(2, j) = s2
End IfEnd Select
If j = 0 Then k = 1 Else k = j
' If i <= 3 Or Application.WorksheetFunction.IsEven(i) = True Then 'XP alatt nem működik
If i Mod 2 = 0 Then 'XP alatt is működik
ossz = ossz + vk(2, j) * k
vkod = vkod + vk(1, j)
End If
Nexteossz = ossz Mod 103
ActiveSheet.Cells(2, 2) = eossz
If eossz < 95 Then
vkod = vkod + Chr(eossz + 32) + Chr(206)
Else
vkod = vkod + Chr(eossz + 100) + Chr(206)
End If
ActiveSheet.Cells(2, 3) = vkod
vege:
vege = MsgBox("Konverzió vége!", vbOKOnly, "Vége")End Sub
Remélem még hasznos lehet valakinek.
[ Szerkesztve ]
-
Delila_1
veterán
válasz Apollo17hu #2538 üzenetére
Mikor leáll hibával a makró, a Debug gombra kattints, ne az End-re.
Sárga háttérrel lesz jelölve a sor, amelyikbe belebukott. Ott az egyes változók fölé mutatva (nem rákattintva) megmutatja a pillanatnyi értéküket. Ezekből lehet következtetni a leállás okára.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
PETEE78
senior tag
Sziasztok!
Hátha valaki megválna tőle...
Keresem az alábbi könyvet+CD mellékletét:
Kovalcsik Géza: Az Excel programozásaYou are being revived
-
wowpegazus
tag
Sziasztok!
Nem tudom jó helyen érdeklődök-e, remélem tudtok nekem segíteni. Nem tudok programozni, de szeretnék készíteni egy szerepjátékos karakter készítő alkalmazást. Az elképzelés valami olyasmi lenne, mint egy klasszikus rpg játékban.
Teljes képernyős módban futna a program, egyéni háttérrel, esetleg zenével.
Az elején 24 kaszt közül választhatna a játékos. Ezeket ikonok jelképeznék. Ha valamelyikre rákattint a játékos, azt kiválasztja, és jobb oldalon egy rövid leírást felhoz a program.
Lenne egy olyan oldal is, ahol a játékos eloszthat pontokat a karakter főbb tulajdonságai között, + - gombokkal növelve az értéket.
A karakterkészítés egyes lépései között alul tovább, illetve vissza gombbal lehetne lépkedni. A lényeg, hogy a user sok mindent választhatna, amiket aztán a gép állítana össze helyette. A választáshoz a listákat pl. excelből képes lenne beolvasni a program.A végén a kész karaktert egy excel alapú karakterlapra kinyomná a program.
Valami ilyesmi lenne az elképzelés. Tudtok segíteni ezt milyen ingyenes programmal lehetne elkészíteni a legkönnyebben? Win7 64bit oprencerem van, i5 3550 procival, 8 gb ram, radeon 6850hd videokártyával.
Bárminek nekiállok, csak valami irány kellene, merre kezdjem el.
Hálás köszönettel:
Wowpegazus
-
Diopapa
addikt
válasz wowpegazus #2544 üzenetére
Én a Visual Studio Express-t ajánlom mint ingyenes alkalmazást. Ha valamennyire megy az angol, akkor pedig a stackoverflow jó oldal.
Citizen Diopapa / Commander Diopapa "SC csomag olyan, mint a barackfa, unokáidnak veszed - .tnm / De pálinkát nemlehet főzni belűle - *SkyS1gn"
-
belaur
tag
Sziasztok,
Van egy Excel táblán 5 sheet-tel, mindegyik sheetet más user használ. Valahogy azt szeretném megoldani, hogy, ha a user megnyitja az Excelt akkor csak azt a sheetet lássa, ami az övé. Ez veryhidden sheetekkel és a windows user felismerésével lehetséges, azonban az Excel file Shared módban van, hogy egyszerre többen tudjanak dolgozni, viszont szerintem ez problémát okoz.
Van valami ötletek arra, hogy lehetne azt megoldani, hogy minden user csak a saját sheetjét lássa, de egyszerre többen is tudjanak dolgozni az Excelben?
Köszi
[ Szerkesztve ]
-
martonx
veterán
válasz wowpegazus #2544 üzenetére
Én a mai világban ilyet kizárólag online készítenék, azaz webes alkalmazásként. Klsszikus vastag kliensként nem látom sok értelmét.
Én kérek elnézést!
-
martonx
veterán
"azonban az Excel file Shared módban van, hogy egyszerre többen tudjanak dolgozni, viszont szerintem ez problémát okoz"
Szerinted, vagy tényleg problémát okoz?
Ha megmakrózod az excelt, és mögé tolsz egy adatbázist, akkor nem kell Shared mode, de lehet hogy ez overkill megoldás. Szvsz nem feltétlenül okoz a shared mode problémát, ergo nem értem, mi a probléma?Én kérek elnézést!
-
Maciii64
újonc
Sziasztok.
Nem rég kezdtem el Virtual Basicban programozni (2012), s egy gombhoz szeretném kötni, egy .bat fájl megnyitását, ha ez lehetséges, hogy adhatom hozzá, hogy telepítéskor is meglegyen a .bat fájl (persze megoldanám hogy ne lehessen hozzáférni)?
Előre is köszönöm.
-
zolynet
addikt
Ide is beteszem, hátha tudtok útbaigazítást adni: weblapról adat leszedés
Life is too short to stay stock!
-
sztanozs
veterán
válasz zolynet #2554 üzenetére
Szedd le így:
Set htmlDoc = CreateObject("HTMLFile")
urlString = "http://www.nfh.hu/pozitiv-lista?title=&field_shop_value=&page=0"
Set httpScraper = CreateObject("Microsoft.XMLHTTP")
httpScraper.Open "GET", urlString, False
httpScraper.send
If httpScraper.statusText = "OK" Then
htmlDoc.body.innerHTML = httpScraper.responseText
loadForm = True
Else
loadForm = False
Set htmlDoc = Nothing
Exit Function
End If
Set httpScraper = NothingÉs DOM-mal feldolgozod.
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 zolynet #2556 üzenetére
Mivel SUB-ba raktad, így Exit Sub kell Exit Function helyett.
BTW ez a funkció az egész weblapot leszedi, így neked kell kézzel (kóddal) navigálnod a DOM-ban és kiszedni az url-eket.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...
-
Onishi
tag
Sziasztok!
Előre is bocs a kisregényért.
Visual Basic Script-ben történő soros port kezeléssel kapcsolatos problémába ütköztem. Hátha van köztetek olyan aki jártas ebben.
Egy fényújságot kellene vezérelnem, amin állandóan változó adatokat kellene megjelenítenem. A scripttel amit írtam, 5-20 másodperc közötti időtartamonként küldök ki új szöveget rá.
2 problémába ütköztem:1.) A script ilyen szempontból jól működik, küldi is az adatokat szépen, de van amikor egyszercsak meghülyül a soros port kezelés és elkezdi megállás nélkül ontani magából a teljesen értelmetlen adatokat (többnyire csak 0-ákat, de van hogy random karaktereket), amiket a scriptben biztos, hogy nem generálok, és olyan sebességgel történik mindez, amit szintén nem küldök a scriptből, hiszen azt másodpercenként hívom meg, de mint már említettem leggyorsabb kiküldés is minimum 5 másodpercenként van. Szóval valami behülyül, és ezt csak úgy tudom megfékezni, hogy leállítom a scriptet és a soros drivert is újraindítom (soros-ethernet átalakító van a pc és fényújság között). Gondoltam az utóbbira is, hogy annak van valami baja, de a gép saját soros portján küldve az adatokat szintén előjön a hibajelenség.
2.) Ha a fényújságot tegyük fel áramtalanítják, vagy nem elérhető, attól még a script küldi az adakat, ami telíti a buffert, majd ha a fényújságot visszakapcsolják, akkor az összegyűlt adatokat elkezdi kiküldeni megállás nélkül, amit a fényújság nem tud értelmezni és meghülyül tőle. Erre valószínű jó lenne az OutBufferCount = 0 parancs, de ez csak MSCOMM32-vel működne, de azt nem tudom használni VBScript alól, mert licenszet kér. Helyette az ingyenesen letölthető NetCommOCX-et használom, de az nem tudja ezt a parancsot, vagy legalábbis nem működik.
Bemásolom a soros port kezelés részt a scriptből:
Set objComport = CreateObject("NETCommOCX.NETComm")
objComport.CommPort = 2
objComport.Settings = "9600,N,8,N"
objComport.PortOpen = True
objComport.OutBufferCount = 0
objComport.Output = Chr(21)
objComport.Output = Chr(18)
objComport.Output = Chr(5)
'Küldendő szöveg:
objComport.Output = fenyero + out + kifutas
'Lezárás:
objComport.Output = Chr(254)
objComport.Output = Chr(lezaras)
objComport.PortOpen = FalseElőször a sima OpenTextFile-eljárással próbálkoztam, de az állandóan átállítja a soros portot 1200baud-ra, holott nekem 9600 kellene. MSCOMM32 nem működik, így marad a NetCommOCX verzió. Mást eljárást nem találtam.
Esetleg valaki belefutott már ilyen problémákba? Van esetleg valamilyen tippetek?
Előre is köszönöm.
-
sztanozs
veterán
válasz martonx #2560 üzenetére
Én VB6-ból vezéreltem utoljára (mscom-mal) soros porti modemet... (ja nem pythonból linux alatt tavaly )
[ 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...
-
Dtomka
veterán
Tud valaki megoldást arra, hogy a Office 2013 Excel-VBA ban hogyan lehet módosítani a nyelvet? Már elég sok időt rászántam, de nem találtam megoldást
Köszönöm -
Soulfly842
addikt
Sziasztok!
Bármilyen office-t telepítek fel (win 8.1 alatt), amikor egy táblázatba akarok feltölteni adatokat azonnal átdob a Visual Basic-be és emiatt lehetetlen kezelnem a táblázatot. A korábbi Windowsoknál nem volt ilyen probléma... Tudtok ebben segíteni, hogy hogy tudom ezt lelőni, hogy az adott táblázatot tudjam normálisan kezelni?
Előre is köszönöm!
-
Kija
aktív tag
Sziasztok!
Excel VBA-ban írtam egy scriptet ami belép egy FTP szerverre és oda feltölt egy file-t, majd letölt egyet.
Az átlagsebességeket akarom egy-egy cellába beírni automatikusan az FTP kapcsolat lezárása után.
Ehhez az FTP munkamenetet egy txt file-ba küldöm és majd azt fogom feldolgozni.
A gond ott van, hogy az eredményeket tartalmazó szöveges file-ban pont az eredmények adatok elcsúsztak.Már a helyi könyvtár megadásánál csúszás van. Mi okozhatja?
-
Apollo17hu
őstag
Sziasztok!
Excel VBA-ban olyan problémába ütköztem, amihez már nem elegendőek az Űrlap-vezérlőelemek, hanem ActiveX-vezérlőkre van szükség. Milyen hátránya lehet, ha ActiveX-vezérlőkkel pakolom tele az Excel-fájlomat?
-
sztanozs
veterán
válasz Apollo17hu #2571 üzenetére
kompatibilitási problémák léphetnek fel, ha terjeszteni szeretnéd
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...
-
Delila_1
veterán
válasz Apollo17hu #2571 üzenetére
Mindenképp kapcsold be a bővítményeknél az Analysis Toolpak, és az Analysis Toolpak VBA nevűeket.
Ha más gépeken is alkalmazod a füzetedet, ott is be kell kapcsolnod. Az első a füzetben tesz elérhetővé egy rakás új függvényt, a második a VBA-ban kell a vezérlők kezeléséhez szükséges utasítások eléréséhez.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Apollo17hu
őstag
válasz Delila_1 #2573 üzenetére
Ez a két bővítmény nálam most az "Inaktív alkalmazásbővítmények" kategóriában van. Ennek ellenére tudom használni a szükséges funkciót (konkrétan a MouseMove event az).
sztanozs: Igen, terjeszteném. A gépek Excel-verziója és -beállítása azonos, de nem tudom, kell-e engedélyezni rajtuk bármit is vagy sem. Ha kell, akkor elfelejtem az ActiveX-vezérlőket. (A makrók engedélyezését szerencsére az Excel értesítése megoldja, ActiveX-re nem láttam ilyet.)
-
Kija
aktív tag
Ebbe a kompatibilitási problémába én is belefutottam ActiveX vezérlőelemmel (ComboBox).
Viszont ha Űrlapvezérlő elem legördülő listát hozok létre, akkor meg ilyen nevet ad neki: Lenyíló 13.
Hogyan lehet erre hivatkozni (space van benne illetve ékezetes betűk), vagy hol lehet átnevezni?
Egyáltalán hogyan lehet egy változóba rakni VBA-ban az értékét, ha megváltoztatják? -
belaur
tag
Sziasztok,
Van egy Excelem amiben egy makró megnyit egy másik excelt, annak egy táblájáról információt kér be (konkértan, hogy melyik az utolsó sor és oszlop) majd azt beirja az első táblázatba. Mi arra a megoldás, hogy ez akkor is működjön, ha a második excel éppen nyitva van (azaz Read Onlyba nyissa meg a makró és úgy olvasson ki adatot belőle)
Köszi!
-
Kija
aktív tag
Még egy kérdés:
Kiraktam egy gombot, amit ha megnyomok akkor csatlakozik az Internethez a PC a cmdline-t meghíva a RASDIAL-al.
Viszont két felhasználói név jelszó párossal akarom ezt használni.
Ehhez két választógombot raktam ki.
Ha bejelölöm valamelyiket, akkor az egy-egy string változónak a felhasználói nevet (ami ugye egy email cím) és a jelszót adja értékül.
Ez működik is viszont ha bejelölöm valamelyik választógombot akkor automatikusan megnyitja az Outlook levelezőt és erre az email címre mint címzett nyit egy új emailt.
Arra már rájöttem, hogy a választó gomb felirata okozza ezt. Mindkettőnek a felhasználói név (ami itt ugye egy email cím) a felirata. ha ezt átírom másra, akkor is az eredeti email címmel nyit egy új üzenetet...
Ezt szeretném kiküszöbölni.
Van ötletetek hogyan?
Sub Választógomb1_Kattintás()
userstr = "valami@valahol.hu"
passwstr = "password1"
End Sub
Sub Választógomb2_Kattintás()
userstr = "masvalaki@masvalahol.hu"
passwstr = "password2"
End Sub -
Henrico
tag
Szeretném a segítségeteket kérni. Adott ez a kis minta program. A célom, hogy a rendszer felállása után fél perccel elindítson egy programot...
Amennyiben azt szeretném, hogy ez a program kis ablakban fusson (tehát maradjon a tálcán), mivel kellene még bővítenem?SecondsToDelay = "30"
ProgramToRun = "program amit futtatni szeretnék"
Wscript.Sleep(SecondsToDelay * 1000)
Prog = Chr(34) & ProgramToRun & Chr(34)
CreateObject("WScript.Shell").Run(Prog)Köszi!
-
Henrico
tag
válasz martonx #2584 üzenetére
Aha.. csodálatos... feladatütemező.. csak a legegyszerűbb megoldás nem jutott eszembe.... Köszi!
A célom, hogy a rendszer elindulása után x idő elteltével indítson el vmware playerrel egy virtuális gépet és tegye le a tálcára, hogy ne is látszódjon...
Nézegettem a feladatütemezőt, de az igazat megvallva erre ott sem látom a megoldást, mármint az ablak lecsukására... tudnál segíteni?
Köszönöm.. és bocs, mert akkor ez itt már off...
[ Szerkesztve ]
-
salmiakki
tag
Sziasztok!
Adott egy olyan helyzet, amikor egy új Control kerül a programba, és szeretném megnézni, hogy az takarásban van-e azon többi Control-al, melyek Top, Left, Height és Width adatai állnak rendelkezésemre.
Hogyan tudnám ezt a lehető legegyszerűbben kivitelezni?Jelenlegi kód:
Dim Collision As Boolean = False
Dim _top As Integer = MovingObject.top
Dim _left As Integer = MovingObject.left
Dim _width As Integer = MovingObject.width
Dim _height As Integer = MovingObject.height
For i As Integer = 0 To Objects.Rows.Count - 1
Dim oTop As Integer = Objects.Rows(i).Cells("top").Value
Dim oLeft As Integer = Objects.Rows(i).Cells("top").Value
Dim oWidth As Integer = Objects.Rows(i).Cells("width").Value
Dim oHeight As Integer = Objects.Rows(i).Cells("height").Value
Next
If Collision = True Then
MovingObject.BackColor = Color.Red
Else
MovingObject.BackColor = Color.ForestGreen
End If'_ 'előtaggal jelölt változók az újonnan programba kerülő Control adatai.
'o' előtaggal jelöl változók a meglévő Control-ok adatai.Segítségeteket előre is köszönöm!
[ Szerkesztve ]
-
sztanozs
veterán
válasz salmiakki #2587 üzenetére
Próbáld meg lerajzolni azokat a helyzeteket, amikor egy kontrol takar egy másikat és ez alapján meglesznek a megoldások.
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...
-
Delila_1
veterán
válasz salmiakki #2587 üzenetére
A lenti makró az újonnan betett objektum helyzetét vizsgálja, de csak az előtte berakott utolsóhoz képest. Ha az utolsó előttit takarja, üzenetet küld. Az ábrán kiemelt rész mutatja, hogy olyan esetben is jelez, ha látszólag nincs takarás, de a valóságban igen.
Sub Takar_e()
Dim elozo As Integer
Dim B_uj As Single, J_uj As Single, F_uj As Single, A_uj As Single
Dim B_elozo As Single, J_elozo As Single, F_elozo As Single, A_elozo As Single
Dim Vizsz As Boolean, Fugg As Boolean
Vizsz = False: Fugg = False
'Új alakzat adatai
With ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
B_uj = .Left 'bal szél
J_uj = .Left + .Width 'jobb szél
F_uj = .Top 'felső pont
A_uj = .Height + .Top 'alsó pont
End With
'Előző alakzat adatai
elozo = ActiveSheet.Shapes.Count - 1
With ActiveSheet.Shapes(elozo)
B_elozo = .Left 'bal szél
J_elozo = .Left + .Width 'jobb szél
F_elozo = .Top 'felső pont
A_elozo = .Top + .Height 'alsó pont
End With
If B_uj >= B_elozo And B_uj <= J_elozo Then Vizsz = True
If J_uj >= B_elozo And J_uj <= J_elozo Then Vizsz = True
If F_uj >= F_elozo And F_uj <= A_elozo Then Fugg = True
If A_uj >= F_elozo And A_uj <= A_elozo Then Fugg = True
If Vizsz = True And Fugg = True Then
MsgBox "Az előző (" & ActiveSheet.Shapes(elozo).Name & " nevű) objektum takarásban van", vbExclamation
Else: MsgBox "Nincs takarásban az előző objektum"
End If
End Sub[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
veterán
válasz salmiakki #2587 üzenetére
Igaz, hogy Control-t kérdeztél, de ez a makró az eddig felvitt legalsó és jobb szélső elemek bármilyen objektum alá-, és tőle jobbra 5 ponttal helyezi az új objektumot.
Sub UjElem()
Dim Bal As Single, Lent As Single, i As Long
For i = 1 To ActiveSheet.Shapes.Count
With ActiveSheet.Shapes(i)
If .Left + .Width > Bal Then Bal = .Left + .Width + 5
If .Top + .Height > Lent Then Lent = .Top + .Height + 5
End With
Next
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Bal, Lent, 70#, 58#).Select
End SubAz
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Bal, Lent, 70#, 58#).Select
sorban kell meghatároznod az új elem típusát. A két utolsó érték helyére írd be a kívánt szélességet, és magasságot. Ez most egy téglalapot tesz be, de ha a sor helyett ezt írod:
ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=Bal, Top:=Lent, Width:=102.75, Height:=25.5).Selectakkor egy beviteli mezőt tesz a megfelelő helyre.
Ez meg szépen egymás alá teszi a beviteli mezőket:
Sub mm()
Dim Bal As Single, Lent As Single, i As Long
For i = 1 To ActiveSheet.Shapes.Count
With ActiveSheet.Shapes(i)
If .Left > Bal Then Bal = .Left
If .Top + .Height > Lent Then Lent = .Top + .Height + 3
End With
Next
ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=Bal, Top:=Lent, Width:=69.75, Height:=24).Select
End Sub[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
salmiakki
tag
válasz Delila_1 #2590 üzenetére
Az alábbi képen látszik maga a program. Mint írtam, az objektumoknak csak a Left, Top, Width és Height adatai vannak meg, mellesleg végtelen objectről lehet szó, szóval amit az 1. válaszban írtál, hogy csak a legutóbbi objectet nézni, nem hinném, hogy jó lesz.
Továbbá csak hogy egyértelmű legyen, az A esetben jelölt fedést szeretném csak ellenőrizni, ha 2 object érintkezik (B eset), azt nem feltétlen. -
Delila_1
veterán
válasz salmiakki #2591 üzenetére
Azt írd le, hogy kerülnek a lapra az objektumok. Hátha akkor könnyebb ellenőrizni a helyzetüket, illetve eleve jó helyre lehetne tenni.
A már meglévő ábráknál nagyon sok, egymást ütő feltételt kell vizsgálni.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
-
-
fPApi
őstag
Egy word dokumentumba beágyazott excel táblát szeretnék elérni VB-ből. Ha csak egy lenne nem lenne gond, viszont több beágyazott táblám van a fájlban. Hogyan tudom megnézni az adott beágyazott tábla hivatkozási számát/nevét?