..|| Blog || Produkti/Storitve || MExcel || MDodatki || 300 nasvetov ||..

Zagon macro-ja izven excela

Pomoč pri delu z MS Excelom

Re: Zagon macro-ja izven excela

OdgovorNapisal/-a admin » To sep 05, 2017 2:14 pm

Pozdravljeni,

Niste mi odgovorili na vprašanje. Ti skripti (programčka) nista za Excel, temveč sta pisana v programskem jeziku VBS oz. Visual Basic Script.

To pa pomeni, da morate program zapisati v datoteko in ji dati končnico VBS, potem pa jo zagnati iz ukazne vrstice.

Takole:
Koda: Izberi vse
Cscript zazeni.vbs [ime excelove datoteke]
lp,
Matjaž Prtenjak
Administrator
admin
Site Admin
 
Prispevkov: 3396
Pridružen: Sr jul 20, 2005 10:06 pm



Matjazev.NET
 

Re: Zagon macro-ja izven excela

OdgovorNapisal/-a ajk » To sep 05, 2017 9:50 pm

Se opravičujem če sem nejasno napisal. Res je tako kot ste napisali. Programček (skripta) je zapisan v VBS datoteko (Sales.VBS), ki jo potem zaženem z BAT datoteko v katerem je ukaz:
Koda: Izberi vse
@echo off
pause
cscript Sales.vbs "C:\Test\Book1.xlsm"
pause
Problem je da mi druga skripta (Sales.VBS) ne deluje. Javlja mi da makroja ni mogoče zagnati, ker ali ni makro na voljo v delovnem zvezku ali pa so vsi makroji onemogočeni. Za test sem uporabil isti excellov zvezek v katerem je isti makro kot v primeru ko uporabljam prvi programček (skripto) ki deluje. Tako da je makro na valjo in tudi makroji niso onemogočeni.

Sales.VBS ki mi ne deluje
Koda: Izberi vse
Set objExcel = CreateObject("Excel.Application")

objExcel.Application.Run "'C:\Test\Book1.xlsm'!List1.test"

objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing
ajk
 
Prispevkov: 48
Pridružen: So jan 01, 2011 10:20 pm

Re: Zagon macro-ja izven excela

OdgovorNapisal/-a admin » Sr sep 06, 2017 1:08 pm

Pozdravljeni,

Preverite ali je procedura test javna 'public' in potem jo kličite brez definicije lista, samo '[ime dz]!test'
lp,
Matjaž Prtenjak
Administrator
admin
Site Admin
 
Prispevkov: 3396
Pridružen: Sr jul 20, 2005 10:06 pm

Re: Zagon macro-ja izven excela

OdgovorNapisal/-a ajk » Sr sep 06, 2017 9:38 pm

Pozdravljeni

Zadeva deluje če naredim tako kot ste napisali, da izpustim definicijo lista. Sicer ne vem zakaj deluje brez tega me pa res zanima. Tam omenjate da naj preverim ali je procedura test javna. Ali to mislite na makro "test" v samem excelu? Kje pa bi se naj to nahajalo, ker jaz tega ne najdem.

Če lahko bi še nekaj vprašal. Imam isti primer kot je ta s katerim sem testiral s tem da mi makro iz tabele v excelu generira tekstovno datoteko. V kolikor zaženem z dvojnim klikom "programček.VBS" (ki zažene makro v excelu) stvar deluje in mi zgenerira tekstovno datoteko. V kolikor pa "programček.VBS" zaženem z BAT datoteko pa mi ne zgenerira tekstovne datoteke.

Pa še nekaj: ali bi se naj excel, ki vsebuje makro vedno shranjeval ko [ime].xlsm, mi v tem primeru zadeva ne deluje če ga shranim ko navaden xls ([ime].xls)

Hvala za odgovore
ajk
 
Prispevkov: 48
Pridružen: So jan 01, 2011 10:20 pm

Re: Zagon macro-ja izven excela

OdgovorNapisal/-a admin » Če sep 07, 2017 7:17 am

Pozdravljeni

ajk je napisal/-a:Zadeva deluje če naredim tako kot ste napisali, da izpustim definicijo lista.

Potem je vse OK

ajk je napisal/-a:Tam omenjate da naj preverim ali je procedura test javna. Ali to mislite na makro "test" v samem excelu?

Makro je stara in "zgrešena" beseda, ki se še vedno uporablja, ker je pač znana. V Excelu imate pač procedire (Procedure) ali/in funkcije (Function). Vsaka izmed njih pa je lahko javna (public) ali privatna (private) - če posebej ne specificirate dostopa, je javna

ajk je napisal/-a:Če lahko bi še nekaj vprašal. Imam isti primer kot je ta s katerim sem testiral s tem da mi makro iz tabele v excelu generira tekstovno datoteko. V kolikor zaženem z dvojnim klikom "programček.VBS" (ki zažene makro v excelu) stvar deluje in mi zgenerira tekstovno datoteko. V kolikor pa "programček.VBS" zaženem z BAT datoteko pa mi ne zgenerira tekstovne datoteke.

To je vprašanje za kankreten makro, ki ga ne poznam, zato vam ne morem pomagati

ajk je napisal/-a:Pa še nekaj: ali bi se naj excel, ki vsebuje makro vedno shranjeval ko [ime].xlsm, mi v tem primeru zadeva ne deluje če ga shranim ko navaden xls ([ime].xls)

Končnica xlsm je končnica excelovih delovnih zvezkov z makri od Excela 2003 dalje. Če imate delovni zvezek za Excel pred letom 2003 (takšen delovni zvezek ima liste, ki imajo 65000 vrstic, novi jih imajo 2.000.000), potem ga lahko shranite kot xls, sicer uporabljajte xlsm. To je to. Če veste da so notri makri, potem shranite kot xlsm in to je to.

Hvala za odgovore[/quote]
lp,
Matjaž Prtenjak
Administrator
admin
Site Admin
 
Prispevkov: 3396
Pridružen: Sr jul 20, 2005 10:06 pm

Re: Zagon macro-ja izven excela

OdgovorNapisal/-a ajk » Če sep 07, 2017 3:50 pm

Pozdravljeni

Najprej najlepša hvala za odgovore

ajk je napisal/-a:Če lahko bi še nekaj vprašal. Imam isti primer kot je ta s katerim sem testiral s tem da mi makro iz tabele v excelu generira tekstovno datoteko. V kolikor zaženem z dvojnim klikom "programček.VBS" (ki zažene makro v excelu) stvar deluje in mi zgenerira tekstovno datoteko. V kolikor pa "programček.VBS" zaženem z BAT datoteko pa mi ne zgenerira tekstovne datoteke.

To je vprašanje za kankreten makro, ki ga ne poznam, zato vam ne morem pomagati

Makro ni nobena skrivnost, samo upam da ne bo preveč kritik na njegov račun :)

Koda: Izberi vse
Sub test1()
indeks = 3
indeks1 = 3
For indeks = 3 To 500
    If Range("List2!B" & CStr(indeks)) <> "" Then
        Range("List3!B" & CStr(indeks1)) = Range("List2!B" & CStr(indeks))
        Range("List3!C" & CStr(indeks1)) = Range("List2!C" & CStr(indeks))
        Range("List3!D" & CStr(indeks1)) = Range("List2!D" & CStr(indeks))
        Range("List3!E" & CStr(indeks1)) = Range("List2!E" & CStr(indeks))
        Range("List3!F" & CStr(indeks1)) = Range("List2!F" & CStr(indeks))
        Range("List3!G" & CStr(indeks1)) = Range("List2!G" & CStr(indeks))
        indeks1 = indeks1 + 1
    End If
Next indeks

    indeks = 3
    indeks1 = 3
    pozicijaRE2 = 0
   
For indeks = 3 To 500
    If Range("List3!B" & CStr(indeks)) = "RE2" Then
    If Range("List3!B" & CStr(indeks + 1)) <> "RE3" Then
        pozicijaRE2 = indeks
       
        For indeks1 = indeks To 500
            If Range("List3!B" & CStr(indeks1)) = "RE3" Then
                pozicijaRE3 = indeks1
                indeks = indeks1
                Exit For
            End If
        Next indeks1
       
        Range("List3!H" & CStr(pozicijaRE2) & ":" & "H" & CStr(pozicijaRE3)) = "x*x"
    End If
    End If
   
'Range("List3!A1:B2") = Range("List3!A3:B4")
   
Next indeks


indeks = 3
indeks1 = 3

For indeks = 3 To 500
   If Range("List3!H" & CStr(indeks)) = "x*x" Then
        Range("List3!B" & CStr(indeks1)) = Range("List3!B" & CStr(indeks))
        Range("List3!C" & CStr(indeks1)) = Range("List3!C" & CStr(indeks))
        Range("List3!D" & CStr(indeks1)) = Range("List3!D" & CStr(indeks))
        Range("List3!E" & CStr(indeks1)) = Range("List3!E" & CStr(indeks))
        Range("List3!F" & CStr(indeks1)) = Range("List3!F" & CStr(indeks))
        Range("List3!G" & CStr(indeks1)) = Range("List3!G" & CStr(indeks))
        indeks1 = indeks1 + 1
   End If
 Next indeks
    Range("List3!B" & CStr(indeks1) & ":" & "G500").ClearContents
    Range("List3!H3:H500").ClearContents
   
    Sheets("List3").Select
   
    Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
    Rows("1:2").Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select
 
'   Shrani aktivni zvezek v isto mapo kot je Workbook in v format "ime zvezka".LOG
        ActiveSheet.SaveAs Filename:= _
            ThisWorkbook.Path & "\" & ActiveWorkbook.Name & ".LOG", FileFormat:= _
            xlTextPrinter, CreateBackup:=False
 
 
  ActiveSheet.Name = "List3"
 
  'Sheets("List3").Select
    'Sheets(ActiveSheet.Name).Select
    'Sheets(ActiveSheet.Name).Copy
    'ActiveWorkbook.SaveAs Filename:= _
        '"C:\temp" & ActiveWorkbook.Name & "_" & Date & ".xls", FileFormat:= _
        'xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
     'ActiveWorkbook.Close
   
   
    'ActiveWorkbook.SaveAs Filename:="C:\temp\Book1.xls", FileFormat:=xlNormal, _
        'Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        'CreateBackup:=False
    'ActiveWindow.Close
   
'ActiveWorkbook.Close (SaveChanges = False)
   
   
End Sub



Skratka ko poženem BAT datoteko
Koda: Izberi vse
@echo off
pause
cscript Sales.vbs "C:\Test\Book1.xlsm"
pause
mi ne generira tekstovne datoteke z [ime dz].log (brez končnice xls)

VBS datoteka pa je sledeča
Koda: Izberi vse
Set objExcel = CreateObject("Excel.Application")

objExcel.Application.Run "'C:\Test\Book1.xlsm'!test1"

objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing
ajk
 
Prispevkov: 48
Pridružen: So jan 01, 2011 10:20 pm

Re: Zagon macro-ja izven excela

OdgovorNapisal/-a admin » Če sep 07, 2017 5:05 pm

Pozdravljeni,

tole pa je tako konkretno in podrobno, da presega opcijo "zastonj pomoči". V kolikor želite vam lahko nudim plačljivo pomoč.
lp,
Matjaž Prtenjak
Administrator
admin
Site Admin
 
Prispevkov: 3396
Pridružen: Sr jul 20, 2005 10:06 pm

Re: Zagon macro-ja izven excela

OdgovorNapisal/-a ajk » Pe sep 08, 2017 11:03 pm

Pozdravljeni

Popolnoma vas razumem in se opravičujem če sem zašel v podrobnosti, vendar vseeno hvala za odgovore. A na osnovi mojih "problemov" lahko podate okvirno ceno za plačljivo pomoč?

Hvala
ajk
 
Prispevkov: 48
Pridružen: So jan 01, 2011 10:20 pm

Re: Zagon macro-ja izven excela

OdgovorNapisal/-a admin » So sep 09, 2017 10:26 am

Pozdravljeni,

Pošljite e-pošto na naslov info@matjazev.net in tam opišite, kaj potrebujete. Na podlagi tega vam bom lahko natančno povedal ceno in/ali ostale pogoje.

Ob tem je seveda bolje in priporočliveje, da vam kodo napišem jaz - na podlagi vaših potreb - kot pa da gledam in popravljam vašo kodo.
lp,
Matjaž Prtenjak
Administrator
admin
Site Admin
 
Prispevkov: 3396
Pridružen: Sr jul 20, 2005 10:06 pm

Prejšnja

Vrni se na Excel

Kdo je prisoten

Po forumu brska: 0 registriranih uporabnikov in 1 gost

cron