logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] VBA Excel: Automatyczne kopiowanie i zapis danych przy zamykaniu pliku

AJOT74 22 Kwi 2019 20:39 1587 4
REKLAMA
  • #1 17920572
    AJOT74
    Poziom 10  
    Posty: 116
    Pomógł: 1
    Ocena: 25
    A więc wygląda to tak:
    Mam pliki w Excelu z wykorzystaniem VBA, plików jest kilka, każdy umieszczony w innym folderze, ale jeden z nich będący tak jakby bazą informacji dla tych umieszczonych w folderach znajduje się w katalogu głównym -zresztą jego położenie nie jest istotne. Za pomocą VBA stworzyłem kod który zabrania jednocześnie otworzyć pliki umieszczone w folderach gdyż każdy otwierany plik otwiera automatycznie tą tak zwaną bazę, kopiuje dane i wstawia do otwieranego pliku po czym zamyka ten mój plik zwany bazą.
    Przy zamykaniu przechwytuję operację zamykania i kopiuję jeden z arkuszy do nowego pliku po czym go zapisuję jaką tą bazę, po czym ją zamykam i zamykam też otwarty plik. Wygląda to w ten sposób:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    Dim sciezka As String
    sciezka = ActiveWorkbook.Path
    
    Application.ScreenUpdating = False
     
    Arkusz3.Copy
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=sciezka & "\..\Baza.xlsx"
    Application.DisplayAlerts = True
    ActiveWorkbook.Close
    
    Application.ScreenUpdating = True
    
    ActiveWorkbook.Save
    
    End Sub


    Teraz jednak chciałbym, aby od czasu do czasu była możliwość zapisania tych dwóch plików jednocześnie, ale jest logiczne, że jak kliknę ZAPISZ to zostanie zapisany plik a nie jednocześnie plik podstawowy i plik bazy.
    Przy okazji zastanowiłem się nad tym, że gdybym chciał wykonać również ZAPISZ JAKO -też Excell powinien mi zapisać podstawowy plik i bazę.
    Da się to jakoś zrobić?
  • REKLAMA
  • #2 17920847
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    AJOT74 napisał:
    Teraz jednak chciałbym, aby od czasu do czasu była możliwość zapisania tych dwóch plików jednocześnie


    Dziwi mnie Twój kod :D w którym najpierw zamykasz (bez pytania) aktywny skoroszyt, a potem chcesz go zachować :?: :cry:

    Ale w kwestii wyboru sposobu zapisywania - to można wykorzystać kod typu:
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 17921853
    AJOT74
    Poziom 10  
    Posty: 116
    Pomógł: 1
    Ocena: 25
    Mój kod zamyka i zapisuje pliki bez pytania bo tak sobie życzyłem.
    Nie pytałem o to jak skorzystać z funkcji Select Case bo to akurat wiem,
    chodzi mi o to, że są na przykład:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range) -zareaguje gdy zmienimy położenie kursora;
    Private Sub Workbook_BeforeClose(Cancel As Boolean) -zareaguje w momencie zamykania pliku;
    Private Sub Worksheet_Change(ByVal Target As Range) -zareaguje po wprowadzeniu danych do komórki;
    itd. -moje pytanie czy w ten sposób można przechwycić ZAPISZ oraz ZAPISZ JAKO?
  • REKLAMA
  • #5 17922537
    AJOT74
    Poziom 10  
    Posty: 116
    Pomógł: 1
    Ocena: 25
    No i tego szukałem, szkoda, że wcześniej nie wpadłem na pomysł jak zapytać brata Google o to. Dzięki za pomoc.
REKLAMA