Hirdetés

2024. április 30., kedd

Gyorskeresés

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-11-13 08:31:56

LOGOUT.hu

A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.

Összefoglaló kinyitása ▼

Hozzászólások

(#24851) BenJoe80 válasza Delila_1 (#24847) üzenetére


BenJoe80
senior tag

Nem tudom mennyire marad így, de úgy néz ki sikerült megoldani.

Az érvényesítési oszlop (ahol a legördülő listák vannak) szélességét beállítottam 40-re, majd elmentettem és bezártam a táblázatot. Amikor újból megnyitottam, akkor a szélességet visszaállítottam az eredeti 5-re és mentettem. A legördülő lista szélessége azonban maradt.

Még egyszer nagyon szépen köszönök minden segítséget!

Megisznak egy deci pálinkát. Miért? "Olyan savam vót, meg köllet innom egy deci pálinkát, aszittem megbolondulok." Aztán megisznak négy liter bort. Miért? "Há' semmi savam nem volt má'!"

(#24852) Delila_1 válasza BenJoe80 (#24851) üzenetére


Delila_1
Topikgazda

Szívesen. :)

Vannak ilyen rejtélyes dolgok Office-éknál.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#24853) gaborlajos válasza Fferi50 (#24850) üzenetére


gaborlajos
csendes tag

Szia!

Ez sajnos nem oldja meg a gondomat, mert ez sok ember által használt(jelenléti ív), így automatikusnak kéne lennie. Másrészt ez a megoldás csak az alapadatokat tartalmazó oszlopot módosítja.

Köszönöm:

(#24854) Fferi50 válasza gaborlajos (#24853) üzenetére


Fferi50
őstag

Szia!

Két dolog:
1. Az automatizmus magától nem megy, meg kell neki mondani, hogy mit csináljon - pl. eseményvezérelten, vagy gombnyomással vagy stb.
2. Amit írtam, azt nem csak egy oszlopra lehet alkalmazni, hanem tartományokra is - és makróból meg lehet hívni lásd első pont.

Tehát, ha felteszel egy mintát és leírod, hogy mikor mit csináljon, akkor könnyebben tudunk segíteni.

Üdv.

(#24855) Mutt válasza tgumis (#24837) üzenetére


Mutt
aktív tag

Hello,

Ha csak akkor induljon a másolás, ha mindegyik másolandó cella ki van jelölve, akkor ezt próbáld ki:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const rngKijelol = "B2:B6" 'ebből a tarományból másolunk
Const wsCel = "Sheet2" 'erre a munkalapra másolunk
Dim rngMasolando As Range
Dim vSor As Long 'a cél munkalap utolsó sora
Dim arryAdatok As Variant

'megnézzük hogy ami ki van jelölve az mennyire fedi a másolandó tartományt
Set rngMasolando = Application.Intersect(Range(Target.Address), Range(rngKijelol))

'ha van fedés és az teljes, akkor mehet az utolsó sor meghatározása és az inverz másolás
If Not rngMasolando Is Nothing Then
If rngMasolando.Address = Range(rngKijelol).Address Then
vSor = Worksheets(wsCel).Range("A" & Rows.Count).End(xlUp).Row + 1
arryAdatok = rngMasolando.Value
Worksheets(wsCel).Range("A" & vSor).Resize(, rngMasolando.Rows.Count) = Application.Transpose(arryAdatok)
End If
End If
End Sub

Az elején vannak változók amiket igényszerint módosíts. Ahhoz a laphoz kell a kódot bemásolni ahonnan történik a másolás.

üdv,

A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

(#24856) gaborlajos válasza Fferi50 (#24854) üzenetére


gaborlajos
csendes tag

Szia!

Készítettem egy mintát, talán érthető lesz.
Az esemény bármire kiváltódhat, akár cella frissítésre is.

Üdv,

[ Szerkesztve ]

(#24857) Fferi50 válasza gaborlajos (#24856) üzenetére


Fferi50
őstag

Szia!

Te egészen biztosan tudod, hogy mit szeretnél. Amit leírtál, abból viszont nem derül ki - legalábbis számomra:
Az ide másolja át részen látom a dolgozók neveit kigyűjtve. Ezen kívül mit kellene még mellé gyűjteni? Gondolom a teljesített órák számát, amit talán a mind összesen óra oszlop tartalmaz?
Miért van két név oszlop?

Gondolat: A dolgozó neve oszlopra csinálsz egy irányított szűrést, egyedi értékekre, az ide másolja át oszlopba.
Ezután a dolgozók melletti cellákban egy szumha függvénnyel összegzed a hozzá tartozó órák számát.

Legalábbis, ha ezt szeretnéd.

Légy szíves igazold vissza, jól gondolom-e a "feladatot".

Még valami: Excel verziód száma és nyelve?

Üdv.

[ Szerkesztve ]

(#24858) gaborlajos válasza Fferi50 (#24857) üzenetére


gaborlajos
csendes tag

Szia!

Igazából semmi mást nem szeretnék, mint a többször is előfordulható dolgozók nevét, egymás alá íratni.Itt nem kell összesíteni semmit.Ez majd átkerül egy másik lapra a megfelelő helyre, az már nem gond. Azért van két oszlop mert abba is kerülnek nevek ugyan ezen elv alapján. Az Office 2015-ös, és magyar nyelvű.

Üdv:

(#24859) Fferi50 válasza gaborlajos (#24858) üzenetére


Fferi50
őstag

Szia!

Eddig teljesen világos és egy makróval meg is oldható, hogy ha valaki uj nevet ír be, az átkerüljön a nevek oszlopába.
De! Mi garantálja, hogy mindig ugyanazt a nevet írja be és nem "bénázik"?
Én inkább csinálnék egy érvényesítő listát a nevek oszlopába és onnan választatnám ki a nevet. Így biztosan nem lenne félreütés. Persze ehhez tudnod kellene a dolgozók nevét előre. Mi a véleményed?

Üdv.

(#24860) moklys1


moklys1
aktív tag

Sziasztok. Egy százalékszámításban kérnék segítséget.
Példa:
=A1/100*A2 (A1= 32,86. A2-ben van megadva egy szám: 10)
Még a fenti képletben azt szeretném ha az A1 ből (32,86) kivonná a kapott eredményt (3,29)
29,57 jönne ki ha jól számol.
Sajnos ezt csak két cellában tudom megoldani és egy képletben szeretném.

(#24861) alfa20 válasza moklys1 (#24860) üzenetére


alfa20
senior tag

Szia!

így próbáld meg: =SZUM(A1-(A1/100*A2))

[ Szerkesztve ]

"Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)

(#24862) moklys1 válasza alfa20 (#24861) üzenetére


moklys1
aktív tag

Köszönöm :) jó lett

(#24863) vigyori78


vigyori78
őstag

Sziasztok.
Volt egy régi táblázatom amiben volt külső hivatkozás (csatolás) ebből csináltam egy új táblázatot amiben már nincs külső hivatkozás,mégis feldobja az elején :

Az adatok hivatkozások-nál látom is a csatolást ezt hogyan tudom megkeresni melyik cella tartalmazza ?

Köszi.

(#24864) Delila_1 válasza vigyori78 (#24863) üzenetére


Delila_1
Topikgazda

2007-től Adatok | Kapcsolatok | Hivatkozások.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#24865) vigyori78 válasza Delila_1 (#24864) üzenetére


vigyori78
őstag

Köszi.

Az adatok hivatkozások-nál látom is a csatolást ezt hogyan tudom megkeresni melyik cella tartalmazza ?

Rákerestem az egész munkafüzetben : ([ ]) de nem talál semmit , megszakíthatom nyugodtan nem ha nem kell a hivatkozás ?

(#24866) Delila_1 válasza vigyori78 (#24865) üzenetére


Delila_1
Topikgazda

Most nem tudom megnézni, de valószínű, hogy ebben a menüpontban módosítani tudod a csatolást. Ha igen, akkor a saját füzetedet tallózd ki itt, arra kell átirányítanod a csatolásokat.

Másik módszer, hogy szögletes zárójelet keresel a füzetedben, és egyenként törlöd a külső hivatkozásokat.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#24867) repvez


repvez
addikt

Egy újabb egzotikus kérdésem lenne és , hogy van e rá viszonylag egyszerű megoldás amit halandók mint én is meg tudnak csinálni :)

Szóval azt gondoltam, hogy a google naptárban lévő bejegyséseket össze lehet e hozni valahogy egy excel táblával?
Tehát ha egy androidos telefonon vagy PC-n a naptárba beirok egy eseményt akkor az az excelben az arra a naphoz rendelt cellában megjelenjen mint szöveg amit utána már mint normális szöveg vagy adat tudok tovább feldolgozni az excelben.

Pl : Naptárban jan 9-re beirom, hogy találkozó, akkor mondjuk az B10 es cellában megjelenjen, hogy találkozó, amit utánna már bármilyen excel fügvénnyel további felhasználásra tehetem.

(#24868) gaborlajos válasza Fferi50 (#24859) üzenetére


gaborlajos
csendes tag

Szia!

Teljesen igazad van, de mivel akár néhány száz emberről is lehet szó, ezért listát készíteni nem reális alternatíva. Bízom benne, hogy annyira azért vannak értelmesek, hogy elfogadják az Excel által felajánlott nevet a kezdőbetű beírására. Ezért aztán elég lenne a kód is.
Köszönöm, hogy ennyit foglalkozol a problémámmal.

Üdv: G.L.

(#24869) lappy válasza repvez (#24867) üzenetére


lappy
őstag

Szia!
A GOOGLE segít! itt válogathatsz kedvedre :DD

Bámulatos hol tart már a tudomány!

(#24870) repvez válasza lappy (#24869) üzenetére


repvez
addikt

az lehet,de én ebből nem jövök rá, hogy is kéne nekifogni, meg amit a legtöbbet találtam az épp forditva exelből a naptárba frisit.
Meg még az sem tiszta, hogy autómatikusan leszinkronizálja magát az excel amikor megnyitásra kerül vagy minden egyes alkalommal le kéne menteni valahogy az adatokat a naptárból és ujra excelbe tenni?

(#24871) Fferi50 válasza gaborlajos (#24868) üzenetére


Fferi50
őstag

Szia!

A munkalapod kódlapjára a következőt írd be légy szíves:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("$D$1:$E$50")) Is Nothing Then Exit Sub
Application.EnableEvents = False
vanmar = Application.Match(Target.Value, Range("$H$1:$H$" & Range("H4000").End(xlUp).Row), 0)
If IsError(vanmar) Then
If IsEmpty(Range("H1")) Then
Range("H1").Value = Target.Value
Else
Range("H4000").End(xlUp).Offset(1, 0).Value = Target.Value
End If
End If
Application.EnableEvents = True
End Sub

A kódlaphoz úgy jutsz, hogy a munkalap fülön jobb egérgombbal kattintasz. Ott kiválasztod a kód megjelenítését. Ezután a lap második felében megjelenik egy lenyiló, general felirattal. Azt átváltod worksheet feliratra. Megjelenik egy Worksheet_SelectionChange sub. Ezzel ne törődj, alá másold be a fentieket.

Amikor a D1:E50 cellák valamelyikébe beírsz egy nevet vagy bármit, a cella elhagyásakor a H oszlopban megvizsgálja, hogy van-e már olyan beírás. Ha nincs, akkor utolsónak beírja. De betű szerint egyeznie kell a beírásnak!
Természetesen a tartományokat a magad képére formálhatod (ha 4000-nél több dolgozó lehet, akkor a 4000-es számot vedd nagyobbra).

Remélem valami ilyesmire gondoltál.

Üdv.

(#24872) KaliJoe


KaliJoe
csendes tag

Sziasztok,

Ki tudja, hogyan lehet érvényes formában speciális karaktereket bevinni makróba, úgy, hogy végül képletté lehessen átadni. Valahogy így:

...
str_COszlop = "=SZÖVEG(B" & Trim(str(lng_AktuálisSor)) & ";""nnnn"")"
...
Worksheets(str_DolgozóRövidNév).Range("C" & Trim(str(lng_AktuálisSor))).Formula = str_COszlop
...
vagy
str_HOszlop = "=HA(VAGY(E" & Trim(str(lng_AktuálisSor)) & "=0;D" & Trim(str(lng_AktuálisSor)) & "=0);0;(E" & Trim(str(lng_AktuálisSor)) & "-D" & Trim(str(lng_AktuálisSor)) & ")-G" & Trim(str(lng_AktuálisSor)) & ")"
...
Worksheets(str_DolgozóRövidNév).Range("H" & Trim(str(lng_AktuálisSor))).Formula = str_HOszlop

...
Az első példa tartalmaz olyan részletet, ahol " idézőjelet kellene bevinnem. Nem tudom, az helyes-e így, mindenesetre szintaktikailag nem minősíti hibának, evvel még elindul.
A második példa nem tartalmaz speciális karaktert... mégis azonos az eredmény, futás közbeni hibára fut, miszerint "Application-defined or object-defined error"...

Szóval, ki-mit-tud képletbevitel témában?

Ui.: Csak string képletek beírásával van bajom, a számokat tartalmazó képlet hibátlanul átmegy.

Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)

(#24873) tgumis


tgumis
tag

Sziasztok van olann az excelben hogy más más szeméjnek más más jogosúltságot engedéjzek?

(#24874) Wyll


Wyll
őstag

Sziasztok!

Elég fontos volna. Hogyan lehet VBA-ban ezt megcsinálni:

Szerintem így:

dstbook.Worksheets(1).Range("KELL").Copy
srcbook.Activate
kitoltendo.Select
ActiveSheet.PasteSpecial link:=True
Application.CutCopyMode = False

Csakhogy így nekem marhára nem cellahivatkozások jönnek létre. :F Pedig azt szeretnék.

[ Szerkesztve ]

Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll

(#24875) Fferi50 válasza KaliJoe (#24872) üzenetére


Fferi50
őstag

Szia!

Néhány megjegyzés:
Az idézőjeleket kétféleképpen viheted be a szövegbe:
1. Megduplázod az idézőjelet - ahogyan Te is tetted, ez teljesen szabályos forma
2. A CHR függvénnyel CHR(34) hozzáfűzésével - ezt nem kell duplázni!

A számváltozókat nem kell átalakítani a kifejezésekben:
&Trim(str(lng_AktuálisSor))
teljesen felesleges, egyszerűen beírhatod, hogy & lng_AktuálisSor

Továbbá: VBA-ban a cella formula tulajdonság képlettel való megadásakor kizárólag angolfüggvénynevek használhatók. Tehát nem HA, hanem IF, nem VAGY hanem OR és így tovább.
Ha magyar függvényneveket szeretnél használni akkor a cella formulalocal tulajdonságát kell beállítanod.
A második példád egészen biztosan ezért ad hibát.
Viszont, ha magyar nyelvű képlettel írod be VBA-ból a kifejezéseket, akkor nem lesz hordozható az excel táblád, mert nem magyar környezetben, vagy a tiedtől eltérő beállításoknál nem tudja értelmezni majd a képletet.

Ha lenne még kérdésed, írj bátran.

Üdv.

(#24876) Fferi50 válasza Wyll (#24874) üzenetére


Fferi50
őstag

Szia!

Ebben az esetben próbáld az adott cella formula tulajdonságát beállítani, azaz a képletet beírni a cellába, valahogy így:

srcbook.kitoltendo.formula="=" & dstbook.Worksheets(1).Range("KELL").Address(external:=true)

Az address tulajdonság external kapcsolója arra utasítja az excelt, hogy az adott cella teljes elérési útvonalát is tartalmazó címét adja meg - a hivatkozáshoz neked pont erre van szükséged.

Üdv.

[ Szerkesztve ]

(#24877) Wyll válasza Fferi50 (#24876) üzenetére


Wyll
őstag

Hmm, jó ötlet, nem tudtam, hogy a Range-nek address property-je is van :B
Valószínűleg csak otthon fogom tudni kipróbálni, ezért addig is egy kérdés:

"kitoltendo" és "KELL" ugyanolyan alakú, sokcellás (1sor magas, 25 cella széles) range-ek.
A copy-paste ehhez pont jó, mert a "kitoltendo" összes celláját beállítja, de van egy olyan érzésem, hogy a kitoltendo.formula -ra ez már nem lesz így igaz, hanem egyenként kell beállítanom... Egyetértesz? Ha igen, hogy csinálnád?

Amúgy(1): az enyém vajon miért nem működik? :F

Amúgy(2): itt van egy csávó, aki azt állítja, hogy bármennyire is furcsa, PasteSpecial helyett simán elég volna Paste-t használnom. Nyilván kipróbáltam, de így sem ment... :U Szerinted (is) hülyeség? Ha igen, akkor megy neki a mínuszpont ;]

[ Szerkesztve ]

Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll

(#24878) Fferi50 válasza Wyll (#24877) üzenetére


Fferi50
őstag

Szia!

Azért mégis próbáld meg a beillesztéses verziót a következőképpen:
kitoltendo.Select
ActiveSheet.Paste link:=True

Ennek így működnie kell.

Az én verzióm ilyen esetekre akkor működik, ha a forrás cellák és a cél cellák címei megegyeznek a két munkalapon (azaz pl A1:H1 mindkét lapon).
Ha ez nem így van, akkor a következőt javaslom:

kitoltendo.cells(1,1).formula="=" & dstbook.WorkSheets(1).range("KELL").cells(1,1)address(external:=true,rowabsolute:=false,columnabsolute:=false)
kitoltendo.formula=kitoltendo.cells(1,1).formula

Ez azért jobb szerintem, mint a copy mert nem használja a vágólapot.

Üdv.

(#24879) hengelhof válasza Fferi50 (#24576) üzenetére


hengelhof
senior tag

Sziasztok!

Én is beleütköztem ebbe az "Az objektum nem szúrható be." problémába. Utánanéztem, és ezt a megoldást találtam. Nekem bejött, és működik.

From other forums, I have learned that it is due to the MS Update and that a good fix is to simply delete the file MSForms.exd from any Temp subfolder in the user's profile. For instance:

C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\MSForms.exd

C:\Users\[user.name]\AppData\Local\Temp\VBE\MSForms.exd

C:\Users\[user.name]\AppData\Local\Temp\Word8.0\MSForms.exd

Of course the application (Excel, Word...) must be closed in order to delete this file.

(#24880) KaliJoe válasza Fferi50 (#24875) üzenetére


KaliJoe
csendes tag

Szia Fferi50,

Köszönöm, ez volt a megoldás.

Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)

(#24881) Fferi50 válasza hengelhof (#24879) üzenetére


Fferi50
őstag

Szia!

A Microsoftnak volt egy dec. 9-i office frissítése az ActiveX sebezhetőség megjavítása érdekében. Az "vágta haza" az aktivex használó programokat. De nagyon gyorsan feltették a megoldást.
Viszont amikor erről beszélgettünk a fórumon, akkor ez még nem volt nyilvánvaló.

Üdv.

(#24882) Agostino


Agostino
addikt

üdv

létezik amolyan bővített vlookup? összekötni két oszlopot nem gond, akkor viszont gondban vagyok ha az oszlopon belül például duplikált nevek is találhatók. a nev melletti következő oszlop persze tartalmaz már egy születési dátumot, tehát ezzel lehetne szűrni a duplikációból adódó gondot, csak nem tudom hogyan.

                          hey friend listen, i know the world is scary right now but its gonna get way worse

(#24883) Delila_1 válasza Agostino (#24882) üzenetére


Delila_1
Topikgazda

Egy üres oszlopban összefűzöd a nevet és a dátumot, és ebben az oszlopban keresel. Érdemes a két adat közé szóközt, alsó kötjelet, vagy más elválasztó karaktert tenni.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#24884) hengelhof válasza Fferi50 (#24881) üzenetére


hengelhof
senior tag

OK, csak gondoltam másnak is segítséget jelenthet, akinél felmerül ez a probléma.

(#24885) Agostino válasza Delila_1 (#24883) üzenetére


Agostino
addikt

oh és true, tényleg. :W :R

                          hey friend listen, i know the world is scary right now but its gonna get way worse

(#24886) gaborlajos válasza Fferi50 (#24871) üzenetére


gaborlajos
csendes tag

Szia!

Nagyon szépen köszönöm neked, kiválóan működik!
Szép az benne, ha lépésről lépésre követem még értem is. Még egyszer nagyon hálás vagyok Neked.
Üdv: G.L.

(#24887) Fferi50 válasza gaborlajos (#24886) üzenetére


Fferi50
őstag

Szívesen! :)

(#24888) pirit28


pirit28
csendes tag

Sziasztok !

EXCEL 2003

Az alábbi vba kód változtatásában kérném hozzáértő segítségét.
Ezt neten találtam ,változtattam rajta de még nem tökéletes és nem tudom ,hogyan folytassam tovább.
A feladata az ,hogy egy kiválasztott könyvtárban levő xls file-okat mégegyszer elmentse xls-ként ,hozzáadva a file nevéhez egy ok-t.
De pl ha a választott könyvtárban xlsx kiterjesztés is van, akkor leakad, megáll.
Meg ha a választott könyvtárban van több könyvtár is akkor az almappákban levő fileokat a választott könyvtárba menti,(főkönyvtár)
és nem oda ahol eredetileg van a file.
Megoldható-e, hogy a választott könyvtárban levő file-ok ,illetve a könyvtárak könyvtáraiban levő file-ok ugyan oda mentődjenek el, ahol eredetileg vannak az jóóó lenne.
Meg az hogy miért akad le azt sajna nem tudom.
A választ előre is köszönöm, és a megoldást is.

Sub Button1_Click()
Dim MyFolder As String
Dim myfile As String
Dim folderName As String

With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
If .Show = -1 Then

folderName = .SelectedItems(1)
End If
End With

myfile = Dir(folderName & "\*.xls")

Do While myfile <> ""
Workbooks.OpenText Filename:=folderName & "\" & myfile
ActiveWorkbook.SaveAs Filename:=folderName & "\" & Replace(myfile, ".xls", "ok.xls")
opened
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
myfile = Dir
Loop
End Sub

(#24889) air


air
nagyúr

Sziasztok!

Lenne egy olyan problémám, hogy ~300 db Excel munkafüzetet kellene egyesítenem egyetlen egy darab fájlba.
Ezek között van 97-2003-as xls és 2007-es xlsx is.
Hiába kerestem a neten használható lehetőséget csak egyet találtam. Ez az Excelben a "Munkafüzetek összehasonlítása és egyesítése" parancs lenne. Azonban ez a parancs a Menüszalagról nem érhető el, csak a Gyorselérési eszköztárra rakható ki. Ott viszont folyamatosan inaktív, vagyis használhatatlan.
Nem tudom elhinni, hogy egy ilyen problémát nem lehet 2 ujjmozdulattal megcsinálni. :F

Előre is köszönöm a segítséget.

Tintatartó, aligátor, búzavirág, csók, gyalupad, fogpiszkáló

(#24890) Fferi50 válasza pirit28 (#24888) üzenetére


Fferi50
őstag

Szia!

Úgy gondolom, az elakadás amiatt van, mert direktben xls kiterjesztésre van kondicionálva:
myfile = Dir(folderName & "\*.xls")
Ha más kiterjesztés is van, akkor így kellene:
myfile = Dir(folderName & "\*.xls*")

A mentésnél pedig ezt a sort kellene kiváltanod:
ActiveWorkbook.SaveAs Filename:=folderName & "\" & Replace(myfile, ".xls", "ok.xls")
úgy gondolom erre:
ActiveWorkbook.SaveAs Filename:= Replace(ActiveWorkbook.FullName, ".xls", "ok.xls")
Itt már nem probléma, ha a kiterjesztés pl. xlsx, mert csak az xls cserélődik ki.
A FullName már tartalmazza a teljes elérési utat is, ezért nem kell a folderName hozzá.

Üdv.

(#24891) Fferi50 válasza air (#24889) üzenetére


Fferi50
őstag

Szia!

Egyrészt, nem tudom, hogy a Munkafüzetek összehasonlítása és egyesítése menüpont azt csinálja-e amit szeretnél. Másrészt ki lehet tenni ezt is a menüszalagra, a testreszabásnál ki kell választanod, hogy minden parancsot szeretnél látni és akkor egyéni csoportba "át tudod tolni" a menüszalagra is.

Továbbá, mit értesz azon, hogy egyesíteni kellene egyetlen darab fájlba?
Azt, hogy az összes munkafüzetben levő összes munkalapot bele kellene másolni egy db munkafüzetbe,
vagy azt, hogy a munkalapokon levő adatokat valamilyen algoritmus szerint egy db munkafüzetbe össze kellene fésülni (pl. a Munka1 munkalapon levő cellák értéke a legutolsó előfordulás szerint legyen)?

Azért nem gondolod Te sem komolyan, hogy különböző verziókban leledző többszáz munkafüzet majd csettintésre átalakul egy munkafüzetté? Meg kell azért bizony dolgozni. Szépen sorban meg kell nyitogatni őket, majd elvégezni rajtuk/velük a szükséges műveletet (átrakni az "örökös" munkafüzetbe) és utána visszazárni.
Ezt egy nem túl nagy makró megcsinálja, ha tudod, hogy mit szeretnél.

Üdv.

(#24892) air válasza Fferi50 (#24891) üzenetére


air
nagyúr

Igen, tudom, hogy ki lehet tenni akár a gyorselérési eszköztárra, akár a menüszalagra. Ki is tettem, de mindenhol inaktív.
Azt gondoltam, hogy a különböző verziókat homogenizálni kell, de ez a kisebbik gond.
Ezek egy webes alkalmazás riportjainak exportált listái.
Minden fájlban egyetlen egy munkalap van, és azon x, y, z db sor.
A feladat, az összes fájlból a munkalap tartalmát összemásolni folytonosan, egymás után. Semmi flikk-flakk, csak egymásutáni másolás.
Sajnos, a kézzel történő összefűzés nem megoldható. 300 fájlnál ez még egy gyakorlott Excel felhasználónak is legalább 5 óra, ha csak 1 percet számolok fájlonként.
Makróval hogyan nyitogatok meg fájlokat, és hogyan mondom meg, hogy az egyikről x, a másikról y, és így tovább, különböző darabszámú sorokat másoljon át?

[ Szerkesztve ]

Tintatartó, aligátor, búzavirág, csók, gyalupad, fogpiszkáló

(#24893) Wyll válasza air (#24892) üzenetére


Wyll
őstag

Nem lehet, hogy egyszerre kell hogy megnyitva legyen legalább 2 file, és akkor aktiválódik a gomb?

Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll

(#24894) air válasza Wyll (#24893) üzenetére


air
nagyúr

Sajnos nem.
Próbáltam úgy is, ahogy a leírás szerint van. Viszont ez a leírás Excel 2003-hoz van, és frissebbet nem is találtam.

Tintatartó, aligátor, búzavirág, csók, gyalupad, fogpiszkáló

(#24895) Fferi50 válasza air (#24892) üzenetére


Fferi50
őstag

Szia!

Ez a gomb szerintem csak közös használatú munkafüzeteknél aktív.

Nem egészen világos még mindig: Adott 300+ fájl egy-egy munkalappal különböző számú sorokkal.
Az adott fájlból a munkalapon levő sorokat a "Főfájl" egyetlen munkalapjának az utolsó sorai után kell bemásolni?

Mindenesetre jó lenne, ha az összes fájl egy könyvtárban lenne. Akkor lehet egy viszonylag egyszerű makrót írni az összemásolásukra.

Most más dolgom van, de ha visszajövök, segítek, de írd meg lsz. jól értettem-e a feladatot.

Üdv.

(#24896) air válasza Fferi50 (#24895) üzenetére


air
nagyúr

"Az adott fájlból a munkalapon levő sorokat a "Főfájl" egyetlen munkalapjának az utolsó sorai után kell bemásolni?"

Pontosan erről lenne szó.
Az egy mappába elhelyezés nem gond. A fájlok neveiben a dátum szerepel, tehát mind egyedi nevű.

Előre is köszi.

Tintatartó, aligátor, búzavirág, csók, gyalupad, fogpiszkáló

(#24897) pirit28 válasza Fferi50 (#24890) üzenetére


pirit28
csendes tag

Szia Fferi50 !

Csak így egyszerűen, köszönöm ! Ez így már teljesen használható....ha még azt is valahogyan meg tudnád oldani ,hogy almappákban levő file-okat is figyelembe vegye, akkor lenne a tökéletes tökéletessége .

Köszönöm !

(#24898) Fferi50 válasza air (#24896) üzenetére


Fferi50
őstag

Szia!

Próbáld ki a következőt:
Sub osszerako()
Dim hova As Worksheet, fajlneve As String, usor As Long, xx As Integer
Set hova = ActiveSheet
fajlneve = Dir("*.xls*")
Application.EnableEvents = False
Do While fajlneve <> ""
xx = xx + 1
usor = hova.UsedRange.Rows.Count + 1: If usor = 2 Then usor = 1
Workbooks.Open Filename:=fajlneve, ReadOnly:=True
ActiveSheet.UsedRange.Copy Destination:=hova.Cells(usor, 1)
ActiveWorkbook.Close False
fajlneve = Dir()
If xx Mod 10 = 0 Then Application.StatusBar = "Másolva: " & xx & "db fájl!"
Loop
Application.EnableEvents = True
Application.StatusBar = False
MsgBox "A másolásnak vége, kérem, mentse el a fájlt!", vbInformation, "Fájlok összemásolása"
End Sub

Remélem segít.

Üdv.

(#24899) Fferi50 válasza pirit28 (#24897) üzenetére


Fferi50
őstag

Szia!

Az almappák miatt kicsit bonyolultabb, de rajta vagyok.

Üdv.

(#24900) KaliJoe


KaliJoe
csendes tag

Sziasztok,

Tud valaki trükköt vagy konkrét parancsot, amivel egy VBE makróban kijelölt (pl. Bármi.Select - tel kiválasztott) és / vagy beillesztett cellamegjelöléseket le lehet venni a cellákról? Vagyis olyan mintha ki lenne jelölve, aztán ESC gombot nyomna a felhasználó...

Ötlet? Parancs? Trükk?

[ Szerkesztve ]

Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.