Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi

Makri - nadaljevanje

  V Microsoft Excel-u bomo nadaljevali delo z makri ter se naučili oziroma spoznali nekaj osnovnih ukazov.
 
 
1
 
 
Najprej si preberite začetno lekcijo o makrih.

Odprite Microsoft Office Excel. Kliknite na Orodja, Makri, Posnemi nov makro.

Vpišite poljubno ime makra in kliknite OK.

Pričelo se je snemanje makra.
 
 
2
 
 
Sedaj v celico A1 vpišite neko besedilo naprimer "zmaga.com" ter pritisnite Enter.

Nato ustavite snemanje makra s pritiskom na modri kvadratek.    
 
 
3
 
 
Pritisnite Orodja, Makri, Makri..., izberite vaš makro ter pritisnite gumb Urejanje.

Odpre se vam program Microsoft Visual Basic v katerem lahko urejate vaše posnete makre.

Seveda lahko makre tudi napišete brez snemanja. Za to je potrebno znati programski jezik Visual Basic.
 
 
4
 
 
V oknu je sedaj izpisan vaš makro. Če pogledate se besedilo začne z Sub mojMakro () - to predstavlja začetek makra. Nato so izpisani komentarji  makra (vse za ' je komentar), nato je izpisana vsebina makra in na koncu je zapisano End Sub - konec makra.  
 
 
 
 
 
5
 
 
Torej vse med Sub in End Sub predstavlja vaš makro. Vsebina se glasi:
   
    ActiveCell.FormulaR1C1 = "zmaga.com"

    Range("A2").Select

Razlaga. ActiveCell pomeni aktivna celica to je bilo v tistem trenutku A1. FormulaR1C1 predstavlja vsebino te celice in za enačajem se glasi besedilo v dvojnih narekovajih. Range pomeni območje v oklepajih je zapisano ime celice ter Select pomeni izberi/aktiviraj to celico.
 
 
6
 
 
To so popolne osnove makrov. Poskusite posneti zahtevnejše makre ter jih poskušajte razumeti. Vse je v angleščini tako, da tukaj ne bi smelo biti problemov :).

Sedaj lahko tudi spremenite makro. Zamenjajte ActiveCell z Range("A1") tako boste točno definirali celico. Nato še spremenite besedilo med dvojnima narekovajema.

Pritisnite zeleno puščico zgoraj ali tipko F5. Makro se bo zagnal in izvedel vpisane ukaze.
 
 
7
 
 
Nazaj odpremo Excel in videli boste, da v celici A1 piše besedilo, ki ste ga prej vnesli med dvojne narekovaje.

Prav tako bo aktivna celica A2.
 
 
8
 
 
Seznam osnovnih ukazov:
  • ActiveWorkbook.Close 'zapre trenutni delovni zvezek
  • Range("A1").Clear 'izbriše text v celici A1
  • Application.Calculate 'prekalkulira zvezek
  • Application.Undo 'razveljavi
  • ...
Seveda je tega ogromno in lahko bi na zmagi.com odprli tudi kakšno rubriko o tem :).

Povem vam še en ukaz :

MsgBox "Obiščite www.zmaga.com"

Ta vam odpre sporočilo kjer se izpiše besedilo med dvojnima narekovajema.

Makri delujejo v vseh Office programih. Preizkusite. Raziskujte.
 
 
Komentiraj
 
 
 
 
 
21.8.2008, 11:12
Mene zanima, če se da narediti makro s katerim bi vsebine neke celice dodal na konec določenega stolpca oz. baze podatkov? Obrazec za vnos podatkov, ki ga vsebuje program Excel mi je preveč tog in premalo fleksibilen.
 
 
 
 
21.8.2008, 13:10
Seveda (če prav razumem). Predlagam, da vse česar ne veste ročno napisati posnamete. Kliknete na Orodja/Makri/Posnemi nov makro in ko se snemanj začne naredite kar bi radi. Ko ste končali kliknete Stop in makro je nared. Lahko pa vam ga tudi napišem vendar mi točno definirajte kaj?, kako?.
 
 
 
 
23.8.2008, 10:17
Snemanje makrov uporabljam na veliko, ne pa ravno pisanje kode, tu in tam jo le kaj malega uredim. Bi lepo prosil, če mi pokažeš kako se napiše koda za primer naveden v prejšnjem "postu". Rad bi da: podatke, ki jih vpišem v celice v eni vrstici, na primer; ime, datum, tip,... s pritiskom na gumb (ki mu seveda priredim makro) doda v tabelo (bazo podatkov), ki bi bila na drugem listu. Seveda se ti vnosi ponavljajo in je tabela vedno večja.
Sedaj uporabljam čarovnika za sledenje podatkov, ki ga je imel excel 2000, 2003 pa ga več nima! Le tega koristim kot obrazec za vnos, precej sem improviziral, deluje pa, a zelo nerodno. Škoda, da ne morem poslati primera, bi se bolje razumela!
 
 
 
 
23.8.2008, 19:18
Seveda lahko pošljete primer.Uploadajte ga na shrani.si in prilepite link. Sicer pa lahko vse naredite z makrom. Posnemite ga. Nato pa ga prilepite, da bomo uredili, da bo vedno prilepilo v naslednjo vrstico. Se pravi posnamite makro pri katerek označite celice jih kopirate in potem prilepite v tisti list. Priredili ga bomo tako, da bo potem vedno prilepil v prazno vrstico.
 
 
 
 
24.8.2008, 19:39
Mi lahko prosim napišeš samo vrstico kode, ki bo potem prilepila v naslednjo prazno vrstico. Dalje se bom sam znašel.

Hvala za odgovore in trud upam, da ne gnjavim preveč!
 
 
 
 
24.8.2008, 20:03
Ne ne, rad pomagam.

Dim i
i = 1
Do While Not Cells(i, 1).Value = ""
i = i + 1
Loop
MsgBox i


Pri Cells(i, 1) število ena ustrezno spremenite z zap. številko kolone.
 
 
 
 
24.8.2008, 20:04
Sicer pa za VBA je forum na matjazev.net/forum kjer vam lahko tudi pomagam.
 
 
 
 
24.8.2008, 20:16
Najlepša hvala!

Bom pa še z veseljem pogledal na matjazev.net/forum.
 
 
 
 
2.12.2013, 14:37
Lep pozdrav kljuka,

Mene zanima kako bi naredil v excel-u in mislim da v makru, da bi imel formule v "C1", "D1", "E1", ..., ki bi mi dajala različne rezultate. Sedaj bi mi pa excel ko bi bila formula spremenjena avtomatsko glede na vrednost teh celic pritisnil določene tipke oz. odprl določene programe?

Hvala za pomoč


changed: Freaak (2.12.2013, 14:37)
 
 
 
 
2.12.2013, 16:46
Ne razumem dobro. V čem je težava: v ustvarjanju formul, ki bi dajale različne rezultate, ali v pisanju makra, ki bi zagnal nek program?
 
 
 
 
2.12.2013, 17:28
V celicah C1, D1, E1 ... bi imel formule, ki bi prikazovale različne vrednosti glede na vnose v druge celice . Sedaj bi pa rad da bi excel prebral vrednost teh celih oz. morda tudi v odnosu 2 celic npr. AND(C1=20;C2=4) da zažene določen program ali naredi določeno kombinacijo tipk npr. CTRL + S ali CTRL + 1. Jaz bi npr. dodal na A40 vrednost, excel bi sam preračunal formule se pravi se vrednosti v C1,C2 D1 D2 E1 E2 spremenjijo in excel na podlagi tega avtomatsko odpre določen program ali kombinacijo tipk. (Vsaj upam, da je možno, da excel deluje tudi izven Excela).

Upam, da sem dobro razložil, Hvala.
 
 
 
 
2.12.2013, 21:41
Aha, razumem. Ključni ukaz, ki ga potrebuješ, je Shell. Z njim zaženeš želeno aplikacijo.

Primer:

Shell "explorer.exe"
Shell "C:\Program Files\Program\Program.exe"

Preverjanje vrednosti narediš s stavki if (ali case). (Če je tu težava, povej.)
 
 
 
 
2.12.2013, 22:18
Hvala,

Bolj bi potreboval, da se mi potem izvede kombinacija tipk (npr. CTRL + 1) ostalo bom pa probal sam stkati
Nisem še delal z makri, vendar predvidevam, da delujejo podobno kot sam excel.

Hvala
 
 
 
 
2.12.2013, 22:44
Ta kombinacija tipk se bi morala klikniti v nekem določenem programu? Hm. Poskusi z ukazom SendKeys.

SendKeys "^1"

Ta ukaz bo pritisnil CTRL+1. Podroben pregled tipk najdeš na: http://msdn.microsoft.com/en-us/library/....).aspx


Aha ... No, preberi si lekcije na zmagi in sporoči, ko se bo zataknilo.
 
 
 
 
12.12.2013, 23:23
Zanima me tudi ali je mogoče, da bi se določen makro začel s kombinacijo tipk? Se pravi imam 10 različnih makrotov, sedaj želim, da mi pritisne CTRL + 1, da izvede 1. Makro, CTRL + 2 , da izvede 2. Makro, ... ?

Hvala
 
 
 
 
13.12.2013, 19:27
Seveda.

Zgoraj odpri zavihek Developer/Razvijalec (če ga nimaš, pojdi v nastavitve Excela in označi tam, naj prikaže ta zavihek). Potem klikni levo Makri, izberi želeni makro, klikni Možnosti in tam določi bljižnico.
 
 
 
 
13.12.2013, 22:25
Super Hvala, imam vse podatke da sestavim kar potrebujem, če se zatakne pa www.zmaga.si

Hvala
 
 
 
 
8.2.2014, 13:30
Po dolgem času sem se odločil, da nadaljujem z datoteko, vendar sem ugotovil da se realno stanje močno razlikuje od pogleda, ki sem ga imel. Nikakor ne morem sestavit nič uporabnega, ker neznam niti pravilno formirati stavka (imam malo HTML znanja in osnovno za excel). Kljuka rabil bi osnovno formulo od A do Ž, kasneje jo bom že prilagajal.

Iz celice B1 in B2 bi rad prebral vrednost, če je 1 in 1 bi naredilo sendkeys (test uspešen, na preprostem primeru), če ni bi bilo bi prav tako naredilo sendkeys. Seveda bi ta If stavek uporabljal v samem sebi v x ponovitev (približno 20 B1 in 30 B2 različnih vrednosti in na vsako različico bi rabil poseben sendkeys).

Sem že probaval preko If...Then...Else Statement, ampak zelo neuspešno z branjem celice ter samo izvedbo in postavitev znakov.

Hvala za pomoč

UPDATE: Sem pravkar preveril program s katerim naj bi komuniciral in čudežno deluje, tako da bi namesto sendkeys bil ukaz za odprtje oz. zagon datoteke. (HVALA^2)


spremenjeno: Freaak (8.2.2014, 13:36)
 
 
 
 
8.2.2014, 15:05
Ne vem, ali prav razumem, pa vendar:


Sub Makro1()

If Range("B1").Value = "1" And Range("B2").Value = "1" Then
SendKeys "a"
End If

If Range("B2").Value = "1" And Range("B3").Value = "1" Then
SendKeys "b"
End If

End Sub
 
 
 
 
8.2.2014, 15:06
Oziroma pač SendKeys zamenjaš z ukazom Shell.
 
 
 
 
8.2.2014, 16:37
Odlično, je prebližek kar sem mislil, vendar ključne podatke sem dobil, tako da lahko nadaljujem. V kolikor se bo kaj ustavilo bom pa povprašal

Hvala
 
 
 
 
8.2.2014, 18:41
Spet problem

Prej sem probal pač z navadno komando da napiše 1 v celico v kolikor je izpolnjen izbor. Sedaj sem pa probal to še s funkcijo Shell, vendar vrag ne odpre druge datoteke kot .exe. Sem probal C:\Programi\firefox.exe Odpre, v kolikor random.txt ali kakšen drug format ne. Probal sem tudi Process.Start. Upam, da obstaja rešitev.

Hvala
 
 
 
 
8.2.2014, 19:39
Napiše kakšno napako?

Sicer pa: je pot datoteke prava?

Shell "C:\Program Files\Mozilla Firefox\firefox.exe"
 
 
 
 
8.2.2014, 22:19
Yp, Run-time error `5`: (uglavnem te črtice so ravne -..-)
Invalid procedure call or argument

Prav tako v kolikor dam file npr. Vici.txt.

Shell ("G:\Nova mapa\Documents\Vici.txt")

Jaz imam firefox pod C:\Programi\Mozilla Firefox\firefox.exe (prej se mi ni dalo pisati cele poti, ker je itak načeloma nepomembna), vendar mi le firefox odpre, ker je zgleda na .exe ostale datoteke, ki pa niso .exe pa ne odpre

Drugače imam Office 2010 in naj bi bil kao VB 2010 vendar pod About piše da je VB 7 verzija (vendar dvomim, da je tukaj vzrok).

Mislim, da naj bi bilo pravilno, vendar nevem zakaj ne izvede operacije

Hvala
 
 
 
 
8.3.2014, 18:38
Lep pozdrav,

Ponovno se mučim okoli programa. Že nekaj časa probam rešiti problem odpiranja datoteke, vendar nikakor ne gre. Imam namero z ukazom Shell (ali katerokoli drugo) odpreti datoteko s končnico .amk. Vendar se operacija ne izvede. Predvidevam ker končnica ni .exe. Sama končnica deluje na principu power pointove diaprojekcije, kjer se določen program sam zažene in izpelje. Sedaj pa me zanima, če bi bila kakšna možnost/funkcija, da bi usposobil povezavo med VB ter to datoteko?

Sem probal, da sem ustvaril Test.bat ter notri navedel povezavo do datoteke vendar pravtako ni zagnalo.

Hvala za pomoč
 
 
 
 
9.3.2014, 1:47
Windows, oz. bolj konkretno, program Explorer, za vsako končnico ve, kateremu programu pripada, zato dvoklik na datoteko povzroči zagon ustreznega programa.

Pri programiranju pa običajno ni tako. Ti moraš zato zagnati program, ki je zadolžen za odpiranje .amr datotek, zraven pa ime datoteke podaš kot parameter.

To lahko narediš tudi preko .bat datoteke, vendar moraš tudi tu zagnati program in nato ime datoteke podati kot parameter (običajno samo napišeš za imenom programa).
 
 
 
 
9.3.2014, 12:08
Sem probal odpreti tudi na zgoraj navedeni primer, se pravi Shell pa najprej pot do programa ter potem do datoteke, vendar neuspešno. Sedaj sem probal preko Shell odpreti Igro in Firefox uspešno. V kolikor uporabim pot do programa (ne do datoteke) pa mi ponovno napiše error 5 . V kolikor z dvoklikom odprem program se odpre, preko Excela pa nikakor. (V programu imam tudi avtomatsko nastavljeno za odpiranje z administratorskimi pravicami in testno sem probal tudi združljivost na 7) (Sam uporabljam 8.1).

Kadar imam odprt program in želim zagnati datoteko, se sama datoteka ne zažene (preprosto, samo opozori na že odprti program). Tudi pri poteh, ki sem jih navajal sem šel v mapo v katerem ji bil program zgoraj prekopiral pot ter tudi dodal polno s končnico na isti način, da bi bila pot 100% in to ponovil 2x.

Na spletu sem tudi nekaj gledal, da bi mogoče to bilo problem ( http://www.codeproject.com/Articles/1859.... ).

Osebno se mi o tem programiranju ne sanja veliko, želim imeti samo ukaz, da mi odpre to datoteko -..-

PS Update: V kolikor sem sedaj opazil ima ta program na ikonci v mapi spodaj mali znakec kot ščit z rumeno modro barvo. Če probam odpreti katerikoli ta program ga noče, v kolikor brez tega znakca hoče. Verjetno je to problem odpiranja

Hvala


spremenjeno: Freaak (9.3.2014, 12:12)
 
 
 
 
12.3.2014, 13:24
Kakšna ideja, kako bi odprl oz. kaj bi moral popraviti v windowsu, da bi lahko zagnal program?

Sem probal tudi, da sem vsem nastavil poln dostop pravic, vendar kljub temu kaže ščit zraven ikonce. Je pa ta ščit popolnoma identičen razen da je pomanjšan kot v meniju z desno tipko zraven Run as administrator.

Hvala
 
 
 
 
12.3.2014, 17:20
Evo, preko postopka ( http://www.sevenforums.com/tutorials/119.... ) mi je uspelo zagnati, da sem kar se ustavi v bližnjico prilepil v Shell funkcijo. Vendar ko sem dodal s presledkom povezave do datoteke se pa sama stvar ni izvedla. Je morda še kakšna varianta, da bi obšel blokado?
 
 
 
 
13.3.2014, 23:41
Evo, problem sem rešil tudi za datoteko, tako da sedaj Hvala Bogu dela tako kot želim.

Rešitev:

Video - http://www.youtube.com/watch?v=_WcWJlm_O....

Microsoftov program za Združljivost spremeni lastnosti osnovnega programa. Sedaj Shell funkcija preprosto dela z navezo "program dokument".

Ta rešitev je prav tako primerna za totalno obidenje rumeno-modrega ščitka oz. zagona programa, ki spremeni Windows okolje (zgornja povezava (2 objavi nazaj) samo naredi bližnjico).

Hvala za Pomoč, posebej kljuki


spremenjeno: Freaak (13.3.2014, 23:42)
 
Prijava in registracija
 
 
 
Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, vas na enkraten način spozna z različnimi svetovnimi jeziki, s podrobno obrazloženimi recepti prikaže čare kulinarike in vam prežene strahove pred domačimi opravili.
 
 
Poleg tega lahko prebirate poučne članke, ki so namenjene širjenju naše splošne razgledanosti ter preverite svoje znanje z priljubljenim in enostavnim sistemom za preverjanje znanja. Če med vsebinami, ki se dodajajo vsak dan, ne najdete želenega znanja, je za vaša vprašanja na voljo dobro obiskan forum, kjer lahko tudi aktivno sodelujete. V primeru, da bi radi svoje praktično znanje delili z ostalimi, pa to lahko storite preko preprostega vmesnika za dodajanje vsebin. Zmagajte z znanjem z Zmaga.com!