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

Kopiowanie arkuszy pomiędzy plikami excela

30 Lip 2009 12:49 6673 5
  • Poziom 2  
    Witam serdecznie, zaczynam dopiero zabawę z makrami w Excelu i potrzebuję pomocy. Chcę napisać makro, które:

    - otworzy wskazany przez użytkownika plik (nie jest znana jego nazwa i ścieżka więc potrzebuję aby pojawiało się okno wyboru pliku) - to jest w help excela) (np.: PLIK1.xls)
    - następnie skopiuje wybrane arkusze (nazwa arkuszy się nie zmienia, np.: Arkusz1, Arkusz2) z otwartego pliku (PLIK1.xls) i wklei je do pliku z makrem na końcu.

    Będę wdzięczny za pomoc.

    Pozdrawiam :)
  • Poziom 31  
    szatta napisał:
    Witam serdecznie, zaczynam dopiero zabawę z makrami w Excelu i potrzebuję pomocy.


    Jako że zaczynasz polecam kurs Exela gdzie wszystko jest wyjaśnione. Link
  • Poziom 2  
    Dzięki, przejżę z pewnością wskazaną witrynę w poszukiwaniu rozwiązania tego i przyszłych problemów :)

    Jednakże, może ktoś pomogłby mi w poniższym problemie.
    Jest kod, który otworzy mi wskazany plik Excela, ale nie wiem co zrobić aby z tego otwartego pliku skopiować arkusze np.: Arkusz1, Arkusz2 i wkleić je na końcu w pliku z którego uruchamiałem makro.

    Sub Otwarcie_skoroszytu()
    Dim fd As FileDialog
    Dim vrtSelectedItem As Variant
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
    .Filters.Clear
    .Filters.Add "All files", "*.*"
    .Filters.Add "Excel", "*.xls", 1
    If .Show = -1 Then
    For Each vrtSelectedItem In .SelectedItems
    Workbooks.Open vrtSelectedItem
    Next vrtSelectedItem
    Else
    End If
    End With
    Set fd = Nothing


    Pozdrawiam
  • Poziom 40  
    Witam,
    A próbowałeś nagrać makro, a potem podpatrzeć kod który się wygenrował (ALT+F11) ? :) Przeniesienie arkuszy do innego pliku masz jak klikniesz na zakładkach (akrusz1 i arkusz2) prawym przyciskiem i wybierzesz przenieś.
  • Poziom 2  
    Tak, próbowałem i wszystko byłoby ok, tylko że w nim jest wskazana nazwa otwartego przez makro pliku, a teoretycznie jej nie znam.
  • Moderator Programowanie
    Ostatnio otwarty plik ma najwyższy indeks, więc wystarczy policzyć (Workbooks.Count). Pełną nazwę ze ścieżką możesz "wydłubać" zaraz za poleceniem Open. W przykładzie wstawiłem MsgBox'y w miejsce gdzie nazwę możesz przypisać do zmiennej
    Code:
    Sub Otwarcie_skoroszytu()
    
    Dim fd As FileDialog
    Dim vrtSelectedItem As Variant
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
    .Filters.Clear
    .Filters.Add "All files", "*.*"
    .Filters.Add "Excel", "*.xls", 1
    If .Show = -1 Then
    For Each vrtSelectedItem In .SelectedItems
    Workbooks.Open vrtSelectedItem
    MsgBox vrtSelectedItem 'TU pelna nazwa z Path'em
    Next vrtSelectedItem

    Else
    End If
    End With
    Set fd = Nothing
    MsgBox Workbooks(Workbooks.Count).Name 'TU nazwa ostatnio otwartego. Tę linię możesz wykorzystać gdziekolwiek

    End Sub