Kopiowanie plików i folderów za pomocą VBA.

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ม.ค. 2025

ความคิดเห็น • 14

  • @GrzegorzPsk
    @GrzegorzPsk ปีที่แล้ว

    Dzięki, Tydzień kombinowałem i w końcu się udało przy pomocy twojego kodu zrobić prosty backup plików przed wykonaniem złożonych obliczeń miedzy plikami.

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว

      Dziękuję za komentarz i cieszę się, że film był pomocny w rozwiązaniu problemu :) Pozdrawiam

  • @makukantube
    @makukantube ปีที่แล้ว

    Świetnie wytłumaczone, czytelnie i przejrzyście. Spodziewałem się jednak że przeniosą się foldery, a przenosiły się zawartości folderów.
    Oczywiście foldery też można przenosić, czy jednak excel nie zajmuje się nie-danymi?

  • @jankowalski4364
    @jankowalski4364 ปีที่แล้ว

    czy automatycznie robią backupy czy trzeba uruchomić excela?

  • @sebastianbaczynski9306
    @sebastianbaczynski9306 ปีที่แล้ว

    Super sprawa :)
    Da się zrobić tak żeby nie kopiowało folderu jeśli już istnieje w lokalizacji docelowej?
    Próbowałem z

    If Dir("mojFSO", vbDirectory) = "" Then
    MkDir Path:="mojFSO"

    End If
    ale nie działa. Mimo wszystko kopiuje :/

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว

      Dzięki za komentarz.
      Poniżej prosty kod sprawdzający czy folder istnieje:
      Sub sprawdzamyIstnienieKatalogu()

      Dim objFso
      Set objFso = CreateObject("Scripting.FileSystemObject")

      Dim Katalog As String
      Katalog = "C:/Folder123"

      If objFso.FolderExists(Katalog) Then
      MsgBox "Tak, istnieje"
      Else
      MsgBox "Brak katalogu"
      End If
      End Sub
      Pozdrawiam

  • @marcin8810
    @marcin8810 2 ปีที่แล้ว

    Korzystam z VBA w Outlook i potrzebuję przejść do otwartego okna skoroszytu excel. Jak użyć Application?

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  2 ปีที่แล้ว

      Rozumiem, że chodzi Panu o to, aby móc za pomocą Outlook przekazywać (dodawać) informacje do otwartego pliku Excela?

    • @marcin8810
      @marcin8810 2 ปีที่แล้ว

      Właściwie to będzie końcowy etap kodu Outooka, który tylko przeniesie Activate do widoku otwartego już skoroszytu excela.
      Excel.Application ... Window ... Activate ???

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  2 ปีที่แล้ว +1

      Generalnie poszedł bym w stronę zdefiniowania zmiennej np. Dim ApkaExcel As Excel.Application a następnie ustawił ją na: Set ApkaExcel = GetObject(, "Excel.Application").
      Wtedy możemy odwoływać się np. tak:
      1 sposób: ApkaExcel.Workbooks(ApkaExcel.ActiveWindow.Caption).Activate
      2 sposób: ApkaExcel.ActiveWindow.Activate
      Co ważne, należy upewnić się, że jest włączona biblioteka "Microsoft Excel 16.0 object library" (Menu Tools -> References... -> odszukać powyższej biblioteki i ją aktywować -> kliknąć OK).
      Proszę przeanalizować poniższe kody. Powinny wskazać kierunek.
      'PIERWSZE MAKRO
      Sub UruchamianieExcela()
      Dim PlikXLS As Workbook
      Dim wb As Workbook
      Dim ApkaExcel As Excel.Application
      On Error Resume Next
      Set ApkaExcel = GetObject(, "Excel.Application")
      If Err.Number 0 Then
      Set ApkaExcel = Nothing
      End If
      On Error GoTo 0
      If ApkaExcel Is Nothing Then
      ' Excel nie został uruchomiony
      Set ApkaExcel = New Excel.Application
      Set PlikXLS = ApkaExcel.Workbooks.Open("C:\Users\sgodz\Desktop\IT STUDIO\WSPÓŁPRACA I OFERTY\AMCOR\POWER BI DESKTOP\PLIKI DLA UCZESTNIKÓW SZKOLENIA\polaczenieZbazaDanych.xlsm")
      ApkaExcel.ActiveWindow.Activate
      ApkaExcel.Visible = True
      ApkaExcel.Sheets(1).Range("A10") = "tekst"
      Else
      ' Excel uruchomiony ale wybieramy, który plik
      For Each wb In ApkaExcel.Workbooks
      If wb.Name = "Zeszyt1" Then
      'tutaj tekst, który będzie wykonywał coś w obrębie skoroszytu
      wb.Sheets(1).Range("A10") = "tekst"
      End If
      Next
      End If
      End Sub
      '2 DRUGIE MAKRO OTWIERA INSTANCJĘ EXCELA ZA POMOCĄ POLECENIA SHELL
      Sub OtwieramyApkeExcela()
      Dim Excel As Variant
      If Excel = 0 Then 'Aplikacja nie jest otwarta
      OdPoczatku:
      Excel = Shell("C:\Program Files\Microsoft Office
      oot\Office16\EXCEL.EXE", vbNormalFocus)
      Else
      On Error GoTo OdPoczatku
      AppActivate (Excel)
      End If
      End Sub
      Powodzenia.

    • @marcin8810
      @marcin8810 2 ปีที่แล้ว

      Dziękuję za propozycje. Będę rzeźbił w swoim kodzie.

  • @MrJezol83
    @MrJezol83 2 ปีที่แล้ว

    Życie mi ratujesz, a da radę aby żródło2 pobierało z komórki adres docelowy do kopiowania pliku.

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  2 ปีที่แล้ว +1

      Jak najbardziej tak :) Do zmiennej zrodlo2 przypisujemy wówczas adres komórki z podaniem nazwy arkusza. Np. zrodlo2 = Worksheets("NazwaArkusza").Range("A1")
      Jeżeli adres w komórce to tylko ścieżka do folderu bez nazwy pliku należy wówczas połączyć ją z "\" i nazwą pliku wraz z rozszerzeniem. Wzór:
      Worksheets("NazwaArkusza").Range("A1") & "\NazwaPliku.rozszerzenie"
      Przykład:
      Worksheets("Arkusz1").Range("A1") & "\Plik1.xlsx"
      Powodzenia

    • @MrJezol83
      @MrJezol83 2 ปีที่แล้ว

      @@smartexcel-s.godziszewski dziękuje