Makro in preklic sporočila

Pomoč pri delu z MS Excelom
Odgovori
dragopre
Prispevkov: 105
Pridružen: To Dec 11, 2012 11:46 pm

Makro in preklic sporočila

Odgovor Napisal/-a dragopre »

Pripravil sem makro, ki prebere vse istovrstne datoteke iz ene mape in podatke iz teh datotek
prekopira v nov delovni zvezek v tabelo ( vsaka datoteka ena vrstica).
Makro zaganjam iz posebnega zvezka.
Imam pa naslednja vprašanja:
- Ko v makru zapiram datoteko (WB.close) dobim sporočilo "Ali želite shraniti spremembe...". Sporočilo se lahko pojavi velikokrat.
Rad bi datoteko zaprl brez shranjevanja. Ali lahko to naredim v makru brez, da dobim sporočilo?
- Ali lahko preberem (ugotovim) v katerem imeniku je trenutno odprta datoteka. Rad bi da se vse izvaja v mapi, od kjer sem zagnal osnovni zvezek.

Prilagam kodo.

Koda: Izberi vse

Sub PripraviPorocilo()
'
' Makro "PripraviPorocilo"
'   Prebere vse datoteke "Porocilo????.xlsm" v mapi in prepiše
'   podatke iz teh datotek v tabelo v novem poročilu.
'

  Dim StVr As Integer               ' Številka vrstice
  Dim wRow As String                ' Pozicija vrivanja vrstice
  Dim RangVr As String              ' Področje vrstice
  Dim Mapa As String                ' Mapa v kateri so datoteke
  Dim ZbirPor As Workbook           ' Nov zvezek "Zbirno porocilo"
  Dim ImePor As String              ' Ime novega poročila
  
  
  Mapa = "D:\Test\Joze\Arhiv"       ' Določim mpo, v kateri delam
  StVr = 5                          ' Začetna vrstiva tabele ( minus 1 )
  
  Set ZbirPor = Workbooks.Open("D:\Test\Joze\Arhiv\ZbirnoInit.xlsm")    ' Odprem "prazno" zbirno poročilo
  ZbirPor.SaveAs ("D:\Test\Joze\Arhiv\ZbirnoPor1.xlsm")                 ' Shramim z novim imenom
  ImePor = ZbirPor.Name                                                 ' Ime zbirnega poročila
  
  Dim Datoteka
  Datoteka = Dir(Mapa & "\Porocilo*.xlsm")                              ' Preberem spisek datotek - poročil
  Do While Datoteka <> ""                                               ' V zanki obdelam cel spisek
    Dim WB
    Set WB = Workbooks.Open(Mapa & "\" & Datoteka)                      ' Preberem naslednjo datoteko
    
    StVr = StVr + 1                                                     ' Povečam vrstico
    wRow = StVr & ":" & StVr                                            ' Lokacija vrivanja vrstice
    RangVr = "B" & StVr                                                 ' Lokacija kopiranja
      
    Windows(ImePor).Activate                                            ' Aktiviram Trenutno poročilo
    Rows(wRow).Select                                                   ' Določim lokacijo vrivanje
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Windows(WB.Name).Activate
    Sheets("Porocilo").Select
    Range("B4:AB4").Select
    Selection.Copy
    
    Windows(ImePor).Activate
    Range(RangVr).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Range(RangVr).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    WB.Close
    Datoteka = Dir
  Loop

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

Re: Makro in preklic sporočila

Odgovor Napisal/-a admin »

Pozdravljeni,
dragopre napisal/-a: - Ko v makru zapiram datoteko (WB.close) dobim sporočilo "Ali želite shraniti spremembe...". Sporočilo se lahko pojavi velikokrat.
Rad bi datoteko zaprl brez shranjevanja. Ali lahko to naredim v makru brez, da dobim sporočilo?
Takole:

Koda: Izberi vse

wb.Close saveChanges := false
dragopre napisal/-a: - Ali lahko preberem (ugotovim) v katerem imeniku je trenutno odprta datoteka. Rad bi da se vse izvaja v mapi, od kjer sem zagnal osnovni zvezek.
Takole

Koda: Izberi vse

thisworkbook.Path
lp,
Matjaž Prtenjak
Administrator
dragopre
Prispevkov: 105
Pridružen: To Dec 11, 2012 11:46 pm

Re: Makro in preklic sporočila

Odgovor Napisal/-a dragopre »

Hvala, že delam

Drago
dragopre
Prispevkov: 105
Pridružen: To Dec 11, 2012 11:46 pm

Re: Makro in preklic sporočila

Odgovor Napisal/-a dragopre »

Zdaj imam pa še eno željo.
Pri sestavi makra sem si pomagal z "Posnemi makro".
Vse lepo dela, moti me pa, ker je odpiranje datotek vidno ( datotek je lahko tudi več kot 100 ) in ekran ves čas "žmrka".
Ali se da odpiranje narediti "v ozadju", brez da se datoteka prikaže na ekranu, in le na koncu aktiviram ("pokažem")
novo sestavljen zvezek ?

Prosim za nasvet.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Makro in preklic sporočila

Odgovor Napisal/-a admin »

Pozdravljeni,

vaš problem je rešljiv z uporabo funkcije ScreenUpdate, ki lahko prepreči osveževanje ekrana. Poiščite po forumu ključno besedo ScreenUpdating in našli boste razlago. Še podrobnejšo razlago s primerom pa najdete na blogu.
lp,
Matjaž Prtenjak
Administrator
Odgovori