Excel VBA: Zapisz plik pod nazwą wskazaną w komórce

Поделиться
HTML-код
  • Опубликовано: 10 ноя 2024

Комментарии • 31

  • @jacek6371
    @jacek6371 Год назад +2

    Dziękuję, bardzo ułatwi mi pracę na plikach. Czy jest możliwość dopisania daty z innej komórki podczas zapisywania pliku?

    • @MalinaC
      @MalinaC  Год назад +1

      Hej, tak, można dokleić wartość tej komórki poprzez &. Tylko warto to wrzucić jeszcze w funkcję Format (działa analogicznie do excelowej funkcji Tekst). Np. ... & Format(Range("A1"), "yyyymmdd")

    • @jacek6371
      @jacek6371 Год назад

      @@MalinaC
      Dzień Dobry!
      Dziękuję za przesłaną informację, ja zrobiłem w ten sposób:
      NowaNazwa = ThisWorkbook.Sheets("Kosztorys").Range("Data").Value & ", " & ThisWorkbook.Sheets("Kosztorys").Range("Adres").Value & ".xlsm"
      Po uruchomieniu tego makra zapisuje się arkusz z data pobraną z danej komórki i aktualna nazwą z innej komórki.
      Mam jednak pytanie:
      Czy jest sposób, aby uruchamiając np. makro skopiować bieżący arkusz do innego otwartego pliku (jako kolejna zakładka) z nazwą pobraną z komórki?
      Nie wiem czy jasno napisałem o co mi chodzi :)
      Pozdrawiam
      Jacek K

  • @zdzisawsz1219
    @zdzisawsz1219 5 лет назад +1

    Super przykład do wykorzystania w codziennej pracy na arkuszach.

    • @MalinaC
      @MalinaC  5 лет назад

      Cudownie! Cieszę się, że się przyda :)

  • @kamilgrzeszczyk1315
    @kamilgrzeszczyk1315 4 года назад +1

    To chyba na moje zapytanie z 2018 powstało to nagranie^^
    To rozwiązanie jest jeszcze lepsze niż zapisywanie poprzez przycisk:)
    Usiłuje zrobić Kill warunkowe. Działa częściowo otóż kasuje mi albo każdy poprzedni plik, albo wcale. Mam plik matka o nazwie
    -Wycena Gotowych - z niego powstają kolejne pliki w których jest asortyment i dane klienta (nie chce by został usuwany po zamknięciu. Ten plik znajduje się w folderze "Zwykłe")
    -potem kolejna wersja dostaje nową nazwę i zostaje wysłana do jednego z 4 folderów: Wycena; Produkcja; Zakończone; Rozliczenie i z tych pierwszych trzech folderów chce by pliki były kasowane. Najczęściej plik trafia z folderu "Zwykłe" do folderu "Produkcja" potem do "Zakończ" na końcu do "Rozliczenie"
    Czy jest możliwe by Kill było warunkowe?
    U mnie problem polega na tym, że plik jak wędruje do konkretnego folderu to tam otrzymuje nową nazwę. I gdy ma postawiony warunek by nie kasował pliku o nazwie "Wycena Gotowych - 2.xlsm" to nie kasuje w ogóle . A gdy tego warunku nie ma to działa ładnie lecz usuwa mi ten plik "matka"

    • @kamilgrzeszczyk1315
      @kamilgrzeszczyk1315 4 года назад +1

      Chodzi mi po głowie takie rozwiązanie by kill robiło pętlę za każdym razem po zamknięciu pliku i nie wywalało błędu jak nie trafi na plik do usunięcia.
      Coś na zasadzie Jeżeli.Błąd. Możliwe jest coś takiego do zrobienia?

    • @kamilgrzeszczyk1315
      @kamilgrzeszczyk1315 4 года назад +1

      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      Dim StaraSciezka As String, NowaSciezka As String, Sciezka As String, Nazwa As String, _
      StaraNazwa As String, PierwotnaNazwa As String
      StaraSciezka = ThisWorkbook.Path
      NowaSciezka = ActiveSheet.Range("D16").Value
      Sciezka = ActiveSheet.Range("D16").Value & "\"
      Nazwa = ActiveSheet.Range("D22").Value & ".xlsm"
      PierwotnaNazwa = "Wycena Gotowych - 2.xlsm"
      StaraNazwa = ThisWorkbook.Name
      If NowaSciezka = StaraSciezka Then Exit Sub
      ThisWorkbook.SaveAs Sciezka & Nazwa
      If ThisWorkbook.Name "Wycena Gotowych - 2.xlsm" Then Kill StaraSciezka & "\" & StaraNazwa
      End Sub

    • @kamilgrzeszczyk1315
      @kamilgrzeszczyk1315 4 года назад +1

      Yes udało się!!! 5 dni i wieczorów i działa:). Mogłem 4 dni temu napisać to by szybciej mnie olśniło hehe.
      Nie wiedziałem, że po Else można podać parę linijek czynności (taki głupi błąd^^). Dzięki za materiały włącz reklamy to będę je oglądał chociaż w taki sposób zapłacę ;p
      If ThisWorkbook.Name = "Wycena Gotowych - 2.xlsm" Then
      ThisWorkbook.SaveAs Sciezka & Nazwa
      Else
      ThisWorkbook.SaveAs Sciezka & Nazwa
      Kill StaraSciezka & "\" & StaraNazwa
      End If

    • @MalinaC
      @MalinaC  4 года назад

      @@kamilgrzeszczyk1315 super, że sobie poradziłeś! Ja dopiero odczytałam. Czyli patrez: czeski błąd, ech... jaka czytałam to się zaczęłam dziwić: jak to if nie działa?! Nigdy bym na to nie wpadła na odległość :)

  • @excelisfun
    @excelisfun 5 лет назад +1

    Thanks, Teammate!!!!

    • @MalinaC
      @MalinaC  5 лет назад

      And thank You for continuous support :)

  • @redomoor6205
    @redomoor6205 3 года назад +2

    Dzięki, czegoś podobnego szukałem, ale to już sobie przerobię ;)
    EDIT: Jednak nie umiem ;/ co należy zmienić aby plik zapisywał się ale nie zamykał pliku?
    EDIT2: pokombinowałem i jest

    • @MalinaC
      @MalinaC  3 года назад

      Cieszę się, super, że sobie poradziłeś!

  • @stakos6606
    @stakos6606 3 года назад +1

    Witaj Droga Malinko! Super tłumaczysz i pięknie prezentujesz . :-) Czy zechciałabyś mi podpowiedzieć jak zastosować nazwę arkusza w nazwie pliku. w kodzie VBA. Słodko Cię pozdrawiam.

    • @MalinaC
      @MalinaC  3 года назад

      Stasiu, dziękuję :).
      A powiedz czy chodzi o to, by zapisać plik pod nazwą, która ma w sobie nazwę konkretnego arkusza?

    • @stakos6606
      @stakos6606 3 года назад +1

      @@MalinaC Malinko :-) dziękuję, że zainteresowałaś się moim zagadnieniem - tak sobie z nim poradziłem, oglądając kolejny raz Twój webinarium:
      Sub SentDyzur()
      '
      ' SentDyzur Makro
      '
      '
      Dim Sciezka As String, Okres As String
      Dim OutMail As Object
      Dim arkusz As String

      Sciezka = ThisWorkbook.Path & "\"
      arkusz = ThisWorkbook.ActiveSheet.Name
      If Okres = "" Then Okres = "okres"
      Range("N24").Select
      ActiveCell.FormulaR1C1 = "=SUM(R[-22]C:R[-1]C)"

      Columns("D:K").Select
      Range("K1").Activate
      Selection.EntireColumn.Hidden = True
      ActiveWindow.SmallScroll Down:=-12
      Range("A1:N25").Select
      Selection.SpecialCells(xlCellTypeVisible).Select
      Selection.Copy
      Columns("C:L").Select
      Selection.EntireColumn.Hidden = False
      Range("R1").Select
      Workbooks.Add
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
      SkipBlanks:=False, Transpose:=False
      Columns("F:F").EntireColumn.AutoFit
      Columns("E:E").EntireColumn.AutoFit
      Columns("D:D").EntireColumn.AutoFit
      Columns("C:C").EntireColumn.AutoFit
      Columns("B:B").ColumnWidth = 8.57
      Columns("B:B").EntireColumn.AutoFit
      Columns("A:A").EntireColumn.AutoFit
      Range("F2:F33").Select
      Selection.NumberFormat = _
      "_-* #,##0.00 [$zł-pl-PL]_-;-* #,##0.00 [$zł-pl-PL]_-;_-* ""-""?? [$zł-pl-PL]_-;_-@_-"
      Application.CutCopyMode = False
      ChDir "C:\Users\stako\OneDrive\Dokumenty"
      ActiveWorkbook.SaveAs Filename:= _
      "C:\Users\stako\OneDrive\Dokumenty\Dyżury\Wysłane\" & "Dyżur" & " " & arkusz & " " & "2021" & ".xlsx" _
      Application.Dialogs(xlDialogSendMail).Show

      ActiveWorkbook.Close



      End Sub
      pewnie nie jest to mistrzowski zapis procedury, ale spełnia moje oczekiwanie. :-)
      Bardzo serdecznie Cię pozdrawiam :-)

  • @ukaszszymczyk3564
    @ukaszszymczyk3564 3 года назад +1

    Super film

    • @MalinaC
      @MalinaC  3 года назад

      Super, bardzo się cieszę!

  • @piotrjankiewicz1335
    @piotrjankiewicz1335 5 лет назад +1

    Świetnie działa, fajne rozwiązanie :)

    • @MalinaC
      @MalinaC  5 лет назад

      Piotrek, bardzo się cieszę, że działa i że się przyda! :)

    • @piotrjankiewicz1335
      @piotrjankiewicz1335 5 лет назад +1

      @@MalinaC Jako pod procedura ale bardzo użyteczna :)

    • @MalinaC
      @MalinaC  5 лет назад

      @@piotrjankiewicz1335 Oho, to tym lepiej, bo do wielokrotnego użycia ;)

  • @joannakonieczna9027
    @joannakonieczna9027 2 года назад +1

    Super przydatne

    • @MalinaC
      @MalinaC  2 года назад

      Bardzo się cieszę 🥰👍

  • @annakonczak7503
    @annakonczak7503 5 лет назад +1

    Super! Wielkie dzięki! :-)

    • @MalinaC
      @MalinaC  5 лет назад

      Cieszę się :)

  • @arturoarcik5253
    @arturoarcik5253 5 лет назад +1

    Dzięki.

    • @MalinaC
      @MalinaC  5 лет назад

      :) Proszę bardzo :)

  • @ukaszlipinski5868
    @ukaszlipinski5868 4 года назад +1

    Przydatne, dzięki :)

    • @MalinaC
      @MalinaC  4 года назад

      Super, bardzo się cieszę 🙂