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

Страницы: 1
Область копирования, Как определять облать копирования если значения могут быть динамичны?
 
Здравствуйте Уважаемые формучане. Задача была определить область копирования и скопировать.
С чем не справляется построенный код.
Скрытый текст
Счетами 734 и 1081 он справлялся
но оказалось и области копирования могут быть разными.

Подскажите как переиграть что бы можно было копировать нужные данные независимо от расположения значений
Изменено: БМВ - 27.08.2024 08:39:16
Изменение темы письма при отправке его из Excel, удалить левые символы в наименовании файла
 
Добрый вечер знатоки VBA. На просторах интернета нашел макрос отправляющий активный файл по мэйл. Без участия Outlook. правда до конца не понял от куда он будет отправлять.
Хотелось бы разобраться и отправлять письмо с переименованием имени файла. а конкретнее. каждый файл в начале содержит символ "rs-" от чего хотелось бы отказаться
Код
ActiveWorkbook.SendMail Array("mail1@excel-vba.ru", "mail2@excel-vba.ru"), "Тема письма"
Функция IFS более 3-х аргументов равенства., Функция IFS в Google Таблице
 
Все было хорошо с функцией если когда было всего два аргумента. Но тут понадобилось добавить еще 1 или 2 аргумента.
Но как известно Если работает только с двумя аргументами. Но найденная функция IFS в примере выражалась только равенствами на больше или меньше с числами.
И почему то при вводе в свои ячейки выводиться ошибка синтаксиса.

Код
=IFS(F2="YandexMarket","https://yandex.ru/maps/-/CCUufZQApC", F2="OZON","https://yandex.ru/maps/-/CCUubUFShD", F2="AliExpress","https://yandex.ru/maps/-/CCUurWB6DA", F2="Wildberries","Еще не задана точка")
Изменено: aybek04 - 05.12.2021 22:44:10
Очистить ячейки столбца, значение которых равно значению отдельной ячейки
 
Доброго времени суток господа!
Есть задача Найти в колонке "A" значения по ячейке A2(с переди пробелом) и заменить на пустую.
То есть просто удалить

Проблема: макрорекордер записывает само значение в код.
Код
Selection.Replace What:=" СТС", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
В столбце удалить кириллицу и лишние символы
 
Здравствуйте знатоки VBA, есть задача удалить кириллицу и лищние символы с колонки.
Какими вариантами можно это осуществить?
Цитата
черный/BK (черный) ====>> BK
2 цвета в коробе/серебряный//розовый/S//P (2 цвета в коробе/серебряный//розовый/S//P) ====>> S/P
Открыть книгу с определенным именем в родительском каталоге
 
Наверное элементарная вешь, но не смог найти как открыть книгу, к примеру от данной книги на 1 каталог выше и дальше определить по этому пути
Код
Workbooks.Open ("..\orders\rcvd-orders\KONG.xlsm")
Обработка заказов. Решение ошибки "For without Next"., Исправление имеющего кода, При запуске выдает ошибку.
 
Доброго времени суток уважаемые знатоки VBA. Имеется код собранный из разных книг. Проблема: не запускается, выдает ошибку. прошу помочь разобраться в чем дело. Прикрепил и сам файл на всякий случай.
Код
Sub file_open()
'fasting settings
Application.Calculation = xlManual
Application.ScreenUpdating = False
 
Dim wb_base_name As String, rinok_nash_order_column As Integer, ordernum As String, ws_base_name As String, wb_order_name As String, ws_order_name As String, wb As Workbook, ws As Worksheet, model(9999) As String, color(9999) As String, quantity(9999) As Integer, position(9999) As Integer, skin(9999) As Integer, skinrow(9999) As Integer, modwcolor As String, numrow As Integer, cur_sym_pos As Integer, order_column As Integer, filename As String, lrib As Integer
 
'open file dialog window
ChDir ThisWorkbook.Path & "\"
impfilename = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", 2, "Выбрать текстовые или Excel файлы", , False)
If impfilename = "False" Then Exit Sub
 
wb_base_name = ActiveWorkbook.Name
ws_base_name = ActiveWorkbook.ActiveSheet.Name
 
Set wb = Application.Workbooks.Open(impfilename)
filename = wb.Name
wb_order_name = wb.Name
For Each ws In wb.Worksheets
    ws_order_name = ws.Name
    'from managers
     
     
    'detect columns nums
    Dim col_num_nazv, col_num_model, col_num_kol, col_num_last As Integer
    For q = 1 To 99
        If Right(ws.Cells(1, q), 6) = "Модель" Then col_num_model = q
        If Right(ws.Cells(1, q), 10) = "Количество" Then col_num_kol = q
        If ws.Cells(1, q) <> "" Then col_num_last = q
    Next q
 
 
    If col_num_nazv <> "" And col_num_model <> "" Then
        from_manager = True
        For i = 1 To Len(wb.Name)
                If IsNumeric(Mid(wb.Name, i, 1)) Then ordernum = ordernum + Mid(wb.Name, i, 1)
                If Mid(wb.Name, i, 1) = " " And Len(ordernum) > 0 Then Exit For
        Next i
        filename = "№" + ordernum + "-"
         
         
        'reading order
        For numrow = 2 To 9999
            If ws.Cells(numrow, col_num_model) = "" Then Exit For
                If Len(ws.Cells(numrow, col_num_model)) = 1 Then model(numrow - 1) = "0000" + CStr(ws.Cells(numrow, col_num_model))
                If Len(ws.Cells(numrow, col_num_model)) = 2 Then model(numrow - 1) = "000" + CStr(ws.Cells(numrow, col_num_model))
                If Len(ws.Cells(numrow, col_num_model)) = 3 Then model(numrow - 1) = "00" + CStr(ws.Cells(numrow, col_num_model))
                If Len(ws.Cells(numrow, col_num_model)) = 4 Then model(numrow - 1) = "0" + CStr(ws.Cells(numrow, col_num_model))
                If Len(ws.Cells(numrow, col_num_model)) = 5 Or Len(ws.Cells(numrow, 2)) = 7 Then model(numrow - 1) = ws.Cells(numrow, col_num_model)
                quantity(numrow - 1) = Int(ws.Cells(numrow, col_num_kol))
             
            modwcolor = ws.Cells(numrow, col_num_nazv)
             
            If Left(ws.Cells(1, col_num_nazv), 1) <> "*" And Left(ws.Cells(1, col_num_nazv), 2) <> "ш-" Then skin(numrow - 1) = 0
            If Left(ws.Cells(1, col_num_nazv), 1) = "*" Then skin(numrow - 1) = 1
            If Left(ws.Cells(1, col_num_nazv), 2) = "ш-" Then skin(numrow - 1) = 2
            'selecting color from modwcolor
            For cur_sym_pos = Len(modwcolor) - 1 To 1 Step -1
                If IsNumeric(Mid(modwcolor, cur_sym_pos, 1)) Or Mid(modwcolor, cur_sym_pos, 1) = "-" Then
                    color(numrow - 1) = Right(modwcolor, Len(modwcolor) - cur_sym_pos)
                    Exit For
                End If
            Next cur_sym_pos
            color(numrow - 1) = UCase(Replace(color(numrow - 1), " ", ""))
        Next numrow
 
         
        numrow = numrow - 2
        lrib = last_row_in_base(wb_base_name, ws_base_name)
        order_column = new_order(wb_base_name, ws_base_name, filename, lrib)
        filename = filename + CStr(find_containers(model, color, quantity, position, skin, skinrow, numrow, wb_base_name, ws_base_name, lrib, order_column, wb_order_name, ws_order_name, "manager", rinok_nash_order_column)) + "шт-Резерв-" + InputBox("Введите инициалы менеджера", "Запрос")
        numrow = numrow + 1
 
 
             
            Workbooks(wb_order_name).Activate
            Worksheets(ws_order_name).Activate
            ws.Range(Cells(1, col_num_last + 1).Address, Cells(numrow, col_num_last + 1).Address).Copy ws.Cells(1, 30)
            ws.Cells(1, 30) = "Не отгружено"
            ws.Range(Cells(1, col_num_nazv).Address, Cells(numrow, col_num_nazv).Address).Copy ws.Cells(1, 27)
            ws.Range(Cells(1, col_num_kol).Address, Cells(numrow, col_num_kol).Address).Copy ws.Cells(1, 28)
            ws.Range(Cells(1, col_num_last).Address, Cells(numrow, col_num_last).Address).Copy ws.Cells(1, 29)
            ws.Cells(1, 29) = "Отгружено"
            ws.Range("AA1:AA" + CStr(numrow) + ",AB1:AB" + CStr(numrow) + ",AC1:AC" + CStr(numrow) + ",AD1:AD" + CStr(numrow)).Copy
            'ws.Range("AA1:AA99999,AB1:AB99999,AC1:AC99999,AD1:AD99999").Copy
        Workbooks.Add
        ActiveSheet.Paste Destination:=Range("A1")
        Application.DisplayAlerts = False
        Rows("1:1000").RowHeight = 15
        Columns("A:H").AutoFit
        'Cells(numrow + 1, 3) = "=СУММ(C2:C" + CStr(numrow) + ")"
        Cells(numrow + 1, 4) = Application.WorksheetFunction.Sum(Columns("D:D"))
        Cells(numrow + 1, 3) = Application.WorksheetFunction.Sum(Columns("C:C"))
        'Cells(numrow + 1, 2) = "=СУММ(B2:B" + CStr(numrow) + ")"
        Cells(numrow + 1, 2) = Application.WorksheetFunction.Sum(Columns("B:B"))
        ActiveWorkbook.SaveAs _
        filename:=".\отправка\" + filename + ".xlsx"
        ActiveWorkbook.Close
        Application.DisplayAlerts = True
 
         
        Workbooks(wb_base_name).Activate
        Worksheets(ws_base_name).Activate
        Cells(1, order_column) = filename
        Workbooks(wb_order_name).Activate
        Worksheets(ws_order_name).Activate
        GoTo labelexit
         
    End If
 
wb.Close (0)
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub
Function last_row_in_base(wb_base_name As String, ws_base_name As String) As Integer
    Workbooks(wb_base_name).Activate
    Worksheets(ws_base_name).Activate
    'find last row
    For i = 9999 To 1 Step -1
        If Cells(i, 16) <> "" Then last_row_in_base = i: Exit For
    Next i
End Function
 
Function new_order(wb_base_name As String, ws_base_name As String, filename As String, lrib As Integer) As Integer
    Workbooks(wb_base_name).Activate
    Worksheets(ws_base_name).Activate
    'find last column
    For i = 28 To 9999
        If Cells(2, i) <> "" And Cells(3, i) <> "" And Cells(4, i) <> "" And Cells(5, i) <> "" Then new_order = i + 1
    Next i
    'copy previous columns to new order
    Cells(2, new_order) = Format(Date, "dd\/mm")
    Cells(2, new_order + 1) = Format(Date, "mm\/dd")
    Cells(2, new_order + 2) = Format(Date, "dd\/mm")
    Cells(2, new_order + 3) = Format(Date, "mm\/dd")
    Cells(1, new_order).Interior.color = 65535
    Cells(2, new_order).Interior.color = 65535
    Cells(1, new_order + 2).Interior.color = 65535
    Cells(2, new_order + 2).Interior.color = 65535
 
    For i = 3 To lrib
        Cells(i, new_order).Interior.color = 65535
        Cells(i, new_order + 1) = "=RC[-2]-RC[-1]"
        Cells(i, new_order + 2).Interior.color = 65535
        Cells(i, new_order + 3) = "=RC[-2]-RC[-1]"
    Next i
End Function
Function find_containers(model() As String, color() As String, quantity() As Integer, position() As Integer, skin() As Integer, skinrow() As Integer, numrow As Integer, wb_base_name As String, ws_base_name As String, lrib As Integer, order_column As Integer, wb_order_name As String, ws_order_name As String, order_type As String, rinok_nash_order_column As Integer) As Integer
    Dim text As String, all_cont_sum As Integer
    Workbooks(wb_base_name).Activate
    Worksheets(ws_base_name).Activate
    Dim containers(99, 2) As Integer
    Dim cont_num As Integer, quantity_sum As Integer, balance As Integer, container_found As Boolean, skirow_found As Boolean, skincolumnplus As Integer
 
    For i = 1 To numrow
        Erase containers
        container_found = False
        skinrow_found = False
        cont_num = 0
        quantity_sum = 0
        skincolumnplus = 0
        balance = 0
 
        'run across all containers
       For baserow = 1 To lrib
 
        'calculate skincolumnplus
        If skin(i) = 1 Or (order_type = "manager" And skinrow_found = True And skin(i) <> 2) Then skincolumnplus = 2
 
        'sorting containers massive
        Dim tmp As Integer, tmp2 As Integer
        For isrt = 1 To cont_num - 1
            For jsrt = 1 To cont_num - isrt
                If containers(jsrt, 2) > containers(jsrt + 1, 2) Then
                    tmp = containers(jsrt, 1)
                    tmp2 = containers(jsrt, 2)
                    containers(jsrt, 1) = containers(jsrt + 1, 1)
                    containers(jsrt, 2) = containers(jsrt + 1, 2)
                    containers(jsrt + 1, 1) = tmp
                    containers(jsrt + 1, 2) = tmp2
                    End If
            Next jsrt
        Next isrt
 
        'if skinrow not found, writing to the order and going to next orderrow
        If skin(i) <> 0 And skinrow_found = False Then
            Workbooks(wb_order_name).Activate
            Worksheets(ws_order_name).Activate
            If order_type = "manager" Then
                If Cells(1, 6) = "Количество" Then
                    Cells(i + 1, 8) = Cells(i + 1, 8) + 0
                    Cells(i + 1, 8).Interior.color = 255
                    Cells(i + 1, 9) = Cells(i + 1, 9) + quantity(i)
                    Cells(i + 1, 9).Interior.color = 255
                Else
                    Cells(i + 1, 9) = Cells(i + 1, 9) + 0
                    Cells(i + 1, 9).Interior.color = 255
                    Cells(i + 1, 10) = Cells(i + 1, 10) + quantity(i)
                    Cells(i + 1, 10).Interior.color = 255
 
                End If
 
            Workbooks(wb_base_name).Activate
            Worksheets(ws_base_name).Activate
            GoTo nexi
        End If
 
                 
        'if all container quantity is enought
        If quantity_sum >= quantity(i) Then
            'search postion in one container
            For isrt = 1 To cont_num
                If containers(isrt, 2) >= quantity(i) Then
                    'write to container to order in base
                    Cells(containers(isrt, 1), order_column + skincolumnplus) = Cells(containers(isrt, 1), order_column + skincolumnplus) + quantity(i)
                    'write data to skinrow
                    If (skin(i) = 1 And skinrow_found = True) Or (order_type = "manager" And skinrow_found = True And skin(i) <> 2) Then
                        Cells(skinrow(i), order_column) = Cells(skinrow(i), order_column) + quantity(i)
                        Cells(skinrow(i), order_column + 2) = Cells(skinrow(i), order_column + 2) - quantity(i)
                    End If
 
                    container_found = True
                    Exit For
                End If
            Next isrt
 
 
            If quantity_sum = 0 Then
             
                'write zero to base
                If containers(0, 1) > 0 Then If Cells(containers(0, 1), order_column + skincolumnplus) = "" Then Cells(containers(0, 1), order_column + skincolumnplus) = 0
                If (skin(i) = 1 And skinrow_found = True) Or (order_type = "manager" And skinrow_found = True And skin(i) <> 2) Then
                    Cells(skinrow(i), order_column) = Cells(skinrow(i), order_column) + 0
                    Cells(skinrow(i), order_column + 2) = Cells(skinrow(i), order_column + 2) - 0
                End If
  
 
nexi:
    Next i
find_containers = all_cont_sum
End Function
 
Sub file_import()
file_open
End Sub
Изменено: aybek04 - 01.11.2021 13:27:21
Пропарсить фото и изьять оттуда данные
 
Добрый вечер знатоки VBA.
Мне бы для начала понимание осуществимо ли это и с чего начинать копать.
к примеру заказы поступают в формате .jpg, пример прикрепил.

Нужно спарсить или предложите другой выход... изъять и превратить ее в нормальную таблицу.
Что бы нормально начать с ней работать.  
Определить последнюю строку с данными
 
Здравствуйте уважаемые знатоки VBA.

есть
Код
Range("A2", Cells(Rows.Count, 6).End(xlUp)).Select
который выделяет 6 колонок заполненных значений.
но он не выделяет последние строки если там нет значений, как на скриншоте прикрепленном.

подскажите каким кодом можно выделять и последние строки если даже там нет значений.
Изменено: vikttur - 06.10.2021 00:21:07
Уменьшение большого размера файла с макросами, Поиск решения проблемы большого размера файла с макросами
 
Доброго вечера уважаемые знатоки. Наверное попрошу о многом.
имеется код который образует новый файл, но слишком большой.(прикрепленный Z-DingDan)
Код
Private Sub Workbook_Open()
    ActiveSheet.Paste
    Selection.ColumnWidth = 7
    Columns("C:C").Cut
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight
    Columns("B:B").Select
    Selection.Cut
    Columns("H:H").Select
    Selection.Insert Shift:=xlToRight
    Rows("2:2").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    ActiveSheet.Range("$A$2:$E$10000").AutoFilter Field:=5, Criteria1:="<>"
    ' Макрос выделения с адресами до последней заполненной ячейки
    Range("A1", Cells(Rows.Count, 7).End(xlUp)).Select
Selection.Copy
Sheets("Лист3").Select
ActiveSheet.Paste
    Rows("2:2").Select
'фильтр по цвету
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("Лист3").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист3").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "C2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Лист3").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A3", Cells(Rows.Count, 7).End(xlUp)).Select
    Selection.Copy
    Sheets("sheet1").Select
    ActiveSheet.Paste
    Rows("3:3").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("sheet1").AutoFilter.Sort.SortFields.Clear
'сортировака по возрастанию
    ActiveWorkbook.Worksheets("sheet1").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "A5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("sheet1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    'Selection.Delete Shift:=xlUp
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Шаг 3: Выбираем следующую строку вниз
Cells(LastRow, 2).Offset(1, 0).Select
'пишим нужный текст
'ActiveCell.FormulaR1C1 = "Не набивные и шкуры"
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(LastRow, 5).Offset(1, 0).Select
'ActiveCell.FormulaR1C1 = "0"
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(LastRow, 1).Offset(2, 0).Select

    
    'проблемный участов вставки 1.
    Range("I4").Select
    ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-1]"
    Range("i4:i" & Cells(Rows.Count, 1).End(xlDown).Row).Formula = [i4].FormulaR1C1
    Range("B4", Cells(Rows.Count, 9).End(xlUp)).Select
    Range("R4").Select
    ActiveCell.FormulaR1C1 = "=R[1]C[-13]"
    Range("R4").Select
    ActiveCell.FormulaR1C1 = "=R[-2]C[-13]"
    Range("O4:P4").Select
    Sheets("Лист3").Select
    Range("E1").Select
    Selection.Copy
    Sheets("sheet1").Select
    Range("O4:P4").Select
    ActiveSheet.Paste
    Range("O5:P5").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C"
    Range("O6").Select
    Range("U5:V5").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C[-6]"
    Range("U6").Select
    Range("X4").Select
    ActiveCell.FormulaR1C1 = "=RC[-6]"
    Range("X5").Select
    Range("R5").Select
    ActiveCell.FormulaR1C1 = "=MID(R[-1]C[-3],1,FIND(""-"",R[-1]C[-3])-1)"
    Range("R6").Select
    
    Application.DisplayAlerts = False
    Sheets("Лист2").Delete
    Application.DisplayAlerts = True

    Application.DisplayAlerts = False
    Sheets("Лист3").Delete
    Application.DisplayAlerts = True
    
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Dingdan-1\" & [O4] & Re & ".xlsm" _
        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    
End Sub

Посоветуйте что делать пожалуйста
Может мой же код, где то образует мину?)) так как после сохранения если открыть файл и очистить в ручную образовавшийся пустые ссылки на ячейки,
в колонке 9. размер файла значительно уменьшается.

но при попытке осуществить это с помощью макросов(ниже приведенной)
Код
    Sheets("sheet1").Select
    
    LastRow = Cells(Rows.Count, 4).End(xlUp).Row
    'Шаг 3: Выбираем следующую строку вниз
    Cells(LastRow, 9).Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Delete

размер сохраняется

на всякий случай прикреплюданный шаблонный файл
Изменено: aybek04 - 23.09.2021 23:53:45
Отключение автозапуска макроса из книги при ее сохранении с помощью кода
 
Добрый вечер уважаемые знатоки. Имеется код который сохраняет отдельно книгу совсеми макросами.

но дело в том что сама книга была настроена на автозапуск. который уже мешает при открытии уже сохраненных файлов.
как возможно удалить или отключить данный макрос до сохранения отдельным файлом. так как другие модули нужны.

в просторах нашел код который удаляет определенный модуль. но у меня макрос сохранен в книге(не как определенный модуль, скрин с примером прикрепил).

подскажите пожалуйста, что можно сделать.  
Изменено: vikttur - 23.09.2021 23:16:54
Найти последнюю используемую строку на листе
 
Доброе утро знатоки. Подскажите выход из сложившейся ситуации.

Имеется код:
Код
Range("A3", Cells(Rows.Count, 7).End(xlUp)).Select

который выделяет ниже 3-1 строки после фильтра значения на 7-ми колонках.
Все бы хорошо. но если при фильтре там не оказывается ничего то код лезет выше 3 строки. чего бы не хотелось.

пример на прикрепленном фото.
Какое решение можете предложить?
Копирование скрытых колонок
 
Добрый вечер Уважаемые знатоки. имеется набросок кода, которы копирует колонки заданные если они открыты(не скрыте).
Код
Dim KH As String

Dim aa As Integer
aa = ActiveCell.Column

Cells(1, aa).Select

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .color = 16738047
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
Application.Union(Range("R:R,P:P,N:N,M:M,I:I"), ActiveCell.EntireColumn, ActiveCell.Offset(0, 1).Range("B:B")).Select

    Selection.Copy
    Workbooks.Open filename:=ThisWorkbook.Path & "\Z-DingDan"

Но хотелось бы не раскладывать рабочую область на весь стол. Как сделать так что бы заданные колонки копировались если даже они скрыты.
Сохранение файла с расширением .xlsm
 
Уважаемые знатоки VBA, имеется формула
Код
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Dingdan-1\" & [O4] & Re & ".xlsm" _
        , FileFormat:=xlWorkbookNormal, CreateBackup:=False
Который сохраняет с ошибками и не открывается потом ссылаясь ошибку скрин которого прикрепил.

Вопрос: что же я не так делаю?
Быстрый набор названия названия и подставка, Слияние двух макросов.
 
Доброго времени суток Господа знатоки.

Была книга 10006-pechat-tovarnykh-chekov-3 в которой работал.

но тут увидел книгу(Список_вопрос.xlsm) с очень удобной функцией подбора названий товаров. Самому слить скрипты не получилось. да и удалить функцию подбора в старой не удалось.

подскажите как это сделать  
Добавить жирность первым трум строкам, и жирную линию 2й и 3й строке.
 
Добрый день! Подскажите пожалуйста, что бы дать теперь этой таблице форму, почему не может работать этот скрипт?
Код
ActiveCell.Offset(0, 4).Columns("A:A").EntireColumn.Select    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    ActiveSheet.Range("$A$3:$E$3").AutoFilter Field:=5, Criteria1:="<>"
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    End With
    ActiveSheet.Range("$A$2:$E$3").AutoFilter Field:=5, Criteria1:="<>"
    Selection.Font.Bold = True
Файл чего хотелось бы видеть прикреплю 1.

Файл с исходным скриптом на всякий случай тоже прикреплю 2.

Парсер загрузки фотографий переименовывает фото, что не нужно
 
Доброго времени суок мастаки VBA, буду рад помощи.
Есть парсер которого нашел на просторах интернета, который загружает с базы фотографии.
только он просит во вторую колонку ввести имя для новых фотографий.
Нужно сделать так, что бы парсер скачал именно с существующими именами.

P.S уже запутался в мире программирования по чуть чуть познавая наверно, колонку с renam ом не нашел что бы удалить)
Объединение книг в один лист, Копирование с нескольких книг в один лист
 
Доброго времени суток знатоки! В поисковике встретил макрос
Код
Sub CombineWorkbooks()
    Dim FilesToOpen
    Dim x As Integer
 
    Application.ScreenUpdating = False  'отключаем обновление экрана для скорости
     
    'вызываем диалог выбора файлов для импорта
    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="All files (*.*), *.*", _
      MultiSelect:=True, Title:="Files to Merge")
 
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If
     
    'проходим по всем выбранным файлам
    x = 1
    While x <= UBound(FilesToOpen)
        Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
        Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        importWB.Close savechanges:=False
        x = x + 1
    Wend
 
    Application.ScreenUpdating = True
End Sub



Который копирует целый лист и объединяе в одну, только по разным листам.

Как сделать так что бы он мог копировать таблицы с выделенных книг. один за другим, только делая 2строки отступа?

Автозаполнение базы, Автозаполнение с образца
 
Доброго времени суток знатоки VBA. Работая каждый день с этой базой, наконец решил облегчить себе учесть. Со ценами не знаком. Подскажите на сколько это сложно и во сколько мне это обойдется.
Прикрепил 2 файла. один файл заказа, там примером написал разнообразие возможных перечислений в заказе. второй пример базы. где при подобном заказе пример выполнения как все должно заполнятся.
Активная колонка с помощью формул, Учет колонки с уловием формулами
 
Доброго времени суток гуру Планеты Exel. Пришла очередная пора обратится к вам за советами.

Есть рутинная работа по базе где требуется по мимо поисков артикулов вводить дополнительные значения в колонке. Можно ли частично автоматизировать это?

Пример прикрепил:

В примере: Есть колонка с артикулами где при вводе именно на против строки с оранжевой заливкой в колонке "A",  в колонке "B" должно обратно ставится отрицательное значение(которую можно решить лишь сравнением в отрицательно значение). что бы остаток не менялся. И само вычитаться с положительных остатков выше. но с условием что в колонке атрибут не будет значения "НЕТ". (Это комбинация при заказе к примеру готовой игрушки).

Но бывают и заказы самих шкур. когда мне приходится просто вычитать со строк артикулов без заливки. с колонки "A".


Как можно автоматизировать к примеру поиск положительного значения с остатка и внесение значение в колонку "B"
По сути я бы хотел активную колонку "B". что бы при вводе на против строки с заливкой, колонки автоматически вычиталось как в примере.
но при вводе на против строки без заливки ничего не менялось.
Изменено: aybek04 - 13.06.2020 16:09:54
Удаление из ячеек только текстовых значений
 
Доброго времени суток! Ребят.
Сталкивался я с удалением строк или колонок.Подскажите пожалуйста. Как зачистить в 3 колонке текстовые значения?
Что бы просто можно было в конце числовых значений сумму поставить.
пример прикреплю для наглядности.

Строку удалять не надо. Потому что в первой колонке может содержатся важная информация.
Изменено: aybek04 - 24.03.2020 13:16:24
Закрашивание активной строки, если значение 0
 
Доброго времени суток ребята.
Посодействуйте пожалуйста результату.
Нужно доработать макрос
Код
    For i = [a1000000].End(xlUp).Row To 3 Step -1
        If CInt(Cells(i, 5)) = 0 Then Rows(i).EntireRow.delete
    Next i

Есть удаления целой строки если встретится в колонке 5 значение 0.

как сделать так что бы он не удалял а покрасил все 6 активных колонок, если в по колонке 5 встретится значение 0?

Изменено: aybek04 - 23.03.2020 20:02:16
Найти артикул в другой книге и заполнить ячейки
 
Приветсятвую Вас Уважаемые знатоки Макросов.

Я понимаю данный вопрос многого стоит. Но хотя бы для понимания и личного обучения...
Подскажите пожалуйста от чего отталкиваться и куда смотреть в данной ситуации. Если, файл А(База) и Файл Б(шаблон).
Возможно ли с Файла Б по списку заказа запустив макрос, заполнить напротив найденных Артикулов на Файле А. И при этом вернуть полученные значения(учтенные) значения вернуть обратно в колонку отсутствует в фалй Б?
пример во вложении.
Мне бы подсказать в какие темы глядеть и как быть. В платный раздел все таки не хочется. так как это мне самому нужно. Нужно и учится.
Изменено: aybek04 - 20.03.2020 12:55:30
Сохранение листа в динамическую папку
 
Доброго времени суток ребята.
Есть макрос в котором каждый раз при перемещении, нужно менять путь в самом коде.
Но видел у Китайцев просто архивы передающие. с которых расспаковав можно работать полноценно. То есть пути сохранения прописывать не надо. оно просто сохраняет в найденную рядом папку с определенным названием.
Помогите где тут что добавить. что бы так же работал этот макрос
Код
Sub
Application.DisplayAlerts = False
         ChDir "C:\Users\Bimkod_4\Desktop\мой проект\мой проект 2\Отгрузки"
ActiveSheet.Copy
    ActiveWorkbook.SaveAs [A2] & ".xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close
End Sub
[ Закрыто] Доработка Макросов, Исправление критических ошибок новичка.
 
Доброго времени суток! Уважаемые форумчане.
С тех самых пор, как я заинтересовался макросами в первый раз. Этот сайт, в Вашем лице, стал для меня на подобие наставником и ГУРУ.
С той поры я дописал наконец составление накладного для склада.
Хотелось бы еще раз скинуть Вам для доработки и наставничества, если заметите критические ошибки в коде. но сам код вроде работает.
может что: заменить лучше, может каким то макросом вообще лучше не пользоваться. Подскажите пожалуйста.
Вот и целый код:
Код
Private Sub Workbook_Open()
    ActiveSheet.Paste
    Rows("2:2").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    ActiveSheet.Range("$A$2:$E$10000").AutoFilter Field:=5, Criteria1:="<>"
    ' Макрос выделения с адресами до последней заполненной ячейки
    ActiveCell.CurrentRegion.Select
Selection.Copy
Sheets("Лист3").Select
ActiveSheet.Paste
    'удаление пустых и нулевых значений в колонке 5
    For i = [a1000000].End(xlUp).Row To 3 Step -1
        If CInt(Cells(i, 5)) = 0 Then Rows(i).EntireRow.Delete
    Next i
    Rows("2:2").Select
'фильтр по цвету
    Selection.AutoFilter
    ActiveSheet.Range("$A$2:$F$5000").AutoFilter Field:=3, Criteria1:=RGB(230, _
        184, 183), Operator:=xlFilterCellColor
    Range("A2", Cells(Rows.Count, 6).End(xlUp)).Select
    Selection.Copy
    Sheets("Лист2").Select
    ActiveSheet.Paste
    Rows("5:5").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort.SortFields.Clear
'сортировака по возрастанию
    ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "A5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Selection.Delete Shift:=xlUp
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Шаг 3: Выбираем следующую строку вниз
Cells(LastRow, 2).Offset(1, 0).Select
'пишим нужный текст
ActiveCell.FormulaR1C1 = "Не набивные и шкуры"
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(LastRow, 5).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "0"
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(LastRow, 1).Offset(2, 0).Select
    Sheets("Лист3").Select
    Rows("2:2").Select
    Selection.AutoFilter
    Selection.AutoFilter
    ActiveSheet.Range("$A$2:$F$41").AutoFilter Field:=3, Operator:= _
        xlFilterNoFill
    'удаляем значения с 6-й колонки
    Columns("F:F").Select
    Selection.ClearContents
    'выделяем активную область
    ActiveCell.CurrentRegion.Select
    Selection.Copy
    Sheets("Лист2").Select
    ActiveSheet.Paste
    ActiveCell.Rows("1:2").EntireRow.Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
'сортируем не набивные артикула
    ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort.SortFields.Add Key:= _
        ActiveCell.Offset(-1, 0).Range("A1"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    'находим конец колонки 5, и суммируем не смотря на пропуски
  iLastRow = Cells(Rows.Count, "B").End(xlUp).Row
  Cells(iLastRow + 1, 5) = WorksheetFunction.Sum(Range("E5:E" & iLastRow))
    ActiveCell.CurrentRegion.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
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
'копируем название накладной
Worksheets("Лист1").Range("E1").Copy Worksheets("Лист2").Range("A2:F2")
'сохраняем результат
Application.DisplayAlerts = False
         ChDir "C:\Users\Bimkod_4\Desktop\мой проект\мой проект 2\Отгрузки"
ActiveSheet.Copy
    ActiveWorkbook.SaveAs [A2] & ".xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close
     ActiveWindow.Close False
End Sub
Изменено: aybek04 - 19.03.2020 13:12:26
Сохранение листа отдельным файлом, Сохранение листа новым файлом без макросов
 
Доброго времени суток, уважаемые знатоки Макросов.
Код
Application.DisplayAlerts = False
         ChDir "C:\Users\Bimkod_4\Desktop\мой проект\мой проект 5\Отгрузки\"
ActiveSheet.Copy
    ActiveWorkbook.SaveAs [A2] & ".xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        Application.Quit
Но проблема этого макроса, в том что он повреждает сохраняемый файл. может кто сталкивался с этим?
Сохранение листа без макросов
 
Код
Application.DisplayAlerts = False
         ChDir "C:\Users\Bimkod_4\Desktop\мой проект\мой проект 5\Отгрузки\"
    ActiveWorkbook.SaveAs [A2] & ".xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        Application.Quit
Ребята приветствую всех. Имеется такой макрос))) который никак не поддается. Нужно что бы он сохранял лист без макросов. может я что то не то делаю? и что бы только один лист Лист 2
а то этот всю книгу пересохраняет
Изменено: aybek04 - 17.03.2020 11:59:59
Суммирование динамического диапазона с пропусками, Суммирование динамичной колонки
 
Доброго времени суток! Знатоки Макросов.
Выручите пожалуйста. нужен макрос который смог бы суммировать значения выше
Есть динамичная колонка
которая не смотря на обе варианта составленной накладной, должна внизу в красном прямоугольнике прописать сумму  
обе накладные во вложении.  
Удалить строки, если в ячейке столбца пусто или ноль
 
Приветствую Вас боги Макросов. Есть таблица с которой нужно по условию если в колонке 5 ниже есть 0 или ячейка пустая, надо эту строку полностью удалить. со сдвигом вверх. Не скрыть.
Прошу понять. Пролистываю Планету уже 2-й день. макросы описанные. что то не подходят. (не работают).
Страницы: 1
Наверх