Keresés

Részletes keresés

stromba Creative Commons License 2011.04.25 0 0 14706

 

Például. Én szeretek csak annyi sort kimásolni az alapfájlból amennyiben értékes adat van (vizsgáljuk például azt hogy mi az utolsó sor), ez itt lent annyiban egyszerűbb hogy mindenképpen 200 sornyi adatot másol. Az "első munkalap" nem mindig az első munkalap ezért érdemes lenne inkább névre hivatkozni.

 

 

Sub CrDb()

Dim FSO As Scripting.FileSystemObject, folder As Scripting.folder, file As Scripting.file, wb As Workbook

'szükséges referencia a "Microsoft Scripting Runtime"-hoz. VBA-ban Tools - References alatt

Dim directory As String

Dim thisWB, tempWB As String

Dim dbSh As String

Dim i As Long

 

Application.ScreenUpdating = False 'képernyõfrissítés kikapcsolása

 

Workbooks.Add 'adatbázis új munkafüzetben, ezt majd lementheted MIND.xls néven v. akárhogy máshogy

thisWB = ActiveWorkbook.Name

dbSh = ActiveSheet.Name

i = 1

 

    directory = "d:\PersonalData\Test" 'az alkönyvtár ahol a fájlok vannak.

 

    Set FSO = CreateObject("Scripting.FileSystemObject")

    Set folder = FSO.GetFolder(directory)

 

    For Each file In folder.Files

 

        Application.DisplayAlerts = False 'windows üzenetek kikapcsolása

        Workbooks.Open file

        tempWB = ActiveWorkbook.Name

        Worksheets(1).Activate 'az elsõ munkalap ahol az adatok vannak

        Range("A1:J200").Select 'az a tartomány ahol az adatok vannak

        Selection.Copy

 

        Workbooks(thisWB).Worksheets(dbSh).Activate

        Cells(i, 1).Select 'adatok bemásolása az adatbázisba

        ActiveSheet.Paste

        i = i + 200 'következõ adathalmaz 200 sorral késõbb másolódik

        Workbooks(tempWB).Activate

        ActiveWorkbook.Saved = True

        ActiveWorkbook.Close 'becsukjuk az alapfájlt

        Application.StatusBar = tempWB & " kész" 'statusbar frissítése, hol tart a program

 

    Next file

End Sub

 

 

Előzmény: mixtura_pectoralis (14705)
mixtura_pectoralis Creative Commons License 2011.04.24 0 0 14705

Ha jól értem a szöveget, akkor ez sok munkalapot csinál egy munkafüzetbe.

 

Nálam az a helyzet, hogy eltettem a MUNKA könyvtárba 250 db excel fájlt, p001 - p250 néven.

Mindegyikből az első munkalapon lévő A-J oszlopok tartalmát kell kimásolni a MIND.xls fájl első munkalpjára, egymás alá.

Végignéztem őket, a leghosszabb sincs 200 sor, tehát A1:J200 cellákat kell átmásolni, de a célterület az A1, A201, A401, stb. cellákkal kell kezdődnie.

 

A végeredmény a mind.xls első munkalapján a1 - j5000 táblázat, amit már tudok kezelni.

Ehhez kérek segítséget.

Előzmény: Törölt nick (14704)
Törölt nick Creative Commons License 2011.04.24 0 0 14704
Előzmény: mixtura_pectoralis (14703)
mixtura_pectoralis Creative Commons License 2011.04.24 0 0 14703

250.

igen.

Csak egymás alá kell másolni őket, az oszlopok azonosak.

Előzmény: Sánta Kutya (SK) (14702)
Sánta Kutya (SK) Creative Commons License 2011.04.24 0 0 14702

Mennyi a rengeteg? A szerkezetük teljesen azonos?

Előzmény: mixtura_pectoralis (14701)
mixtura_pectoralis Creative Commons License 2011.04.24 0 0 14701

Üdv, látom, nagyon profik vannak itt vba szkriptek terén is, máris van reményem.;)

Az access listára irtam, azt a választ kaptam, hogy szkripttel oldható meg, de fogalmam sincs, milyen access szkriptet kellene irni, és csak sql-hez értek.;)

Viszont akkor a másik oldalról fognám meg a probléma gyökerét, és talán ebben tudtok segiteni.

 

Adott rengeteg excel fájl, heti pénztár forgalmi adatokkal, 10 oszlop, 110 sor.

Access-be át kell másolni őket, de access-be csak egyesével lehet, abba beleőszülök.

 

Az lenne a legegyszerűbb, ha az excel fájlokat - mindegyik egy munkalapos - egyetlen fájl egyetlen munkalapjára, egymás alá be lehetne másolni, azt már - pici kézimunkával - be tudnám importálni access-be.

 

Valaki tudna egy szkripttel segiteni?

szkripnyik Creative Commons License 2011.04.23 0 0 14700

Kösz!

Egyébként, ahol a problémám adódott volt egy harmadik (szintén LONG típusú) szorzótényező is.

Ha azt írom előre és nem a konstans tényezőt, akkor nincs probléma...

:-))

Kellemes ünnepet!

Előzmény: Törölt nick (14698)
Törölt nick Creative Commons License 2011.04.22 0 0 14699

VBA, Integers are 16-bit signed types, when you perform arithmetic on 2 integers the arithmetic is carried out in 16-bits. Since the result of multiplying these two numbers exceeds the value that can be represented with 16 bits you get an exception. The second example works because the first number is first converted to a 32-bit type and the arithmetic is then carried out using 32-bit numbers.

Előzmény: szkripnyik (14696)
Törölt nick Creative Commons License 2011.04.22 0 0 14698
Előzmény: szkripnyik (14696)
maiann Creative Commons License 2011.04.22 0 0 14697

hohoóó, így fényévekkel egyszerűbb, köszönöm a segítséget, SQLkerdes és Delila10!!

szkripnyik Creative Commons License 2011.04.22 0 0 14696

Vak vagyok és világtalan, de ez a 4 sor:

 

Sub moricka()
Dim szorzat As Long
szorzat = 99 * 999
End Sub

 

Vajon miért jelez overflow hibát?

 

Delila10 Creative Commons License 2011.04.22 0 0 14695

Hogy legyen meg magyarul is.

 

 

A különböző tartományoknak nevet adsz.

Az A1:A4 nálam a Főlista névre hallgat.

Fontos, hogy az allisták azt a nevet kapják, amelyik főlista-beli kategóriába tartoznak. A C1:C11 tartomány neve szín, az F1:F12-é név.

 

Az első érvényesítés az A13 cellában van, a lista forrása: =Főlista

A B13-as érvényesítésnél a forrás: =INDIREKT(A13)

Előzmény: maiann (14692)
SQLkerdes Creative Commons License 2011.04.22 0 0 14694

Néhány hasznos link:

 

 

http://www.contextures.com/xldataval02.html

Előzmény: SQLkerdes (14693)
SQLkerdes Creative Commons License 2011.04.22 0 0 14693

Az excel ezt native-an is tudja, nem kell hozzá makró.  A megoldás az INDIRECT (magyar:  INDIREKT) függvény, de hosszú lenne írásban elmagyarázni.  Mindjárt keresek egy linket ahol már készen le van írva.

Előzmény: maiann (14692)
maiann Creative Commons License 2011.04.22 0 0 14692

sziasztok, én az execelen belül szeretnék egy legördülő listát létrehozni, ami eddig nem jelent gondot. Viszont van egy "A" lista(a főfeladatokról) és B lista(ami egyes főfeladatokat bont részfeladatokra). ha egy listába raknám mindezt, nagyon hosszú lenne kiválasztani az illetőnek a  megfelelő feladatot, ezért szeretnék (makróval?) hivatkozni: ha kiválasztom a főlistából az adott feladatot, a következő cellában a legördülő lista az előbbiekben kiválasztott főfeladathoz tartozó részfeladatai jelennének már csak meg, szűkítve az egész részlistát.  első ránézésre makróra gondoltam, de abban meg nem igazán vagyok otthon... Esetleg ötlet a megoldásával kapcsolatban?KÖszi!

syrius Creative Commons License 2011.04.22 0 0 14691

Köszi, (ki is próbálom, de csak ha visszajöttem egy kis husvéti pihiről)

Előzmény: Delila10 (14690)
Delila10 Creative Commons License 2011.04.22 0 0 14690

Akkor ezekből válassz (de lehet más képlet is):

 

=(INDIREKT("A"&INT(VÉL()*(20-1)+1))&","&INDIREKT("B"&INT(VÉL()*(20-1)+1)))*1

=(INDEX(A:B;RANDBETWEEN(1;20);1)&","&INDEX(A:B;RANDBETWEEN(1;20);1))*1

 

Az 1-gyel való szorzás ahhoz kell, hogy az összefűzéssel (&) előállított szövegeket számokká alakítsuk.

Előzmény: syrius (14689)
syrius Creative Commons License 2011.04.22 0 0 14689

Hát én első nekifutásra egyszerűbb dologra használtam volna. (Lehet, hogy egyszerűbben is mehetett volna...? Ki tudja milyen függvényeket rejt a most telepített csomag.) Szóval egyszerűen többjegyű számokat kellene kiiratnom véletlenszerűen betűvel. Az egyes oszlopokba beírtam a megfelelő neveket, majd az összefűz paranccsal és a most telepített INDIREKT-tel generálom a számokat - egészeket és tizedes törteket. De jó lesz ez még sokmindenre.

Előzmény: Delila10 (14687)
syrius Creative Commons License 2011.04.22 0 0 14688

yessss:-) Működik. Megyek, felhasználom.

Delila10 Creative Commons License 2011.04.22 0 0 14687

Szívesen, nekem is jutott ezzel a feladattal egy kis szórakozás.

 

Gyerekkorunkban szólásokat, közmondásokat cetlikre írtunk fel úgy, hogy az első felét egyik-, a másodikat másik színű papírra. Aztán húztunk 1-1 papírt a két halomból, és összeolvastuk.

A vezeték, és keresztnevek helyett most beírtam pár mondást, ilyen eredményeket kaptam:

 

Alamuszi macska partot mos.

Nézd meg az anyját, nagyfejű.

Nagy az Isten mint hal a vízben.

Lassú víz nagyot ugrik.

Ahol a bor az úr, a kutya ugat.

A beteg embernek ne nézd a fogát.

Ki korán kel, orvos a barátja.

Jó kezdet aranyat lel.

Ritka, mint hal a vízben.

Jó bornak orvos a barátja.

Ki korán kel, nagyot ugrik.

Él, mint a fehér holló.

Pénz beszél, ami fénylik.

 

... és így tovább.

Előzmény: syrius (14686)
syrius Creative Commons License 2011.04.22 0 0 14686

Köszi, jó ilyenre ébredni:-) Megvan a napi programom, remélem sikerrel járok.

Előzmény: Delila10 (14685)
Delila10 Creative Commons License 2011.04.22 0 0 14685

Az INDEX függvénnyel is meg lehet oldani.

 

=INDEX($A$1:$B$20;RANDBETWEEN(1;20);1)& " "&INDEX($A$1:$B$20;RANDBETWEEN(1;20);2)

Előzmény: syrius (14682)
Delila10 Creative Commons License 2011.04.22 0 0 14684

=INDIREKT("A" & RANDBETWEEN(1;20)) & " " &INDIREKT("B" & RANDBETWEEN(1;20))

 

vagy ha nem szereted a RANDBETWEEN függvényt, ami a paramétereiben megadott alsó- és felső határok közötti egész véletleneket generál, akkor

 

=INDIREKT("A" & KEREKÍTÉS(VÉL()*(20-1)+1;0)) & " " & INDIREKT("B" & KEREKÍTÉS(VÉL()*(20-1)+1;0))

 

A randbetween függvény akkor áll rendelkezésedre, ha a bővítménykezelőben bekapcsolod az Analysis TooplPak-ot, amivel egy halom új függvényt is kapsz.

Előzmény: syrius (14682)
syrius Creative Commons License 2011.04.21 0 0 14683

Ja és nagyon kezdő számára melyik könyből lehet sok szemléletes példán keresztül megtanulni a makrozást? Nem egyetemi könyvre inkább valami excel for Dummies-ra gondolok.

syrius Creative Commons License 2011.04.21 0 0 14682

Sziasztok, csak felszínesen ismerem az excelt - így is sok örömöm van benne - , de most olyan problémám van, amit nem tudom meg lehet-e oldani vele.

Olyasmi feladatról van szó, mint anno BASIC-ben egy ON x=1,2,3,4... Do a,b,c,d... féle játék, konkrétan mondjuk egy oszlopban van egy csomó szöveg (vagy szám) és onnan kellene egyet kiolvasni akár egy vél() gererálta érték függvényében. PL. az A oszlopban szerepel 20 vezetéknév, a B-ben 20 keresztnév és 1-1 vél()szám által generált érték alapján írjon egy random nevet egy adott cellába. (Remélem érhető voltam) Volna segítség?

'Slice' Creative Commons License 2011.04.21 0 0 14681

Ohh nagyon köszönöm...így már tökéletes

(az a fránya dollárjel)  :)

Előzmény: SQLkerdes (14680)
SQLkerdes Creative Commons License 2011.04.21 0 0 14680

Mielőtt átmásolod az oszlopot, az eredeti (F) oszlop tartalmát alakítsd át =F$3+$A4 stílisra (minden sorban, kivéve természetesen az első adatot (16:00)).

 

Ezután másold át és működni fog a képlet.

Előzmény: 'Slice' (14677)
'Slice' Creative Commons License 2011.04.21 0 0 14679

átmásolom 3-al jobbra a  16:00-ás oszlopott és átírom 16:15-re a kezdő értéket

csak épp a következő számokat már a megállók nevéből próbálja kinyerni, ami nem megy neki.

Előzmény: SQLkerdes (14678)
SQLkerdes Creative Commons License 2011.04.21 0 0 14678

A nem másolja oldalra a számokat részt nem értem...

Nem azt csinálod, hogy a 16:00-t átírod 16:15-re, hanem beszúrsz egy új oszlopot?  Hova szúrod be azt az új oszlopot (F mellé balról, jobbról?).

Valszeg az lesz a gondod, hogy a beszúrt új oszlop elviszi a relatív képleteidet rossz irányba.

Előzmény: 'Slice' (14677)
'Slice' Creative Commons License 2011.04.21 0 0 14677

No ismét egy menetrendi kérdés.

Megcsináltam hogy az egyik oszlop a menetidőket számolva kijön az alábbi képlettel:

 

=F$3+A4

 

A oszlop                              F oszlop

 

          Moszkva tér               16:00

0:02   Városmajor                16:02

0:05   Budagyöngye             16:05   stb

 

Viszont ha egy 16:15-ös indulást vennék fel akkor nem másolja oldalra a számokat mindig érték hibát kapok, mert valahogy a megállót akarja hozzárendelni az értékhez amit nem értelmez.   Hogy tudom odébbvarázsolni valahogy hogy mindig az A oszlop értékével számoljon?

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!