Tänään on 19.06.2018, 02:19.

Excel-tiedostojen läpikäynti makron avulla?

Strategiat, kertoimenlaskenta ja muut ohjeet/vinkit tänne.
Vastaa Viestiin
h
Jäsen
Viestit: 45
Liittynyt: 23.01.2004, 17:02
Pisteitä: 10

Excel-tiedostojen läpikäynti makron avulla?

Viesti Kirjoittaja h »

Minulla on kansioon Hutipetsit tallennettuna 100 kpl standardimuotoisia Excel-työkirjoja nimiltään: eiosuikuna0202.xls, eiosuikuna0302.xls jne.

Nyt haluaisin kätevästi ja nopeasti yhdistää näihin yksittäisiin tiedostoihin tallettamaani dataa yhteen työkirjaan. Data on aina samassa paikassa, vaikkapa soluissa A1...A10 tai vaihtoehtoisesti alueella A1…C10.

Data pitäisi myös mahdollisesti samalla transponoida, jotta sen saisi muotoon yhden asiakirjan data yhdelle riville tai sen ollessa aluemuodossa esim. kolmelle peräkkäiselle riville.

Olisi hyvä, jos koostetyökirjaan saisi mukaan myös lähdetiedostojen nimet, esim. nimi sarakkeeseen A ja data sarakkeisiin B…K.

Lähdetiedostot tulisi avata vuorotellen ja sulkea aina ennen seuraavan avaamista.

Onko ylipäätäänkään mahdollista laatia makroa tähän tarkoitukseen helpottamaan copypasteilua?

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


S.Mäenala
Avatar
Jäsen
Viestit: 1155
Liittynyt: 18.01.2011, 20:17
Pisteitä: 3621
Paikkakunta: Kamppi

Re: Excel-tiedostojen läpikäynti makron avulla?

Viesti Kirjoittaja S.Mäenala »

h kirjoitti:Minulla on kansioon Hutipetsit tallennettuna 100 kpl standardimuotoisia Excel-työkirjoja nimiltään: eiosuikuna0202.xls, eiosuikuna0302.xls jne.

Nyt haluaisin kätevästi ja nopeasti yhdistää näihin yksittäisiin tiedostoihin tallettamaani dataa yhteen työkirjaan. Data on aina samassa paikassa, vaikkapa soluissa A1...A10 tai vaihtoehtoisesti alueella A1…C10.
Data pitäisi myös mahdollisesti samalla transponoida, jotta sen saisi muotoon yhden asiakirjan data yhdelle riville tai sen ollessa aluemuodossa esim. kolmelle peräkkäiselle riville.

Olisi hyvä, jos koostetyökirjaan saisi mukaan myös lähdetiedostojen nimet, esim. nimi sarakkeeseen A ja data sarakkeisiin B…K.
Lähdetiedostot tulisi avata vuorotellen ja sulkea aina ennen seuraavan avaamista.

Onko ylipäätäänkään mahdollista laatia makroa tähän tarkoitukseen helpottamaan copypasteilua?
Kyllä on mahdollista ja tässä saat yksinkertaisen mallin:

1. Luo C -aseman juureen kansio Temp (C:\Temp) ja kopioi kaikki nuo 100 työkirjaasi sinne.
2. Avaa Excel'issä uusi tyhjä työkirja, klikkaa 2-napilla ensimmäisen välilehden nimeä (Sheet1) ja valitse View Code
(en valitettavasti tiedä mitä nämä ovat suomeksi...)
3. Kopioi koodi-ikkunaan seuraava koodi:

Koodi: Valitse kaikki

Sub MergexlFiles()

    Dim SrcBook As Workbook
    Dim fso As Object, f As Object, ff As Object, f1 As Object
    Dim nextrow As Long

    Application.ScreenUpdating = False
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.Getfolder("C:\Temp\")
    Set ff = f.Files

    For Each f1 In ff

        Set SrcBook = Workbooks.Open(f1)
        SrcBook.Worksheets(1).Range("A1:C10").Copy
        ThisWorkbook.Worksheets(1).Activate
        nextrow = Range("B1000").End(xlUp).Row + 1
        Cells(nextrow, 1).Value = SrcBook.name
        Range("B" & nextrow).PasteSpecial Paste:=xlPasteValues, Transpose:=True
        Application.CutCopyMode = False
        SrcBook.Close
        

    Next
    
    Cells(2, 11).Select
    Application.ScreenUpdating = True

End Sub
4. Suorita koodi (Run)

Siinä kaikki.
Koodi on kirjoitettu Excel 2010 -versiolla eikä mahdollisesti toimi kovin vanhalla Excel'illä. :wink:

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

“There are two kinds of forecasters: those who don’t know, and those who don’t know they don’t know.”
(J K Galbraith)

Minikommentit


h
Jäsen
Viestit: 45
Liittynyt: 23.01.2004, 17:02
Pisteitä: 10

Re: Excel-tiedostojen läpikäynti makron avulla?

Viesti Kirjoittaja h »

S.Mäenala kirjoitti: Siinä kaikki.
Koodi on kirjoitettu Excel 2010 -versiolla eikä mahdollisesti toimi kovin vanhalla Excel'illä. :wink:
Kiitos, olipa siisti esitys! Teki just sen, mitä tarkoitinkin myös kymmenkunta vuotta vanhalla Excel-versiollani.

Sen verran jäi vielä toivetta, että jos haluaisin koostaa taulukoista erilaisia tietoja eri kohdista, niin kuinka tuota kaavaa tulisi modifioida? Esimerkki:
- Lähdeasiakirjan nimi -> koostetaulukon sarakkeeseen A
- Ottelutieto lähdetaulukosta solusta B1 -> sarakkeeseen B
- 1X2-prosentit lähdetaulukosta alueelta A35…C35 -> sarakkeisiin C…E (suoraan)
- Tulosdataa lähdetaulukosta alueelta H40…H49 -> sarakkeisiin F…O (transponoiden)

… mahdollisesti rivinvaihto ja toinen tai useampikin matsi samasta lähdefilestä (kuitenkin haettavia matseja aina sama määrä kaikissa lähdeasiakirjoissa)

… asiakirjan vaihto ja samalla rivinvaihto

… tai mitä jos halutaankin tiedot koosteeseen sarakkeittain eli vierekkäin

Ajattelin tässä nyt sellaista varsin yleispätevää ohjetta, josta voisi tällainen tumpulampikin muokata ja rakennella oman palapelin aina kulloistenkin tarpeiden mukaan, sillä eihän sitä aina etukäteen tiedä, mitä seuraavaksi saa päähänsä alkaa räknäilemään.

Josko jaksaisit vielä laittaa noista jonkinlaista simppeliä esimerkkiä.

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


S.Mäenala
Avatar
Jäsen
Viestit: 1155
Liittynyt: 18.01.2011, 20:17
Pisteitä: 3621
Paikkakunta: Kamppi

Re: Excel-tiedostojen läpikäynti makron avulla?

Viesti Kirjoittaja S.Mäenala »

h kirjoitti:...Teki just sen, mitä tarkoitinkin myös kymmenkunta vuotta vanhalla Excel-versiollani.
Sen verran jäi vielä toivetta, että jos…
Anteeksi h, vähän pitkät vastauspiuhat täällä päässä.
Hyvä kun toimi Sinunkin versiollasi!
Valitettavasti aikaresurssit eivät salli kovin henkilökohtaisten palvelujen tarjoamista.

Koodaamisen kannalta hankalimmat kohdat noissa Sinun toiveissasi liittyvät juuri asiakirjojen pyörittelyyn. Sen osuuden tuo yo. koodaus hoitaa for … next -loopissa jo valmiiksi. Kun asiakirja on auki, kirjoitetaan sen käsittelyä koskeva koodi siis tuon loopin sisään, tietysti ennen sulkukomentoa Close.
Välilehden valinta suoritetaan Worksheets -komennolla. Yksittäisiin soluihin viitataan Cells(row,column) -määrityksellä ja alue määritellään Rangella. Kaikista näistä tuolla koodissa on jo valmis malli.
Loppu on vain copy/pastea.
VBA-koodauksen perusteet on suht helppo oppia muutaman tunnin itseopiskelullakin. Netistä löytyy sopivaa opiskelumateriaalia yllin kyllin jollakin vba tuts -tyyppisellä haulla. :wink:

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


h
Jäsen
Viestit: 45
Liittynyt: 23.01.2004, 17:02
Pisteitä: 10

Re: Excel-tiedostojen läpikäynti makron avulla?

Viesti Kirjoittaja h »

S.Mäenala kirjoitti: Valitettavasti aikaresurssit eivät salli kovin henkilökohtaisten palvelujen tarjoamista.

...VBA-koodauksen perusteet on suht helppo oppia muutaman tunnin itseopiskelullakin.
Kysymykseni ydinasia tuossa tosiaan tulikin eli tiedostojen vuoronperäinen läpikäynti, mikä on jo sinällään kannaltani ratkaiseva asia, kun tässä suurin piirtein "Hello Word" -tasolta lähdetään VBA-luuppia puskemaan. Täytyy jossakin sopivassa vaiheessa ottaa lapio kouraan, niin enköhän ohjeittesi pohjalta saa aikaiseksi vielä vaikka mitä...

Kiitos ja kumarrus!

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


Vastaa Viestiin

Palaa sivulle “Vedonlyöntikeskustelu”