Makro za štetje besed v Wordu

Pomoč pri izdelavi makrov
Odgovori
Micka
Prispevkov: 54
Pridružen: So Maj 20, 2006 5:53 pm

Makro za štetje besed v Wordu

Odgovor Napisal/-a Micka »

Pozdravljeni!
Enkrat ste mi že pomagali, zato se ponovno obračam na vas :o
Najprej imam eno prav začetniško (ali pa tudi ne?) vprašanje in sicer o kodah, o katerih govorite v forumih. To so kode, ki se jih vnese v Microsoft Visual Basic program, ki se nahaja znotraj Worda? Jaz sicer posnamem makro z snemanjem, ne z direktnimi vnosi ukazov, ker jih sploh ne poznam.
Zdaj pa še moje drugo vprašanje: želim posneti makro, ki bi mi preštel znake (s presledki) v dokumentu, okno s preštetimi znaki bi bilo prikazano cca 5 sek, nato bi se dokument zaprl. To sicer ne bi bila taka težava, če bi to morala storiti samo v enem dokumentu, tako pa moram prešteti znake v 20 ali več dokumentih. Vsakega je potrebno odpreti (program Windows Commander), klikniti na Orodja, štetje besed, tako da bi se poznalo že, če bi bil en klik manj...Upam, da nisem bila predolga... Pa lp,
Micka :wink:
Micka
Prispevkov: 54
Pridružen: So Maj 20, 2006 5:53 pm

Odgovor Napisal/-a Micka »

Ah ja, sem pozabila dodati, preštete znake potem vnesem v Excelovo tabelo, kjer jih obdelujem naprej.

Hvala za odgovore in pomoč, M.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

1.
Ne, kode (če res mislite izraz KODE in ne KODA) niso makri v VBA-ju temveč kode polj, ki so v samem Word dokumentu. Najbolj uporabljana koda je npr. številka strani. Kode v wordu vidite, če pritisnete kombinacijo [ALT]+[F9], če pa to pritisnete še enkrat, pa zopet vidite vrednosti kod.

2.
Spodaj imate napisan makro, ki ga poženite v praznem EXCELOVEM (!) dokumentu. Makro vam v excelov dokument napiše VSE Word-ove dokumente, ki jih najde v neki izbrani mapi, v sosednjo vrstico pa vpiše število znakov s presledki. Mapo izberete tako, da ustrezno zamenjate tekst "c:\Moji Dokumenti" z neko vašo mapo.

Koda: Izberi vse

' www.matjazev.net
' 1.6.2006
Sub PrestejWordZnakeVMapi()
  Dim mapa As String
  Dim Vrstica As Long
  Dim Datoteka As String
  Dim objWrd As Object
  
  
  mapa = "C:\Moji dokumenti"
  
  Vrstica = 1
  Set objWrd = CreateObject("Word.Application")
  
  Datoteka = Dir(mapa & "\*.doc", vbNormal)
  Do While Datoteka <> ""
    Dim wFile
    
    Set wFile = objWrd.Documents.Open(mapa & "\" & Datoteka)
      Cells(Vrstica, 1) = mapa & "\" & Datoteka
      Cells(Vrstica, 2) = wFile.ComputeStatistics(wdStatisticCharactersWithSpaces)
    wFile.Close
    
    Datoteka = Dir
    Vrstica = Vrstica + 1
  Loop
  
  Set objWrd = Nothing
End Sub
lp,
Matjaž Prtenjak
Administrator
Micka
Prispevkov: 54
Pridružen: So Maj 20, 2006 5:53 pm

Odgovor Napisal/-a Micka »

Hvala za tako hitri odgovor! Prosim pa, če lahko stvar opišete bolj v stilu step by step :oops:
Hvala,
Micka
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Makro prekopirajte iz foruma v Excelov delovni zvezek oz. v VBA urejevalnik Excelove datoteke, popravite mapo (peta vrstica makra!) ter makro samo izvedite. To je vse.

Kam in kako prekopirati makro pa si preberite med pogostimi VBA vprašanji:
http://www.matjazev.net/pnew/index.php? ... index.html, predvsem prvo in drugo vprašanje.

Če pa še vedno ne gre, pa vprašajte bolj konkretno, kaj vas muči.
lp,
Matjaž Prtenjak
Administrator
Micka
Prispevkov: 54
Pridružen: So Maj 20, 2006 5:53 pm

Odgovor Napisal/-a Micka »

Porkaduš, čudež! Deluje :D
No, zdaj znam poleg dobrih kremšnit nardit še takšno stvar! Hvala za pomoč še 1x, sicer se pa gotovo še oglasim!

Lp, Micka
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Hm,

škoda, da se kremšnite ne dajo posredovati preko foruma... :D
lp,
Matjaž Prtenjak
Administrator
Micka
Prispevkov: 54
Pridružen: So Maj 20, 2006 5:53 pm

Odgovor Napisal/-a Micka »

Glede na razvoj IT se mi zdi, da tudi to ni verjetno kaj prav daleč... :)
Glede makra o štetju besed - kar je mimogrede, super pogruntavščina, ker tako pridobim gotovo pol ure, ki jih lahko porabim za branje novih kuharskih receptov, :D - pa imam še nekaj vprašanj:
1. Vaš makro mi prešteje samo wordove dokumente s končnico .doc, želela pa bi, da mi prešteje tudi dokumente s končnico .rtf, ki se nahajajo v isti mapi.
2. Po preverjanju sem ugotovila, da makro prešteje besede in ne znake s presledki.
3. Z VBA se zdaj sploh prvič seznanjam, zato me zanima, kako lahko ta makro shranim, naredim lično ikonco in da se mi pokaže pri zagonu Excela? To sicer znam naredit v Wordu, tako da grem na Po meri/Zavihek Ukazi, potem Makri, kliknem na desni moj makro, ga odnesem v orodno vrstico, spremeni izbor in to je to. V excelu pa mi pod makre pokaže ime le tega, ko grem pa v meni Orodja/Po meri, ga pa tam ni.

Že vnaprej hvala za odgovore, zdajle grem pa skuhat kavico :D

Lp, Micka
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

1.
Makro, ki vam ga bom napisal in bo bral še RTF bi moral imeti podfunkcijo za branje... A zakaj komplicirati, če pa vas zanima samo rezultat, torej:

Koda: Izberi vse

' www.matjazev.net
' 4.6.2006
Sub PrestejWordZnakeVMapi()
  Dim mapa As String
  Dim Vrstica As Long
  Dim Datoteka As String
  Dim objWrd As Object
 
 
  mapa = "C:\Moji dokumenti"
 
  Vrstica = 1
  Set objWrd = CreateObject("Word.Application")
 
  Datoteka = Dir(mapa & "\*.doc", vbNormal)
  Do While Datoteka <> ""
    Dim wFile
   
    Set wFile = objWrd.Documents.Open(mapa & "\" & Datoteka)
      Cells(Vrstica, 1) = mapa & "\" & Datoteka
      Cells(Vrstica, 2) = wFile.ComputeStatistics(wdStatisticCharactersWithSpaces)
    wFile.Close
   
    Datoteka = Dir
    Vrstica = Vrstica + 1
  Loop
 
  Datoteka = Dir(mapa & "\*.rtf", vbNormal)
  Do While Datoteka <> ""
    Dim wFile
   
    Set wFile = objWrd.Documents.Open(mapa & "\" & Datoteka)
      Cells(Vrstica, 1) = mapa & "\" & Datoteka
      Cells(Vrstica, 2) = wFile.ComputeStatistics(wdStatisticCharactersWithSpaces)
    wFile.Close
   
    Datoteka = Dir
    Vrstica = Vrstica + 1
  Loop

  Set objWrd = Nothing
End Sub 
2.
Preverite še enkrat, ker bi makro moral prešteti znake in presledki. Konstanta: 'wdStatisticCharactersWithSpaces' namreč pomeni 'Znake s presledki'...

3.
Poglejte še malo po forumu ali med pogostimi vprašanji na http://www.matjazev.net/pnew/index.php? ... index.html in če ne najdete odgovora vam bom še pomagal.
lp,
Matjaž Prtenjak
Administrator
Micka
Prispevkov: 54
Pridružen: So Maj 20, 2006 5:53 pm

Makro za štetje besed v Wordu

Odgovor Napisal/-a Micka »

Pozdravljeni ponovno!

Me veseli, da ste spet online :-)
Kar se pa tiče tegale makra, pa nekaj ne štima: namreč, javi napako "Compile error: Duplicate declaration in current scope".
Poleg tega označi
...Datoteka = Dir(mapa & "\*.rtf", vbNormal)
Do While Datoteka <> ""
Dim wFile...

Hvala in lp,

Micka
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pa še res je :cry:,

Je preveč samo spodnja deklaracija za wFile, a vam prilagam kar celoten makro :):

Koda: Izberi vse

'www.matjazev.net
' 4.6.2006
Sub PrestejWordZnakeVMapi()
  Dim mapa As String
  Dim Vrstica As Long
  Dim Datoteka As String
  Dim objWrd As Object
 
 
  mapa = "C:\Moji dokumenti"
 
  Vrstica = 1
  Set objWrd = CreateObject("Word.Application")
 
  Datoteka = Dir(mapa & "\*.doc", vbNormal)
  Do While Datoteka <> ""
    Dim wFile
   
    Set wFile = objWrd.Documents.Open(mapa & "\" & Datoteka)
      Cells(Vrstica, 1) = mapa & "\" & Datoteka
      Cells(Vrstica, 2) = wFile.ComputeStatistics(wdStatisticCharactersWithSpaces)
    wFile.Close
   
    Datoteka = Dir
    Vrstica = Vrstica + 1
  Loop
 
  Datoteka = Dir(mapa & "\*.rtf", vbNormal)
  Do While Datoteka <> ""
    Set wFile = objWrd.Documents.Open(mapa & "\" & Datoteka)
      Cells(Vrstica, 1) = mapa & "\" & Datoteka
      Cells(Vrstica, 2) = wFile.ComputeStatistics(wdStatisticCharactersWithSpaces)
    wFile.Close
   
    Datoteka = Dir
    Vrstica = Vrstica + 1
  Loop

  Set objWrd = Nothing
End Sub
lp,
Matjaž Prtenjak
Administrator
Micka
Prispevkov: 54
Pridružen: So Maj 20, 2006 5:53 pm

Odgovor Napisal/-a Micka »

Pozdravljeni,

makro se sedaj sicer izvede :) ,
vendar pa ne prešteje znakov s presledki, temveč besede :? . Ko grem v Wordu na Orodja/štetje besed, me zanima 4. vrstica (znaki (s presledki))

Hvala in lp,

Micka
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

hm, sem kar dolgo iskal, kaj bi lahko bilo narobe, ker meni, kot rečeno vse deluje pravilno... No pa sem našel :) in res je kar pravite, vam ta makro šteje besede, meni pa znake s presledki... Da vas ne utrujem s tehničnimi podrobnostmi... Na vrh kode, pred proceduro dodajte sledečo vrstico:

Koda: Izberi vse

Const wdStatisticCharactersWithSpaces = 5
Vaš makro mora sedaj izgledati takole:

Koda: Izberi vse

Const wdStatisticCharactersWithSpaces = 5

' www.matjazev.net
' 4.6.2006
Sub PrestejWordZnakeVMapi()
  Dim mapa As String

... in še veliko vrstic naprej ... 
lp,
Matjaž Prtenjak
Administrator
Micka
Prispevkov: 54
Pridružen: So Maj 20, 2006 5:53 pm

Odgovor Napisal/-a Micka »

No, pa poskusimo...
Micka
Prispevkov: 54
Pridružen: So Maj 20, 2006 5:53 pm

Makro za štetje besed v Wordu

Odgovor Napisal/-a Micka »

Neverjetno! Čista umetnost! :D :D :D Dela!

Hvala vam za tole, seveda sledi promocija vsem mojim znancem, kako je tam na internetu ena super stran, kjer je eden "brihten admin". :D

Hvala in lp,

Micka
Odgovori