Stránka 1 z 1

Zápis makra VBA

Napsal: 09 led 2012 21:28
od fire150
Prosím skúsenejších o radu pomocou:

Kód: Vybrat vše

Private Sub Cmdexport1_Click()
'--------------------------------------------------
'Vytvorenie kopie aktivneho suboru do zlozky exporty
'Zlozka exporty sa vytvorí v zlozke aktivneho suboru
'---------------------------------------------------
Dim intWinCnt As Integer
Dim Win As Window
Dim strNovyNazev As String
Dim strCesta As String
Dim Fso As Object

'Kontrola, ci je aktivny nejaky zosit
'Plati pre umiestnenie v doplnku
intWinCnt = 0
For Each Win In Application.Windows
    If Win.Visible Then intWinCnt = intWinCnt + 1
Next
If intWinCnt = 0 Then
   MsgBox "Nie je aktívny žiadny zošit!", vbCritical
   Exit Sub
End If

'Kontrola, ci je aktivny zosit uz ulozeny
If ActiveWorkbook.path = vbNullString Then
   MsgBox "Súbor ešte nebol uložený!", vbCritical
   Exit Sub
End If

'Vytvori novy nazov v tvare: 'export' + 'meno aktívneho súboru'
strNovyNazev = "januar" & ActiveWorkbook.Name
'Uložení v složke aktivneho suboru
strCesta = ActiveWorkbook.path & "\exporty"
'Prípadně nastavit cestu natvrdo např.: strCesta = "C:\2012\exporty
'Nebo ve složce doplňku strCesta = ThisWorkbook.Path & "exporty"

If MsgBox("Nazdar Pišta. Chceš vytvoriť kópiu súboru " & ActiveWorkbook.Name & vbCrLf & _
"do zložky " & strCesta, vbInformation + vbYesNo) = vbNo Then Exit Sub

Set Fso = CreateObject("Scripting.FileSystemObject")
'Pokud složka exporty neexistuje, tak ju vytvoríme
If Fso.FolderExists(strCesta) = False Then Fso.CreateFolder (strCesta)

'Kontrola, zda již ve složce není soubor stejného názvu
If Fso.FileExists(strCesta & "\" & strNovyNazev) Then
   If MsgBox("Záloha s názvom " & strNovyNazev & " už existuje!!!" & vbCrLf & _
"   Chcete ju smazať a nahradiť novou zálohou?", vbInformation + vbYesNo) = vbYes Then
      Kill strCesta & "\" & strNovyNazev
   Else
      Set Fso = Nothing
      Exit Sub
   End If
End If

'Uložení kopie souboru
ActiveWorkbook.SaveCopyAs Filename:=strCesta & "\" & strNovyNazev

Set Fso = Nothing
MsgBox "Bola vytvorená záloha súboru " & ActiveWorkbook.Name & vbCrLf & _
"do zložky " & strCesta & vbCrLf & _
"s názvom " & strNovyNazev, vbInformation

End Sub


Ukladám kopiu zošitu. Potrebujem uloženie zálohy s meniacim názvom (podľamesiacov) - teraz je natvrdo zadaný názov mesiaca.
Nemôžem zab..a prísť na zápis aby názov ťahalo z iného listu konr.: "inedata!M1" (hodnota podľa výberu comboboxu)
Prešiel som veľa tu uverejnených návodov ale žiadny u mňa nefunguje. Vďaka (office2007)

Re: Zápis makra VBA

Napsal: 10 led 2012 12:25
od arasid
ten zosit som tu nenasiel, ale co keby si dany datum cerpal z jednej budky kde proste vlozis zoznam udajov (datumy) tam budes volit datum, ktory z danej bunky nacitavat makro..

Re: Zápis makra VBA

Napsal: 10 led 2012 16:19
od fire150
Zošit tu nie je je moc veľký ale prikladám test. ako by to malo vyzerať:
Po výbere mesiaca z combo neviem zapísať do uvedeného makra aby sa ten záložný súbor - export pomenoval podľa hodnoty v bunke inedata!M1 ( napr. januartest.xlm, februaartest.xls...)

Re: Zápis makra VBA

Napsal: 10 led 2012 16:30
od cmuch
Ahoj,
použij toto:

Kód: Vybrat vše

strNovyNazev = Sheets("inedata").Range("M1") & ActiveWorkbook.Name

Re: Zápis makra VBA

Napsal: 10 led 2012 20:03
od fire150
OK. Super práca zdá sa že funguje. Ešte malý dotaz, je možné po exporte zmazať vybrané rozsahy po zápise v konkrétnom mesiaci - aby na další zápis (mesiac ) ostali prázdne riadky . viď. pr.

Re: Zápis makra VBA

Napsal: 12 led 2012 07:11
od cmuch
zkus na konec makra vlozit následující.

Kód: Vybrat vše

Application.ScreenUpdating = False
   
Sheets("zapis").Select
Range(Range("A2"), Range("A2").SpecialCells(xlLastCell)).ClearContents
Sheets("List1").Select
   
Application.ScreenUpdating = True

Re: Zápis makra VBA

Napsal: 12 led 2012 11:40
od fire150
"Sánka dole šéfe" ide :thumbsup: . Ešte Vás zneužijem: Dá sa tam pridať výmaz viacerých listov? (v reálnom zošite je zápis z viacerých formulárov) lebo export je pre celý zošit, po skončení zadania dát, a ostanú tam údaje ktoré už další mesiac nevyužijem len zbytočne zaberajú miesto.

--- Doplnění předchozího příspěvku (12 Led 2012 11:41) ---

"Sánka dole šéfe" ide :thumbsup: . Ešte Vás zneužijem: Dá sa tam pridať výmaz viacerých listov? (v reálnom zošite je zápis z viacerých formulárov) lebo export je pre celý zošit, po skončení zadania dát, a ostanú tam údaje ktoré už další mesiac nevyužijem len zbytočne zaberajú miesto.

Re: Zápis makra VBA

Napsal: 12 led 2012 16:50
od cmuch
To klidně lze.

Stačí před
    Sheets("List1").Select
    Application.ScreenUpdating = True
vložit několikrát toto, podle toho kolik listů se bude mazat.
akorát se změní vždy název listu a třeba i oblast co se má mazat
- nyní je to tak že se smaže oblast od A2 po poslední buňku ctrl+end
    Sheets("zapis").Select
    Range(Range("A2"), Range("A2").SpecialCells(xlLastCell)).ClearContents

Re: Zápis makra VBA

Napsal: 12 led 2012 17:04
od fire150
Ok dík to ma napadlo aj je to funkčné len či náíhodou neexistuje jednodušší zápis, napr.: Sheets("list1","list2","list3").Select. Ale dík moc za rady. Pravdepodobne sa ešte ozvem lebo to čo robím je asi nad moje znalosti . Môžem ces SZ?

Re: Zápis makra VBA

Napsal: 12 led 2012 17:07
od cmuch
ad1) To nevím jestli něco takového eistuje, možná se někdo ozve jestli to jde.
ad2) To klidně lze.