Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Elnézést, a pdf-et automatikusan megnyitó makró nem működik, mert az L6 cellára hivatkoztam a K6 helyett. A Sheet1 munkalapon levő kódot kell megváltoztatni úgy, hogy a két helyen szereplő L6-ot K6-ra cseréled. Itt a helyes makró.
Egy kérdésem volna. Szépen működik a file megosztott fileként. A különböző gépekből lehet benne az engedélyezett módosításokat végrehajtani. Egy kicsi hibával: a módosítást a többi gépen csak akkor látják ha ha az a filet bezárják majd újra indítják. A kérdésem az: van-e lehetőség real time-ban azonnal mindenki láthassa a változásokat vagy szintén valós időben jelzést küldeni?
itt egy verzió, ami hasznos lehet. Választható mappából beírja a cellákba a fájlneveket, majd megadhatod, hogy mire nevezze át. Adatérvényesítést nem állítottam be. Bat file-t nem használ, csak az excelt.
Bocs, működik, csak az ékezeteket és szóközöket nem szereti. Még megpróbálom megmondani neki, hogy a batch fájl első sorába tegye be magától ezt "chcp 1250" Ugyanis az ékezeteket a batch fájl nem viszi be.
Retro Image: Azért kell megnyitogatnom az exceleket, bocs pdf-t, mert irattári szkennelések ezek. Meg kell nézni az irattípust, valamint a dátumot. Majd azokat az információkat beadni. Sajnos OCR programok nem tudnak megbírkózni vele. Ugyanis igen változatosak az iratmintasablonok, hiszen 1978-tól napjainkig bármi előfordulhat. Majd amikor olyan szinten lesz az AI, akkor megcsinálja helyettünk a gép. Ez még kb 10 év.
Viszont érdekelne a módszer, hogy lehet fájlokat átnevezni. Az is egy lépés lenne a tökéletesebb megvalósítás felé. Tehát ha megtudod mondani a módját, megköszönöm. :-)
Ha gondolod, váltsunk át emailos kommunkációba, vagy skypera, és a végén, majd ide betesszük a megoldást, hátha érdekelhet később mást is.
skájp:-) : privateer2 mail: biro pont tamas kukac gmail pont com
Nagyon sokat segítettél, örök hálám. Így már 100%-ig olyan a tábla, amilyet szerettem volna.
A B oszlopos mizériát megoldottam, nem fontos.
A másoló kódrészlet így adott helyes értékeket:
For Each Rng In Sheets("leltárlista").Range("G4:G" & Lr) If Rng.Value <> "" Then _ Sheets(CStr(Rng.Value)).Range("B" & _ Rows.Count).End(xlUp).Offset(1, 0).Resize(, 6).Value = _ Rng.Offset(, -5).Resize(, 6).Value Next Rng
Hát már bocsánat, én sem vagyok nagy véleménnyel ennek a fórumnak a technikai színvonaláról, és 2000 óta nézem, ahogy egyre rosszabb és rosszabb verziókkal cserélik le, de kódokat inkább a pastebinbe írjál.
Azért dobja a 'subscript out of range' hibaüzenetet, mert olyan munkalapra hivatkozik, aminek a neve egy üres string (szöveges változó), tehát egy üres cella tartalma a G oszlopban. Esetleg bele lehet tenni egy ha függvényt, hogy ne másoljon, ha a G oszlopban levő cella üres az adott sorban. Beleírtam a kódrészletbe.
Az nem teljesen tiszta nekem, hogy miért nem másol amikor üres a B oszlopban a cella, erre nem tudok mit mondani.
A G oszlop másolásához valóban a resize metódussal kell babrálni, ezt is beleírtam. Ha nem stimmel, szólj!
For Each Rng In Sheets("leltárlista").Range("G4:G" & Lr)
Azért dobja a 'subscript out of range' hibaüzenetet, mert olyan munkalapra hivatkozik, aminek a neve egy üres string (szöveges változó), tehát egy üres cella tartalma a G oszlopban. Esetleg bele lehet tenni egy ha függvényt, hogy ne másoljon, ha a G oszlopban levő cella üres az adott sorban. Beleírtam a kódrészletbe.
Az nem teljesen tiszta nekem, hogy miért nem másol amikor üres a B oszlopban a cella, erre nem tudok mit mondani.
A G oszlop másolásához valóban a resize metódussal kell babrálni, ezt is beleírtam. Ha nem stimmel, szólj!
For Each Rng In Sheets("leltárlista").Range("G4:G" & Lr)
- a For..Each ciklus végigmegy a "leltárlista" munkalap G oszlopán a negyedik sortól az Lr-edik sorig.
- az Rng változó mindig az adott cellát jelenti (először G4, majd G5, stb.)
- If Rng.Value <> "" Then Ha a cella nem üres, akkor
- Sheets(CStr(Rng.Value)) a Rng cellában található érték nevével fémjelzett munkalap (a CStr szöveges változót csinál belőle, hogy ne számként értelmezze)
- .Range("B" & Rows.Count).End(xlUp) B oszlop utolsó sorából indulva felfelé haladva az első nem üres cella (pl. B3)
- .Offset(1,0) az eggyel alatta levő cella (pl. B4)
- .Resize(,6) a kijelölés átméretezése egy celláról hat cella szélesre jobbra(tehát pl. B4:G4)
- .Value és ennek az értéke
legyen egyenlő ezzel:
Rng.Offset(,-6).Resize(,6).Value magyarán a Rng cellától hattal balra levő cella (a "leltárlista" munkalap G oszlopában van a Rng, mint emlékszünk, tehát pl. G4-ből lesz B4)
átméretezve jobbra hat cella széles területté (pl. B4:G4), és ennek az értéke
Ha az utolsó helyett a Z oszlopba teszed a képleteket, azzal szerintem semmit nem nyersz.
A képlet módositása úgy, hogy a Replace feleslegessé váljon, járható útnak tűnik. Ki kell próbálni, hogy működik-e. Azért én nem várnék tőle túl sokat. A Replace elég gyors dolog egy 60-80 soros táblázatnál.
A futtatás előtti aktiv cellát meg úgy őrzöd meg, hogy:
Dim Talon As Range
Set Talon = Activecell
aztán jön a program többi része
a végén pedig
Range("A1").Activate
helyett
Talon.Activate
kell.
A vessző és a pontosvessző körüli kavarodás pedig azért van, mert a VBA részt nem magyaritották az Excel többi összetevőjével. (Hála Istennek :o))
Sziasztok! Szeretnék egy pici segítséget kérni, excelben szeretnék vérnyomásnaplót vezetni. Ehhez találtam egy majdnem minden szempontból megfelelő template-et, amin egy dolgot szeretnék megváltoztatni: azt szeretném, hogy ne day 1, day 2 stb. legyen, hanem pl 2013.02.19, 18:00, és mindez a charton is így legyen, így változzon. Azért szeretném így, mert egy nap többször is mérek. Hogyan volna ez lehetséges? A template linkje: http://raywinstead.com/bp/BPMonthOnceADayFormExcel.xls
Nagyon fontos volna, hálás köszönet annak aki hajlandó volna segíteni.
Aha, köszi, tehát jól láttam, hogy valóban ír a táblázatba! Csak éppen az utolsó oszlopba. Na most ha megmondom, hogy az utolsó oszlop mondjuk a P, és még ha írnak is mellé, a Z oszlop már biztosan szabad, azzal lehet gyorsítani?
És hogy tudom az elején eltárolni a kurzor helyét, hogy ne A1-re álljon vissza?
Ha a SUM(G4,I4,K4,M4,O4) helyett IF(SUM(G4,I4,K4,M4,O4)=0,"",1)-et írnék, azzal megspórolnám a külön cserét, nem? Akkor felesleges lenne az Rng.Replace what:="0", replacement:="", lookat:=xlWhole
Meg kell szokni, hogy itt vessző van a pontosvessző helyett, furcsa, és nem is értem, miért nem az van az Excelben is.
Feladat a következő. Van egy excel fájl, meg mondjuk 6 darab vegyes pdf. Ezeket akarom átnevezni.
Jelenleg a következőképp csinálom. Van egy excel táblám, benne két makró.
Az egyik a mondjuk ctrl+a-val a könyvtárban lévő pdf fájlok neveit listázza be. A másik pl. ctrl+d-vel megnyitja a beállított pdf olvasót.
Utána én kitöltöm pl a dátumoszlopot, majd az irattípust automatikus kiegészítés segítségével gépelve kiválasztom.
Ha végeztem, a kívánt tartalmat copy paste módszerrel át viszem egy sima bat fájlba, ott a wordpad++ makrójával kiszedem a tabulátorokat. És az elkészült sima dosos rename bat fájlal átnevezem a pdf-eket.
Kérdésem a következő
1. Hogy lehetne megnyitni a pdf fájlokat, úgy, hogy ne nyisson meg újabb pdf ablakot. Azaz előzőleg megnyitott fájlt, ha van olyan zárja is be. Tudom, lehet hogy a viewer beállításán múlik. De gyanítom, hogy excelből vezérelhető. 2. Hogy lehetne az irattípust egyfajta legördülő listából kiválasztani. Jelenleg alt+le nyíllal választom ki, vagy beírom az első 1-2 betűt. - Nem nem jött be az adatok - érvényesítés - beállítások fülön a Megengedve (lista), majd forrás megadása. + legördülő lista bepipálása. - Ugyanis szeretném minimalizálni az egerezést, és itt hiába gépelek be bármit, nem működött.
3. Dupla egér kattra nem lehetne elindítani a makrót? Ne kelljen állandóan kombózni? Azaz adott cellára duplán kattintok, hívja be a pdf olvasót. 4. hogy tudnám kiírni egy bat fájlba az excel tartalmát (csak a kívánt területtel)? Megspórolhatnám a copy paste wordpad++ makrós pucolást.
Excel tudom, hogy sosem fog fájlokat átnevezni, ezért kellene nekem egy külső bat fájlt kreálni és elindítani. Ebből adódik az ötös kérdésem
5. hogy tudnám elindítani excelből az elkészült bat fájlt, hogy lefuthasson, átnevezve a pdf fájlokat?
Szia! Ez drasztikusan gyorsabb! Csak nem értem, hogy működik. A Rng.Formula= olyan benyomást kelt bennem, mintha teleírná a munkalapot... Mit csinál ez tulajdonképpen?