Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
сохранение файла в папку левее папки с макросом
 
здравствуйте! Для вас наверное этот вопрос легок, но  мне он давно не дает покоя. Суть вопроса такая:
сейчас я для сохранения файла использую папку которая находится там же, где и файл с макросом. Это выглядит так:
Код
Sub сохранение_новый()

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Application.ThisWorkbook.Path & "\" & CStr(Range("A4")) & "\" & CStr(Range("B4")) & "\" & Range("AC3") & ".xlsx", FileFormat:=51
 
Application.DisplayAlerts = True

End Sub
(файл с макросом в папке "приложения") и файл сохраняется по пути "D:\программа\работа\приложения\2017\3\"наименование файла"

а как сделать так, чтобы он сохранялся в папку левее, т.е. из папки "приложения" в папке "работа"?
"D:\программа\работа\2017\3\"наименование файла"

Это нужно для того, чтобы спрятать кучу шаблонов в папке"приложения", а сами файлы сохранялись бы уже в рабочую папку с программой. Подскажите плизз.)
архивация в определенную папку
 
Здравствуйте! пересмотрела, перепробовала кучу информации , но никак не получается решить проблему.
Нужно создать макрос архивации папки, и соответственно потом розархивации с последующей заменой существующих файлов.
ПапкаДляАрхивации = "ThisWorkbook.Path"
Папкасохранения архива -" ThisWorkbook.Path\приложения\архивы"
название архива -  "ThisWorkbook.Path & Format(Now, DD-MM-YYYY)"
Помогите пожалуйста!
Вот этот код, который я пыталась применить,  не работает
Код
Option Explicit
Const sWinRarAppPath As String = "C:\Program Files\WinRAR\WinRAR.exe"

Sub архивация()
 If FolderToRAR("ThisWorkbook.Path") Then
        MsgBox "Папка успешно заархивирована!"
    End If
End Sub 

Function FolderToRAR(sPath As String)
    Dim sArhiveName As String
    Dim sWinRarApp As String
    sPath = ThisWorkbook.Path
    sWinRarApp = sWinRarAppPath & " A -ep "
    sArhiveName = sPath & Format(Now, "DD - MM - YYYY") & ".rar"
    FolderToRAR = Shell(sWinRarApp & " """ & sArhiveName & """ """ & sPath \ приложения \ архивы & """ ", vbHide)
End Function
копирование выборочных динамических отфильтрованных столбцов
 
Здравствуйте! Не получается скопировать столбцы в таблицу на другой лист.
Есть таблица на листе"буфер".Количество строк изменяемое. Она фильтруется, а затем выборочные столбцы копируются в таблицу на лист "отчет"
Как должна выглядеть строчка копирования?
Код
t = Sheets("буфер").Cells(Rows.Count, 3).End(xlUp).Row
Sheets("буфер").Range(("A2:D" & t), ("F2:G" & t), ("J2:J" & t), ("L2:L" & t)).SpecialCells(xlCellTypeVisible).Copy
Sheets("отчет").Select
Sheets("отчет").Cells(3, 1).PasteSpecial Paste:=xlPasteValues

Вот эта моя проба выдает ошибку
Событие на изменение в ячейке: при совпадении названий отнять количество
 
Здравствуйте) Не могу правильно назначить событие, помогите пожалуйста.
Суть такая:
на Листе 1 табличка: Наименование и Количество
на Листе 2 строчка - Наименование и Количество
Нужно чтобы при изменении строчки на Листе 2 на Листе1 выполнилось действие - если совпадают наименования то от количества на Листе1 отнять количество на Листе2
Или накопление сделать в третьем столбце  - при совпадении названий суммировать на Листе1 количество, которое находится на Листе 2.. короче не знаю как лучше.
Пробовала и формулы и событие в листе.. и так и эдак.. но не получается самой сделать это.
вставка в UserForm данных с отфильтрованной таблицы
 
Здравствуйте! Я снова к вам за советом.
Есть UserForm с текстбоксами и листбоксом. И есть таблица, в которой нужно  отфильтровать диапазон на основании текстбокса1 UserForm, и затем вставить полученные значения в листбокс.

Подскажите, что не так с моим макросом?
Код
Private Sub UserForm2_Initialize()

Application.ScreenUpdating = False
Dim stRow As Long
Dim strName As String
Dim t As Integer
Dim Wbb As Workbook
strName = ThisWorkbook.Path & "\приложения\база\движение.xlsb"
Set Wbb = Workbooks.Open(strName)
Me.ListBox1.Clear
stRow = Wbb.Sheets("движение").Cells(Rows.Count, 5).End(xlUp).Row
With Wbb.Sheets("движение")
    .Cells(2, 5).AutoFilter Field:=5, Criteria1:=Me.UserForm2.TextBox1
    .Select
End With
Cells = SpecialCells(xlVisible)
 t = 0
    For r = 2 To stRow
    Me.UserForm2.ListBox1.AddItem ""
    Me.UserForm2.ListBox1.List(t, 0) = Wbb.Sheets("движение").Cells(r, 2).Value
    Me.UserForm2.ListBox1.List(t, 1) = Wbb.Sheets("движение").Cells(r, 8).Value
    Me.UserForm2.ListBox1.List(t, 2) = Wbb.Sheets("движение").Cells(r, 9).Value
    Me.UserForm2.ListBox1.List(t, 3) = Wbb.Sheets("движение").Cells(r, 10).Value
    Me.UserForm2.ListBox1.List(t, 4) = Wbb.Sheets("движение").Cells(r, 11).Value
    Me.UserForm2.ListBox1.List(t, 5) = Wbb.Sheets("движение").Cells(r, 15).Value
    Me.UserForm2.ListBox1.List(t, 6) = Wbb.Sheets("движение").Cells(r, 16).Value
    Me.UserForm2.ListBox1.List(t, 7) = Wbb.Sheets("движение").Cells(r, 17).Value
    
     t = t + 1
    Next
    Windows("движение").Close False
    Application.ScreenUpdating = True
End Sub
Изменено: ALANA - 03.03.2017 00:05:50
Не получается сохранить листы в файл
 
Здравствуйте!
У меня не получается сохранить листы в файл, при этом чтобы при сохранении не было ни макросов, ни кнопок, ни формул
Есть книга, в ней несколько листов, но нужно сохранить только три, в папку с названием из ячейки и название  нового файла тоже из ячейки
Подскажите пожалуйста, что не так в моем макросе?
Код
Sub СохранитьЛистыВФайл1()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim New_Wb As Workbook
    Set New_Wb = Workbooks.Add
    ThisWorkbook.Sheets(Array("сводная", "выводрем", "выводсм")).Copy
   New_Wb.Activate
New_Wb.SaveAs Filename:=Application.ThisWorkbook.Path & "\" & CStr(Range("L1")) & "\" & CStr(Range("M1")) & "\" & CStr(Range("N1")) & "\" & Range("O1") & ".xlsx", FileFormat:=51
ActiveSheet.Buttons.Delete
For Each cell In Sheets(Array("сводная", "выводрем", "выводсм")).UsedRange.Cells
   cell.Formula = cell.Value
Next cell

New_Wb.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Выполнено!"
End Sub
относительная ссылка на две папки левее
 
Здравствуйте!
Есть две абсолютные ссылки:
D:\склад\мой склад проба2\приложения\база\приход.xlsb
D:\склад\мой склад проба2\программа.xlsb

Подскажите пожалуйста как можно попасть из файла "приход.xlsb" в файл "программа.xlsb" не применяя диалогов, и используя относительные ссылки(на разных компьютерах может быть разное название диска)?
вставка в List Box диапазон данных с другой книги
 
Помогите пожалуйста доработать макрос. Моя задача создать прайс, который можно было бы вставить в любую книгу одной папки. Для этого я отдельным файлом создала файл с  формой "прайс". Данные в эту форму должны приходить с диапазона данных в другой книге, с листа который тоже называется "прайс". Но что то не получается..
Код
Private Sub UserForm_Activate()
Dim LastRow As Range
Dim strFName As String
Dim x As Integer
    
strFName = ThisWorkbook.Path & "\расход"
Workbooks.Open strFName
    Me.ListBox1.Clear
  
  LastRow = Workbooks("расход").Sheets("прайс").Cells(Rows.Count, 5).End(xlUp).Row
        x = 0
        For i = 3 To LastRow
            .ListBox1.AddItem ""
            .ListBox1.List(x, 0) = strFName.Sheets("прайс").Cells(i, 5).Value
            .ListBox1.List(x, 1) = strFName.Sheets("прайс").Cells(i, 6).Value
            .ListBox1.List(x, 2) = strFName.Sheets("прайс").Cells(i, 18).Value
            .ListBox1.List(x, 3) = strFName.Sheets("прайс").Cells(i, 19).Value
            .ListBox1.List(x, 4) = strFName.Sheets("прайс").Cells(i, 20).Value
            x = x + 1
        Next
        Windows("расход").Close
End Sub
Выборка из диапазона с фильтрацией и итогом
 
Здравствуйте! Помогите пожалуйста доработать макрос.
Имеется 1 лист "орасход" -  в нем сводный расход
2 лист "отчетрасход" -  в нем отображается расход за период по дате
работа макроса:
1. выбирает весь расход за период дат и вставляет в "отчетрасход"
2. сортирует по 1 критерию
3. суммирует формулой "суммеслимн" совпадающие критерии
4. фильтрует совпадающие критерии (их 2), оставляя по одному
5. подводит итог по сумме

Первые 3 этапа макрос выполняет замечательно, а дальше, начиная с фильтрования, дело просто швах.
Помогите плиззз доработать фильтровку и итог.
В примере на Лист 1 показано как это должно выглядеть
Код
Sub Заполнить1()
Dim BegPeriod As Date
Dim EndPeriod As Date
Dim iFoundRng As Range

BegPeriod = Worksheets("отчетрасход").Range("F1")
EndPeriod = Worksheets("отчетрасход").Range("I1")
Set JournalSht = ThisWorkbook.Worksheets("орасход")
Application.ScreenUpdating = False

Range("A3:I200").Select
Selection.Font.Bold = False
Selection.EntireRow.Hidden = False
Selection.ClearContents
Range("A3").Select

With JournalSht
Set iFoundRng = .Columns(1).Find(What:=BegPeriod, LookIn:=xlFormulas, LookAt:=xlWhole)
If Not iFoundRng Is Nothing Then
  
For i = 3 To 40
If .Cells(iFoundRng.Row + i - 3, 1) <= EndPeriod Then
Cells(i, 1) = .Cells(iFoundRng.Row + i - 3, 1) 'дата
Cells(i, 2) = .Cells(iFoundRng.Row + i - 3, 2) '№ счета
Cells(i, 4) = .Cells(iFoundRng.Row + i - 3, 4) 'ответственный
Cells(i, 5) = .Cells(iFoundRng.Row + i - 3, 5) 'техника
Cells(i, 6) = .Cells(iFoundRng.Row + i - 3, 6) '№ техники
Cells(i, 8) = .Cells(iFoundRng.Row + i - 3, 9) 'сумма

Else
End If
Next
End If
End With
f = Cells(Rows.Count, 1).End(xlUp).Row
Range("A3:I" & f).Select
 ActiveWorkbook.Worksheets("отчетрасход").Sort.SortFields.Clear
 ActiveWorkbook.Worksheets("отчетрасход").Sort.SortFields.Add Key:=Range( _
        "D3:D" & f), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
 ActiveWorkbook.Worksheets("отчетрасход").Sort.SortFields.Add Key:=Range( _
        "E3:E" & f), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
      With ActiveWorkbook.Worksheets("отчетрасход").Sort
        .SetRange Range("A3:I" & f)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
        
 Range("B2:I" & f).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range _
        ("отчетрасход!Criteria"), Unique:=True
 Range("I3:I" & f).FormulaR1C1 = "=SUMIFS(C[-1],C[-5],RC[-5],C[-4],RC[-4])"
 Range("I3:I" & f + 2).FormulaR1C1 = "=AGGREGATE(9,5,R3C9:R[-2]C9)"
 
Application.ScreenUpdating = True
End Sub

правильное соединение 3 макросов в один
 
Здравствуйте!
У меня не получается соединить в один несколько макросов.
Есть таблица с данными. Нужно вставить в нее промежуточные итоги, скопировать ее на 2 строки ниже первой таблицы, при чем нижняя развернутая, а верхняя свернута до второго уровня. Обозначить границы ячеек и выделить жирным шрифтом все итоги.
По отдельности каждый макрос срабатывает, но когда соединяешь их получается какая то каша. А еще запуталась с границами таблиц.
1 макрос "промежуточные итоги":
Код
Sub промежуточные_итоги()

 Dim s As Long
 s = Cells(Rows.Count, 1).End(xlUp).Row
    Range("A1:E" & s).Select
    Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2, 3, 4, 5) _
        , Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    ActiveWindow.SmallScroll Down:=-9
    Range("A2").Select
End Sub
2 макрос "копирование и вставка второй таблицы" , но тут я с границами растерялась
Код
Sub вставка_второй_таблицы()

    ActiveSheet.Outline.ShowLevels RowLevels:=2
    Range("A1:E36").Select     ' указаны конкретные ячейки, а нужно те, что получатся в таблице
    Selection.Copy
    ActiveWindow.SmallScroll Down:=3
    Range("A40").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=-3
    Range("A1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "затраты"
    Range("A4").Select
End Sub

3 макрос "форматирование таблицы" , тоже черте что на деле получается
Код
Sub форматирование()

ActiveSheet.Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
  
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("A2").Select
End Sub


И вот когда это все соединяется, то получается ерунда  :(, про выделение жирным шрифтом я уже и не думаю пока

Подскажите пожалуйста как это правильно сделать?
Копирование диапазона из файлов другой папки
 
Помогите пожалуйста с макросом. Уже и так и эдак пробовала - не получается.
Есть папка с файлами. В каждом файле на странице "Лист1" имеется диапазон "A1:D4".
Нужно перебрать все файлы в папке и скопировать этот диапазон в книгу, из которой этот макрос запускается.
В макросе который я пытаюсь сделать, то синтаксис не такой, то метод пасте ранге не проходит.

Код
Sub анализ_ремонты()

    Dim sFolder As String, sFiles As String 
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    
    Application.ScreenUpdating = False
    sFiles = Dir(sFolder & "*.xls*")
    Do While sFiles <> ""

        Workbooks.Open sFolder & sFiles
      
        ActiveWorkbook.Sheets("Лист1").Range("A1:D1").Copy
       Workbooks("анализ оплата").Sheets("оплремонты").Cells((Sheets("оплремонты").(Rows.Count, 1).End(xlUp).Row) + 1, 2).PasteSpecial Paste:=xlPasteValues
       ActiveWorkbook.Sheets("Лист1").Close False
       sFiles = Dir
            
    Loop
 
    Application.ScreenUpdating = True
End Sub

Не нравится ему(макросу) вот эта строчка:
Код
Workbooks("анализ оплата").Sheets("оплремонты").Cells((Sheets("оплремонты").(Rows.Count, 1).End(xlUp).Row) + 1, 2).PasteSpecial Paste:=xlPasteValues
       ActiveWorkbook.Sheets("Лист1").Close False
       sFiles = Dir
Страницы: 1
Наверх