Keresés

Részletes keresés

Törölt nick Creative Commons License 2013.02.20 0 0 20486

Nem tudom mi lehet. Ha feltöltenéd a munkafüztetet valahova, szerintem nagyobb eséllyel tudna valaki segíteni.

Előzmény: wawabagus (20483)
Törölt nick Creative Commons License 2013.02.20 0 0 20485

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ó.

 

http://pastebin.com/L3wYMU8t

 

 

Előzmény: privateer (20484)
privateer Creative Commons License 2013.02.20 0 0 20484

Köszi mindenkinek aki írt.

 

Átrágom magam az eddig kapott infókon, és összerakok egy korrekt megoldást. 

Figyelembe véve többetek tanácsát, észrevételét.

Előzmény: Törölt nick (20481)
wawabagus Creative Commons License 2013.02.20 0 0 20483

Kedves Mindenki!

Van egy kis gondom.

Készítettem a remek riportot xlsx-ben. Jó sok automata grafikonnal.

A gond az, hogy valamilyen rejtélyes oknál fovba..ahányszor kinyitom újra a filet az excel gondol egyet és össze vissza méretezi a grafikont!

 

Felnagyítja, pedig senki sem kérte rá...minden elcsúszik-szétcsúszik.

 

Mi lehet a gond? Tök tanácstalan vagyok.

Be van állítva, hogy a cella méretének növelésével ne változzan a grafikon mérete...

 

Nem kéne ilyet csinálnia...

Van valami tippetek?

Előre is köszi!

J.

Törölt nick Creative Commons License 2013.02.20 0 0 20482

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?

Törölt nick Creative Commons License 2013.02.20 0 0 20481

Szeva,

 

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.

 

http://data.hu/get/6229736/atnevezo_mod3.zip

Előzmény: privateer (20475)
szláj70 Creative Commons License 2013.02.20 0 0 20480

Igaz, köszi. Azóta rájöttem Én is, és megoldottam, de vszínűleg átírom a Te általad javasolt generálásra, mert ez elegánsabb.

 

Előzmény: Retro Image (20447)
Retro Image Creative Commons License 2013.02.20 0 0 20479

Tökre nem is értem, hogy hogy jut valakinek eszébe batch fájlt generálni Excelből erre a feladatra :o))))

Előzmény: Retro Image (20478)
Retro Image Creative Commons License 2013.02.20 0 0 20478

VBA parancs fájl átnevezésére:

 

Name "D:akármi.pdf" As "D:valami más.pdf"

 

Bármilyen fájlkiterjesztéssel működik, nem pdf-specifikus.

Az elérési útvonalak is szabadon változtathatók, tehát átnevezés mellett/helyett másik könyvtárba is át lehet mozgatni a fájlt.

Csak annyi a megkötés, hogy a célkönyvtárnak léteznie kell.

Előzmény: privateer (20475)
privateer Creative Commons License 2013.02.20 0 0 20477

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.

Köszi a privát levelet aki átküldte az infót. 

Előzmény: privateer (20476)
privateer Creative Commons License 2013.02.20 0 0 20476

Ez sajnos win7 és office 2007 alól nem működött. :(

Még keresem a megoldást. De továbbra is szívesen veszem a javaslatokat.

http://msexcel.freeblog.hu/archives/2009/06/09/Fajlok_atnevezese_excel_programmal/ 

Előzmény: privateer (20475)
privateer Creative Commons License 2013.02.20 0 0 20475

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

 

Előzmény: Retro Image (20473)
KelemenGy Creative Commons License 2013.02.20 0 0 20474

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

Előzmény: Törölt nick (20468)
Retro Image Creative Commons License 2013.02.20 0 0 20473

Azt nem értem, minek nyitod meg a pdf-eket?

Amúgy Excelből simán lehet fájlokat átnevezni, nagyságrendekkel könnyebb, mint mondjuk Adobe Readert vezérelni.

Előzmény: privateer (20460)
Retro Image Creative Commons License 2013.02.20 0 0 20472

Azt próbáltad már, hogy day 1 helyére beírod, hogy 2013.02.19 18:00? Nekem úgy tűnik, hogy csak ennyi kell. 

Előzmény: lashodyes (20462)
Törölt nick Creative Commons License 2013.02.19 0 0 20471

Rendben.

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

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.

Előzmény: Törölt nick (20469)
Törölt nick Creative Commons License 2013.02.19 0 0 20469

Rémálom ez a fórum.

 

Nem lehet szerkeszteni.

Kilóg a sor vége az ablakból és nem lehet elolvasni, ha túl hosszú.

Nem lehet normálisan kódot bemásolni, mert ömlesztve értelmezi.

 

De legalább:

- egyszerű

- gyorsan betölt Magyarországon

- van

 

 

Ezt már egyszer kérdeztem, de nincs másik magyar exceles fórum?

Törölt nick Creative Commons License 2013.02.19 0 0 20468

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)

If Rng.Value <> "" Then _

Sheets(CStr(Rng.Value)).Range("B" & _

Rows.Count).End(xlUp).Offset(1, 0).Resize(, 6).Value = _

Rng.Offset(, -6).Resize(, 6).Value

Next Rng

 

Részletesen elmagyarázva:

- 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.

 

Remélem segítettem.

Előzmény: Törölt nick (20467)
Törölt nick Creative Commons License 2013.02.19 0 0 20467

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)

If Rng.Value <> "" Then _

Sheets(CStr(Rng.Value)).Range("B" & _

Rows.Count).End(xlUp).Offset(1, 0).Resize(, 6).Value = _

Rng.Offset(, -6).Resize(, 6).Value

Next Rng

 

Részletesen elmagyarázva:

- 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

 

Remélem segítettem.

Előzmény: KelemenGy (20464)
Sánta Kutya (SK) Creative Commons License 2013.02.19 0 0 20466

A replace kiiktatása nem is a sebesség miatt kell, csak a programozói egóm kívánja. :-)

Előzmény: Retro Image (20465)
Retro Image Creative Commons License 2013.02.19 0 0 20465

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))

Előzmény: Sánta Kutya (SK) (20461)
KelemenGy Creative Commons License 2013.02.19 0 0 20464

Azt csinálja, amit szeretnék, de van egy érdekesség. Ennél a sornál Subscript out of range-dzsel kiszáll ha a G oszlopban üres cellába fut:

 

Sheets(CStr(Rng.Value)).Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Resize(, 5).Value = _
        Rng.Offset(, -5).Resize(, 5).Value

 

Másik furaság, hogy csak akkor másolja át a sorokat, ha a B oszlopban a cella nem üres. Ezeket egyszerű megoldani, nem hagyunk üres cellákat :)

 

Azt még megkérdezhetem, hogy mit kell átírjak ahhoz, hogy a G oszlop celláit is másolja? Gondolom valahol a resize-ok körül lesz a megoldás.

 

A helységlapoknak is van fejlécük, az adatos sorok ott is a 4. sorban kezdődnek, ezt írtam át, így jót töröl:

 

Sh.UsedRange.Offset(1, 0).ClearContents 'kitöröl az első soron kívül mindent

 

helyett


Sh.UsedRange.Offset(3, 1).ClearContents 'kitöröl az első három soron és az első oszlopon kívül mindent

 

Egyébiránt nagyon gyorsan lefut.

Törölt nick Creative Commons License 2013.02.19 0 0 20463

Ezer köszönet. Nagy segítség volt. Valóban.

 

Esetleg a csoport név is lekérdezhető?

Előzmény: Retro Image (20444)
lashodyes Creative Commons License 2013.02.19 0 0 20462

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.

Sánta Kutya (SK) Creative Commons License 2013.02.19 0 0 20461

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.

Előzmény: Retro Image (20459)
privateer Creative Commons License 2013.02.19 0 0 20460

Sziasztok!

Nem írtam még ide sosem.  

 

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?

Mellékeltem az eddig elkészült excel táblám.
http://data.hu/get/6226455/fileatnevezo.rar 

Megjegyzem, hogy a makrónak meg kell adni az pdf olvasó helyét, hogy megtudja nyitni!

Retro Image Creative Commons License 2013.02.19 0 0 20459

Itt van újra, kommentekkel.

 

Sub b()
   Dim EndCell As Range, Rng As Range, LastCol As Range

 

   Set LastCol = Cells(1, Columns.Count).EntireColumn

   'Megkeresi az utolsó oszlopot a munkalapon (remélve, de nem ellenőrizve, hogy az nincs használatban :o))

   'Ezt az oszlopot segédoszlopként használjuk a továbbiakban


   Set EndCell = Range("A:A").Find(what:="XXX", After:=Range("A4"), LookIn:=xlValues, lookat:=xlWhole)
   If EndCell Is Nothing Then Exit Sub

   'Megkeresi az első XXX tartalmú cellát az A oszlopban, A4 után. Eddig kell elrejteni a kritériumnak megfelelő sorokat.

   'Legyen ez pl. az $A$129 cella.

   Set Rng = Range("A4").Resize(EndCell.Row - 4)

   'Ez definiálja  a teljes tartományt, amelyre a vizsgálatot el kell végezni (az A4-től az XXX előtti celláig). Pl. $A$4:$A$128

   Set Rng = Intersect(Rng.EntireRow, LastCol)

   'Ez definiálja az előbb meghatározott teljes tartománynak megfelelő cellákat az utolsó oszlopban.

   'Pl. Excel 2003 esetében az itolsó oszlo az IV, tehát a tartomány: $IV$4:$IV$128

 

   Rng.Formula = "=IF(OR(A4=""Eladások"",B4=""ÖSSZESEN"",B4=""valami""),1,SUM(G4,I4,K4,M4,O4))"

   'Az utolsó oszlop előbb meghatározott celláiba beletesz egy képletet, amely az elrejtendő sorokra nulla eredményt ad

   'A nem elrejtendő sorokra nullánál nagyobb számot.

 

   Rng.Copy
   Rng.PasteSpecial xlPasteValues

   'A képleteket irányított beillesztéssel értékre módosítja

 

   Application.CutCopyMode = False

   'Ez a sor nem kell :o)

 

   Rng.Replace what:="0", replacement:="", lookat:=xlWhole

   'Az értékek közül a nullákat (ezek jelölik az elrejtendő sorokat) lecseréli üres sztringre.

 

   Rng.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

   'Az üres sztringet tartalmazó sorokat egy lépésben elrejti.

   'Itt kimaradt a hibakezelés. Ha nincs üres cella, akkor hibát dob a program.

 

   Rng.ClearContents

   'Törli a segédoszlop tartalmát

 

   Range("A1").Activate

   'Visszahozza a fókuszt az A1-re, mert valahol időközben elmászott a segédoszlopra.

 

End Sub

 

 

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

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?

Előzmény: Retro Image (20427)
Törölt nick Creative Commons License 2013.02.19 0 0 20457

Ha nem a második sortól kezdődik az adatod a helységek munkalapjain, akkor megváltoztatom majd a kódot.

Előzmény: Törölt nick (20456)

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