Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 63605 Skopiuj do schowka automatyczne zapisanie pliku na kilku platformach
Autor Wiadomość
rafi_22
forumowicz


Posty: 17
Wysłany: 28-12-2018, 11:06   automatyczne zapisanie pliku na kilku platformach

Witam,
czy jest możliwe skonfigurowanie excel, aby automatycznie zapisywal plik w kilku lokalizacjach, mam na myśli dysk lokalny, dysk google, one drive?

Dzięki
ID posta: 359158 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Pomógł: 258 razy
Posty: 1395
Wysłany: 29-12-2018, 06:43   

Możesz wykorzystać taką konstrukcję VBA (do skopiowania do "Ten_skoroszyt"):
Kod:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim path As String

path = "E:\"

ActiveWorkbook.SaveCopyAs (path & ThisWorkbook.Name)
MsgBox "Kopia pliku została zapisana w " & path
End Sub
i odpowiednio ustawić sobie ścieżki.
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
I dbajmy - proszę - o poprawną polszczyznę.
ID posta: 359183 Skopiuj do schowka
 
 
rafi_22
forumowicz


Posty: 17
Wysłany: 29-12-2018, 08:51   

Dzięki za odpowiedź.
Jestem amatorem w Excelu i prosiłbym o dokladniejszy opis jak to zrobić.
ID posta: 359187 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Pomógł: 258 razy
Posty: 1395
Wysłany: 29-12-2018, 09:21   

Otwórz plik > Alt-F11 (otworzy się Edytor VBA) > odszukaj VBA Project (Nazwa_twojego_pliku) > rozwiń > 2klik na Ten_skoroszyt > wklej kod (bez frazy "Kod:").

Info: zmienna path przechowuje ścieżkę do lokalizacji w której chcesz zapisać kopię pliku. W przykładzie dałem dysk E - to jest mój dysk lokalny. Zmień w/g potrzeb (np. "D:\Dane\"). Jeśli chcesz zapisywać na dysku sieciowym to najlepiej go wcześniej zmapować >> Google.

Dla kilku kopii przepisz fragment kodu odpowiedzialny za zapisywanie np.:
Cytat:
path = "E:\"
ActiveWorkbook.SaveCopyAs (path & ThisWorkbook.Name)
MsgBox "Kopia pliku zostałą zapisana w " & path

path = "D:\Dane"
ActiveWorkbook.SaveCopyAs (path & ThisWorkbook.Name)
MsgBox "Kopia pliku zostałą zapisana w " & path

path = "X:\Kopie plików\"
ActiveWorkbook.SaveCopyAs (path & ThisWorkbook.Name)
MsgBox "Kopia pliku zostałą zapisana w " & path


Ważne: plik musisz zapisać jako .xlsm.

FYI: Kod wykorzystuje zdarzenie BeforeSave czyli wykona się po kliknięciu na "Zapisz"
a przed samym zapisem w oryginalnej lokalizacji.
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
I dbajmy - proszę - o poprawną polszczyznę.
ID posta: 359188 Skopiuj do schowka
 
 
Krzych1960 
świeżak


Posty: 7
Wysłany: 12-01-2019, 01:50   

Witam!
Mam pytanie jak zmienić kod, żeby zapisywał się podczas zamykania pliku ale jakiegoś konkretnego dnia?
ID posta: 360278 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 2613 razy
Posty: 8614
Wysłany: 12-01-2019, 03:06   

Krzych1960 napisał/a:
żeby zapisywał się podczas zamykania pliku
Dalej wykorzystuje się zdarzenie BeforeSave,a nie BeforeClose. gdyż ma powstać kopia tylko wtenczas, gdy w pliku nastąpiły zmiany, a nie z powodu zamykania pliku.
Należy sobie dodać warunek
Kod:
    If Date = DateSerial(2019, 1, 31) Then
      '...
      'tu zapis kopii pliku
      '...
    End If

Artik
_________________
Persistence is a virtue in the world of programming.
ID posta: 360280 Skopiuj do schowka
 
 
Krzych1960 
świeżak


Posty: 7
Wysłany: 12-01-2019, 03:16   

Jeśli chodzi o jakiś dzień to miałem na myśli coś w rodzaju np 1 dzień miesiąca lub ostatni, alb jakiś zakres dat np. przez 3 dni końca miesiąca. Przepraszam za niedoprecyzowanie założenia.
ID posta: 360281 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 2613 razy
Posty: 8614
Wysłany: 12-01-2019, 10:54   

Poćwicz
Kod:
Sub AAA()
    Dim dtLast      As Date
   
    'pierwszy dzień miesiąca
    MsgBox DateSerial(Year(Date), Month(Date), 1)

    'ostatni dzień miesiąca
    dtLast = DateSerial(Year(Date), Month(Date) + 1, 0)
    MsgBox dtLast


    'zakres dat
    If Date >= dtLast - 3 And Date <= dtLast Then
        MsgBox "Dzisiejsza data łapie się na zakres", , 1
    Else
        MsgBox "Dzisiejsza data jest poza zakresem", , 1
    End If

    If Date >= dtLast - 20 And Date <= dtLast Then
        MsgBox "Dzisiejsza data łapie się na zakres", , 2
    Else
        MsgBox "Dzisiejsza data jest poza zakresem", , 2
    End If

End Sub

Artik
_________________
Persistence is a virtue in the world of programming.
ID posta: 360286 Skopiuj do schowka
 
 
Krzych1960 
świeżak


Posty: 7
Wysłany: 12-01-2019, 14:32   

Dzięki Artik.
O coś takiego mi chodziło.
Duże piwo dla ciebie.
Pozdrawiam
ID posta: 360290 Skopiuj do schowka
 
 
Krzych1960 
świeżak


Posty: 7
Wysłany: 13-01-2019, 00:06   

A jak bym chciał konkretny dzień tygodnia np. sobota?
ID posta: 360327 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Pomógł: 258 razy
Posty: 1395
Wysłany: 13-01-2019, 02:15   

Kod:
If Weekday(Now(), vbMonday) = 6 Then
    'zapis pliku
End If
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
I dbajmy - proszę - o poprawną polszczyznę.
ID posta: 360331 Skopiuj do schowka
 
 
Krzych1960 
świeżak


Posty: 7
Wysłany: 13-01-2019, 15:33   

Dzięki umiejead bardzo się przydało
Piwko :clap
ID posta: 360370 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe