Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zamykanie plików Excel

Slawekm2006 13 Lut 2009 09:38 5783 7
  • #1 13 Lut 2009 09:38
    Slawekm2006
    Poziom 9  

    Witam,
    Makro ma za zadanie otwierać kolejne pliki Excel ,
    pobierać dane i je zamykać ( bez zmian).
    Jak należy napisać procedurę zamykania aby, nie było
    pytań :
    1. o zapisanie zmiany w pliku (proces pobierania danych z różnych arkuszy pliku)
    2. o rezygnacji z umieszczenia pliku w schowku - to jest trudne.

    cel - makro ma się nie zatrzymywać.
    pozdrawiam,
    slawek

    0 7
  • #2 13 Lut 2009 11:19
    adamas_nt
    Moderator Programowanie

    Można nagrać makro

    Code:
    Sub Makro1()
    
    '
    ' Makro1 Makro
    '

    '
        Workbooks.Open Filename:="C:\Users\Adam\Documents\Zeszyt12.xls"
        Range("A1:A3").Select
        Selection.Copy
        Windows("Zeszyt3").Activate
        Range("A1:A3").Select
        ActiveSheet.Paste
    End Sub


    I nieco je zmodyfikować
    Code:
    Sub proba()
    
        Plik1Nazwa = "Zeszyt12.xls"
        Set Plik1 = Workbooks.Open(Plik1Nazwa)
        Worksheets("Arkusz1").Range("A1:A3").Copy
        Windows("Zeszyt3").Activate
        Worksheets("Arkusz1").Range("A1:A3").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Plik1.Close SaveChanges:=False
    End Sub

    Resztę na pewno dokombinujesz sobie sam. Jeśli pliki są w różnych lokalizacjach trzeba podać pełną ścieżkę.
    Code:
    Set Plik1 = Workbooks.Open("C:\Katalog1\" & Plik1Nazwa)

    Można także (dla pewności) na początku wyłączyć ostrzeżenia
    Code:
    Application.DisplayAlerts = False
    i włączyć! na końcu
    Code:
    Application.DisplayAlerts = True

    0
  • #3 11 Paź 2009 21:29
    Smutny_k
    Poziom 2  

    Witam
    Mam pytanko bo w sumie robię coś podobnego z tym małym wyjątkiem że:

    Jak ominąć podawanie konkretnej nazwy pliku? Chodzi o to ze chce aby mi do arkusza zassało dane z komórek A1 ze wszystkich arkuszy znajdujących się np w folderze XXX ?

    0
  • #4 11 Paź 2009 22:32
    adamas_nt
    Moderator Programowanie

    :arrow: Smutny_k
    1. Na przyszłość: załóż nowy temat z odnośnikiem do starego (jak dasz "pomógł" pomagierom?)
    2. Popatrz na taką pętlę (ścieżka domyślna dokumentów użytkownika) i zamiast msgbox podstaw swoją procedurę.

    Code:
    Sub pliki_xls()
    
    katalog = Application.DefaultFilePath & "\"
    'katalog = "c:\xxx\" 'usuń pierwszą linię i wstaw po swojemu. musi być "\" na końcu.
    plik = Dir(katalog & "*.xls")
    Do While plik <> ""
        If Right(plik, 3) = "xls" Then
            MsgBox plik
        End If
        plik = Dir
    Loop
    End Sub

    0
  • #5 30 Mar 2014 00:36
    kieras007
    Poziom 8  

    Chciałbym się podpiąć pod pytanie.
    Chciałbym jednam żeby mój plik z makrem po zakończeniu procedury zamknął się?? czy to w ogóle możliwe??
    Kończę swoje makro poleceniem:
    ActiveWindow.Close SaveChanges:=False
    Zamyka mi się jednak wszystko ale sam excel (bez otwartego żadnego pliku) jest otwarty.

    1
  • #6 30 Mar 2014 04:23
    dt1
    Moderator - Komputery Serwis

    Spróbuj na końcu dopisać:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Jeśli chcesz bez zamykania aktualnego zeszytu wyłączyć całego excela, to poinstruuj go, że zeszyt jest już zapisany i nie trzeba pytać o zapisanie - taka linijka przed wyjściem z aplikacji powinna to załatwić:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #7 30 Mar 2014 09:58
    kieras007
    Poziom 8  

    żadna z tych komend nie pomaga

    0
  • #8 30 Mar 2014 10:19
    JRV
    Specjalista - VBA, Excel

    Witam
    W zdarzeniach skoroszytu
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Save
    End Sub
    po zakończeniu procedury (na koniec procedury)
    Application.Quit

    0