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

Страницы: 1
Получение списка файлов в папке с указанием для каждого файла количества ячеек, содержащих определенный текст.
 

Здравствуйте, уважаемые форумчане. Нужна помощь в макросе.

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

Нужно получить такой файл Прайсы-заказы.xlsm

в колонке А = список файлов в папке поиска, в колонке В количество ячеек к конкретном файле в определенной строке на нужном листе, которые содержат текст опл

Так как в каждом прайсе номер строки и имена листов с названиями заказов разные, пришлось сделать справочник, в котором указаны эти данные для каждого прайса

Я смог написать макрос, который выводит список файлов в папке.

НО если файл с макросом находиться в той же папке, то выводиться и его название. Поэтому файл с макросом лежит в другой папке, а в макросе жестко прописано название папки, что неудобно, поэтому желательно брать путь к папке из файла

Код
Sub ListFilesInFolder()
  Dim folderPath As String, fileName As String
  Dim fileNum As Integer
  Dim rowNum As Long

  ' Путь к папке
  folderPath = "C:\Прайсы"

  ' Очищаем предыдущий список (если есть)
  Columns("A").ClearContents

  ' Задаем начальную строку для вывода списка
  rowNum = 1

  ' Получаем первый файл в папке
  fileName = Dir(folderPath & "\*.*")

  ' Пока есть файлы в папке
  Do While fileName <> ""
    ' Записываем имя файла в ячейку
    Cells(rowNum, 1).Value = fileName

    ' Увеличиваем номер строки для следующего файла
    rowNum = rowNum + 1

    ' Получаем следующий файл
    fileName = Dir()
  Loop

  ' Автоматически подстраиваем ширину столбца
  Columns(1).AutoFit

  ' Выводим сообщение об успешном завершении
  MsgBox "Список файлов сформирован."
End Sub


Однако дальше не получается.

Можете помочь с макросом, который делал бы следующее:

  • вывести список всех файлов в папке, указанной в файле-примере в E1

  • для каждого прайса ищет в ячейках строки (ее номер в столбце I), находящейся на листе  (название в столбце J) все ячейки, содержащие текст из ячейки E2. Надо учитывать, что в ячейках строки могут разные типы данных, а также просто пустые ячейки

  • выводит общее количество таких ячеек (фактически количество оплаченных заказов в конкретном прайсе) в столбце B, напротив соответствующего прайса.

Заранее всем большое спасибо!
Макрос для удаления столбцов, если в конкретной строке в ячейках содержится определенное слово
 
Здравствуйте уважаемые форумчане.
Нужен макрос для Excel 2010, который будет делать следующее:
если в таблице на "Лист1" в строке 3 в какой-либо ячейке есть слово "Удалить", то надо удалить соответствующий столбец.
В приложенном примере надо удалить 20 столбцов.
Посмотрел похожие темы на форуме, попробовал несколько макросов, но ничего не работает.
Обратился к ИИ, Gemini посоветовал такой код
Код
Sub УдалитьСтолбцыПоУсловию()

  Dim ws As Worksheet
  Dim lastCol As Long
  Dim i As Long

  ' Устанавливаем рабочий лист (измените "Лист1" на название вашего листа)
  Set ws = ThisWorkbook.Worksheets("Лист1")

  ' Получаем номер последнего столбца с данными в строке 3
  lastCol = ws.Cells(3, ws.Columns.Count).End(xlToLeft).Column

  ' Цикл по столбцам, начиная с последнего и двигаясь влево
  For i = lastCol To 1 Step -1

    ' Проверяем, содержит ли ячейка в строке 3 слово "удалить" (без учета регистра)
    If InStr(1, LCase(ws.Cells(3, i).Value), "удалить") > 0 Then

      ' Если найдено, удаляем столбец
      ws.Columns(i).Delete

    End If

  Next i

End Sub
Тоже не работает.
Возможно дело в том, что внутри таблице некоторые ячейки в строке пустые? В таком случае, как можно это решить?
Просто заполнить чем-то пустые ячейки в этой строке нежелательно.
Заранее большое спасибо за помощь!
Макрос для сохранения активного файла в ту же папку, из которой был открыт
 
Добрый вечер, написал макрос, который сохраняет активный файл под именем из определенной ячейки в файле. Мне надо, чтобы файл под новым именем сохранялся в ту же папку, из которой был открыт. А у меня упорно сохраняет или в предыдущую папку, с которой работал, или в папку, где находится файл с макросами. Подскажите, пожалуйста, что надо добавить в макрос? Вот код
Код
Sub SaveActiveWorkbookAs_3()
    Dim FN As String
    Dim activeWb As Workbook
    Set activeWb = ActiveWorkbook
    
    FN = activeWb.Sheets("Параметры").Range("A1").Value
    activeWb.SaveAs FN
    MsgBox "Файл сохранен как " & FN
    End Sub
Формула массива для нахождения в тексте слов из списка исключений
 

Добрый день, уважаемые форумчане!

Требуется помощь в написании формулы массива.

Вот задача (все данные в приложенном файле).

В колонке А находится список названий книг, который надо проверить на наличие слов-исключений. Эти слова находятся в F2:F5. Если в наименовании  находится слово, или часть слова, или сразу несколько слов из таблицы исключений, то в соответствующей колонке столбца D пишется слово DELETE, иначе в этой же ячейке прописывается наименование книги без изменений.

Формула, с помощью которой я решил эту задачу, есть в ячейке А2

В полном объеме тысячи наименований на разных листах файла, и потом еще будет обработка этих таблиц. Список слов-исключений меняется, то становиться больше, то меньше. Каждый раз приходиться переписывать формулу.

Есть ли возможность написать формулу, которая будет автоматически подстраиваться под список исключений?

Как я понимаю, надо превратить список исключений в умную таблицу (сделано) и применить формулу массива, но формула ПОИСК в виде массива работать не хочет…

Нужно решение, которое будет работать в Excel 2010.

На форуме есть несколько похожих тем, но и меня не получилось их использовать для решения этой задачи.
Заранее всем большой спасибо!
Переместить макросом первый столбец таблицы в правый край таблицы
 
Здравствуйте, на форуме есть похожие темы, но там немного не те решения которые нужны.

Нужен макрос, который будет частью другого макроса. Сейчас у меня обработка данных проходит в первом столбце таблицы, а после завершения расчетов 1й столбец надо переместить в вправо, так, чтобы он стал крайним правым столбцом. Для меня проблема заключается в том, что обрабатываются разные файлы, в них разное количество столбцов и строк. Но всегда перемещается первый столбец (А:А) в правый край таблицы.
Небольшой пример в файле.

Заранее всем большое спасибо за помощь!
Формула для суммы чисел, которые находятся в одной ячейке и разделены запятой
 
Добрый вечер.
Есть таблица, в столбце находятся числа. Но в некоторых ячейках этого столбца находится не одно число, а несколько, разделенные запятой с пробелом.
Нужна именно формула, которая поможет в столбце рядом получить сумму всех чисел, находящихся в соседних ячейках, по строкам.
Все данные в файле. Нужна именно формула, так как в ручном режиме протягивается строка с разными формулами, которые собирают данные из разных таблиц.
Нашел похожую тему на этом форуме здесь, но мне это не подходит, так как там макросы, а мне желательна именно формула.
Тоже пришел в конструкции типа
Код
="="&ПОДСТАВИТЬ(A2,", ","+")
но потом требуются еще действия: скопировать, вставить значения, вручную еще раз вставить =. Это не совсем то, что нужно.
Заранее всем большое спасибо за помощь!
Определение издательства по справочнику, исходя из части кода книги
 
Добрый день.
Нашел достаточно много похожих тем на этом форуме, но никак не могу решить свою задачу.

Есть прайс поставщика с кодами книг, но в этом прайсе не указаны издательства книг.
Мне надо рядом с кодом книги написать издательство. У кодов книг разные структуры, но в каждом коде книге "зашит" код издательства.
Есть справочная таблица, где с каждым кодом издательства написано его название.
Как можно формулами решить эту задачу? В приложенном файле написал, что есть и что надо получить.
Заранее всем спасибо за помощь!
Макрос для сортировки таблицы переменного размера
 
Добрый день. Есть таблица с заказами, она обрабатывается макросом. Но потом сортировку делаю вручную.
Таблица с заголовками колонок, сортируется по колонке A по алфавиту А->Я

Решил автоматизировать этот процесс. Записал макрос макрорекордером. И проблема в том, что количество заказов и товаров (т.е. строк и стобцов) каждый день разное, а в макросе прописан фиксированный диапазон.
Можно доработать макрос, чтобы он автоматически подстраивался под размеры таблицы? Таблица всегда начинается с А1, пустых строк в ней нет, названия столбцов тоже без пустых ячеек.
Заранее  большое спасибо за помощь!
Код
Sub Макрос5()
'
' Макрос5 Макрос

    Range("A1:O36").Select
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("A2:A36"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range("A1:O36")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
Скопировать строку на новый лист, если ячейка содержит определенные значения из справочника
 
Добрый день.
Есть таблица, которая содержит более 40000 строк. Надо полностью скопировать на новый лист только те строки, у которых текст в ячейках в колонке ISBN начинается  с кодов 978-5-04-, 978-5-699-, 978-5-00117-, 978-5-00146-, 978-5-00169-
Есть макрос, который все это делает
Код
Sub ISBN()
    Dim iTimer As Single
    iTimer = Timer
    
Dim i&
For i = 1 To Cells(Rows.Count, 11).End(xlUp).Row
If Cells(i, 11) Like "978-5-04-*" Or Cells(i, 11) Like "978-5-699-*" Or Cells(i, 11) Like "978-5-00117-*" Or Cells(i, 11) Like "978-5-00146-*" Or Cells(i, 11) Like "978-5-00169-*" Then
Rows(i).Copy
Sheets("Отбор").Cells(Sheets("Отбор").Cells(Rows.Count, 11).End(xlUp).Row + 1, 1).PasteSpecial
End If
Next
Application.CutCopyMode = False
    
   MsgBox "отбор завершен." & vbCrLf & "Время выполнения макроса  " & Format((Timer - iTimer) / 86400, "Long Time"), vbInformation, "ОТБОР ISBN"


End Sub
Сначала у меня было 2 варианта отбора, теперь 5, и это не предел.
Я все условия отбора включил в макрос, а можно сделать так, чтобы условия отбора выбирались из справочника, который находиться на отдельном листе? Тогда при изменении условия отбора можно будет просто добавить в справочник новые данные.
Исходный файл и результат работы макроса прилагаются.
Спасибо!
Макрос для получения текста по web-ссылке
 
Уважаемые форумчане, требуется помощь в небольшом макросе.

Поставщик дает аннотацию к товару, но оформляет ее в виде web-ссылки в xls-файле. Т.е., чтобы прочитать аннотацию, надо кликнуть по ссылке, открывается браузер и можно читать. Соответственно, чтобы добавить эту информацию в свой прайс, ее надо скопировать и вставить. НО у поставщика больше 10000 товаров. Руками как-то больно. Сам не  могу придумать, как автоматизировать этот процесс.
Файл с примером прикладывается. В колонке А ссылки от поставщика, надо, чтобы после отработки макроса, в колонке В появился текст, который храниться по сслыке.
А2 = ссылка, В2 = текст, полученный по ссылке.
Заранее все большой спасибо!
Макрос, который ищет конкретный текст в ячейках определенных колонок, и выдает сообщение о наличии или отсутствии этого текста
 

Добрый день.

У меня для обработки данных на основе прайсов поставщиков с помощью макроса  делается таблица (файл ПРИМЕР, лист РЕЗУЛЬТАТ). Обычно все данные в итоге есть, кроме некоторых данных КАТЕГОРИЯ (столбец M). В моем макросе включался автофильтр по этому столбцу, и по окончании работы я сразу видел, где надо дополнительно поискать данные.

Однако теперь данных может не хватать в трех столбцах (J, K, M). В этом случае автофильтр не помогает, так как нужных данных может не быть в разных строках.

Можно сделать такой макрос, который проверял бы определенные столбцы на отсутствие нужных данных и выдавал бы сообщение по результату работы? Т.е. в проверяемых колонках или есть все данные, или нет.

Критерии проверки

В колонке J надо искать строки с текстом год ? (если такие строки есть, то данных не хватает)

В колонке К надо искать строки с текстом нет аннотации (если такие строки есть, то данных не хватает)

В колонке M надо искать строки с текстом № ??? (если такие строки есть, то данных не хватает)

Сообщение желательно вида, например

КОЛОНКА J есть все данные

КОЛОНКА K данных не хватает

КОЛОНКА M данных не хватает

И было бы замечательно, если бы макрос проверял, что если все данные есть (а такое бывает), то в колонках J, K, M формулы заменяются на их значения и макрос останавливается.

Заранее всем спасибо за помощь

Макрос для удаления картинок и строк до начала таблицы с данными
 
Добрый день.
Есть прайс от поставщика, сверху листа до начала таблицы с данными есть картинка с логотипом и разные формулы которые обсчитывают заказ.
Мне для дальнейшей обработки данных нужна только таблица.
Чтобы убрать ненужную часть написал простенький макрос
Код
Sub Макрос8()
'удаление картинок и строк до начала таблицы
ActiveSheet.DrawingObjects.Select
    Selection.Delete
    Rows("1:16").Select
    Selection.Delete Shift:=xlUp
    Selection.AutoFilter
End Sub
Но у меня в макросе жестко прописаны строки с 1 по 16, которые надо удалить. Однако, как оказалось, могут приходить прайсы, где количество ненужных для меня строк до начала основной таблицы разное.
Можно как-то поменять макрос, чтобы он автоматически считал строки до начала таблицы с данными и удалял их? И картинку тоже, разумеется.
Шапка таблицы с данными не меняется.

Заранее всем большое спасибо!
Файл примера прилагаю
Снятие объединения ячеек на листе для сортировки таблицы, ускорить работу макроса
 
Добрый день.
Есть прайс от поставщика, его надо подготовить для дальнейшей обработки. Я сделал большой макрос. В Excel 2019 он работает примерно 40 сек, очень хорошо.
Но на работе стоит Excel 2010, и в нем этот же макрос работает примерно 4мин 40сек. О-о-очень долго.
Весь прайс содержит более 6000 строк и размер 13MB, прикладываю сокращенный файл с прайсом

На первый взгляд, "тормозит" в самом начале. Там идет такая обработка: выделяется весь лист, убирается "слияние ячеек" и весь лист сортируется по колонке А.
Вот часть макроса, которая отвечает за это:
Можно ка-то оптимизировать именно под 2010-й Excel?
Код
Range("A1").Select
'выбор всего листа и снятие слияния ячеек

Cells.Select

    With Selection
        '.HorizontalAlignment = xlCenter
        '.VerticalAlignment = xlBottom
        '.WrapText = False
        '.Orientation = 0
        '.AddIndent = False
        '.IndentLevel = 0
        '.ShrinkToFit = False
        '.ReadingOrder = xlContext
        .MergeCells = False
    End With
    'сортировка по колонке А = код книги в издательстве. 
        Cells.Select
    ActiveWorkbook.Worksheets("TDSheet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("TDSheet").Sort.SortFields.Add Key:=Range( _
        "A:A"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("TDSheet").Sort
        .SetRange Range("A:W")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Изменено: vikttur - 09.07.2021 13:46:49
Макрос для удаления строк, если в столбцах есть конкретный текст
 
Добрый день.
Есть прайс, который обрабатывается большим макросом. В процессе обработки надо удалить строки, в ячейках которых есть определённый текст, в данном случае, слово "наклейки" в разных падежах и начинающееся и с заглавных и со строчных букв. На этом форуме нашел похожий макрос от  Mershik, немного доработал и работает. Но дело в том, что нужное слово встречается в 3 колонках и начинается с большой и малой букв.
Поэтому я 5 раз вставляю этот макрос в свой, чтобы убрать все строки.
Как я понимаю, можно эту обработку сделать сразу, выделив всю таблицу, но у меня не получается...
Заранее большое спасибо всем, кто сможет помочь в этом.
Ниже часть кода макроса, связанная как раз с удалением ненужным строк. В приложении таблица, в том виде, какой получается к началу работы макроса по удалению строк.
Код
Sub nakl_B()
'удаление строк с "накл" в столбце B
Dim cell As Range, i As Long, lr As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
If Cells(i, 2) Like "*накле*" Then
    If cell Is Nothing Then
        Set cell = Cells(i, 1)
    Else
        Set cell = Union(cell, Cells(i, 1))
    End If
End If
Next i
    If Not cell Is Nothing Then cell.EntireRow.Delete
'удаление строк с "Накл" в столбце B
Dim cell2 As Range, i2 As Long, lr2 As Long
lr2 = Cells(Rows.Count, 1).End(xlUp).Row
For i2 = 2 To lr2
If Cells(i2, 2) Like "*Накле*" Then
    If cell2 Is Nothing Then
        Set cell2 = Cells(i2, 1)
    Else
        Set cell2 = Union(cell2, Cells(i2, 1))
    End If
End If
Next i2
    If Not cell2 Is Nothing Then cell2.EntireRow.Delete
'удаление строк с "накл" в столбце D
Dim cell3 As Range, i3 As Long, lr3 As Long
lr3 = Cells(Rows.Count, 1).End(xlUp).Row
For i3 = 2 To lr3
If Cells(i3, 4) Like "*накле*" Then
    If cell3 Is Nothing Then
        Set cell3 = Cells(i3, 1)
    Else
        Set cell3 = Union(cell3, Cells(i3, 1))
    End If
End If
Next i3
    If Not cell3 Is Nothing Then cell3.EntireRow.Delete
'удаление строк с "накл" в столбце R
Dim cell4 As Range, i4 As Long, lr4 As Long
lr4 = Cells(Rows.Count, 1).End(xlUp).Row
For i4 = 2 To lr4
If Cells(i4, 18) Like "*накле*" Then
    If cell4 Is Nothing Then
        Set cell4 = Cells(i4, 1)
    Else
        Set cell4 = Union(cell4, Cells(i4, 1))
    End If
End If
Next i4
    If Not cell4 Is Nothing Then cell4.EntireRow.Delete
'удаление строк с "Накл" в столбце R
Dim cell5 As Range, i5 As Long, lr5 As Long
lr5 = Cells(Rows.Count, 1).End(xlUp).Row
For i5 = 2 To lr5
If Cells(i5, 18) Like "*Накле*" Then
    If cell5 Is Nothing Then
        Set cell5 = Cells(i5, 1)
    Else
        Set cell5 = Union(cell5, Cells(i5, 1))
    End If
End If
Next i5
    If Not cell5 Is Nothing Then cell5.EntireRow.Delete
End Sub

 
Макрос по очистке форматирования таблицы работает в Excel 2019 и не работает в Excel 2010
 
Добрый день.
Есть большой прайс от поставщика (6200 позиций+), необходимо сделать предварительную обработку, чтобы потом загрузить в складскую программу.
Прайс-образец в приложении (100 строк, чтобы загрузить на сайт). С помощью макрорекордера сделал макрос, добавил в него еще код.
В Excel 2019 работает нормально, но в конце после обработки при сохранении выдает такой текст "Рисунок слишком велик у будет усечен", хотя рисунка в файле нет.
В чем может быть причина? Как это исправить?
На компьютере, где будет работать макрос, стоит Excel2010, и там макрос "вылетает" в самом начале, на сортировке, см. фото.
2010й не понимает команду сортировки? Какую команду лучше использовать для сортировки?
Вверху таблицы 10 пустых строк (обычно), но бывает и другое число, поэтому я выделяю весь лист, снимаю выделение ячеек и запускаю сортировку по колонке А = Артикул поставщика. После этого получается таблица с данными сверху листа, и потом идут заголовки разделов, которые мне не нужны. Затем разделяю столбец с гиперссылкой на 2 колонки: в одной ссылка, в другой текст (в данном случае, код товара).

Помощь нужна, чтобы заставить работать макрос в Excel 2010 и исключить ошибку при сохранении "Рисунок слишком велик у будет усечен".
Заранее всем большое спасибо за помощь!


Код макроса
Код
Sub выделение_всего_листа_снятие_слияния_HL()
'
'выбор всего листа и снятие слияния ячеек

Cells.Select

    With Selection
        '.HorizontalAlignment = xlCenter
        '.VerticalAlignment = xlBottom
        '.WrapText = False
        '.Orientation = 0
        '.AddIndent = False
        '.IndentLevel = 0
        '.ShrinkToFit = False
        '.ReadingOrder = xlContext
        .MergeCells = False
    End With
    'сортировка по колонке А = код книги в издательстве
        Cells.Select
    ActiveWorkbook.Worksheets("TDSheet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("TDSheet").Sort.SortFields.Add2 Key:=Range( _
        "A:A"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("TDSheet").Sort
        .SetRange Range("A:W")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
  'перенос колонки с гиперссылками в крайний правый столбец
    Columns("B:B").Select
    Selection.Cut
    Range("X1").Select
    Selection.Insert Shift:=xlToRight
'выделение ссылки из гиперссылки,вставляет текст в любом месте листа, где есть гиперссылка (справа от ячейки)

Dim HL As Hyperlink

For Each HL In ActiveSheet.Hyperlinks
HL.Range.Offset(0, 1).Value = HL.Address
Next
'преобразование ссылки в обычный текст на всем листе
Cells.Hyperlinks.Delete
End Sub
В работе макроса определить, что в колонке: цифры или код ошибки и “направить” работу макроса по нужному пути.
 

Добрый день. Требуется помощь в макросе.

Есть прайс поставщика, для работы с ним у меня есть большой макрос.

Проблема в следующем: у поставщика в прайсе категории товаров  — это слово, текст. У нас в базе эта категория заменяется на номер категории — цифру. В ходе работы макроса с помощью таблицы подстановки по формуле заменяется ИМЯ КАТЕГОРИИ на НОМЕР КАТЕГОРИИ (число). Примерно раз в несколько месяце поставщик вводит новую категорию, или меняет название старой. В этом случае в результате подстановки у меня вместо цифры появляется ошибка #Н/Д. Сейчас приходиться каждый день после завершения работы макроса включать фильтр в колонке КАТЕГОРИЯ и искать #Н/Д.

Можно в код макроса встроить обработчик ошибки, который проверял бы, что находиться в колонке КАТЕГОРИЯ после работы формулы подстановки : цифра или ошибка? Если цифра, то формулы во всем столбце заменяются на значения и макрос работает дальше. Если ошибка #Н/Д, то формулы остаются (не меняется на значение), ставиться фильтр на эту колонку и включается по #Н/Д и макрос также идет дальше.

Так как в конце макроса файл просто сохраняется под текущей датой, то обработка ошибки на это не влияет,

В примере я просто оставил несколько таблиц без кода моего макроса

Заранее всем большое спасибо!

Макрос выбора файла через диалоговое окно - как сделать файл активным
 
Добрый день.
Мне надо открыть файл через диалоговое окно и сделать этот файл активным, чтобы выполнить дальнейшую обработку.
Вот код макроса, который запускает окно выбора файла, и открывает файл.
Однако при этом открытый файл не становиться активным, и дальше макрос не работает.
Как я понимаю, надо где-то сохранить имя открытого файла, и затем через Workbooks.Open Filename:= надо или открыть конкретный файл, или указать ячейку на листе, куда заносится имя открытого файла.
Так как имена файлов, которые будут открываться, постоянно меняются, то надо универсальное решение.
Заранее большое спасибо всем за помощь!


Код
Sub open_price()
    Dim OP As FileDialog
    Dim x, lf As Long
       Set OP = Application.FileDialog(msoFileDialogOpen)
    With OP
        .AllowMultiSelect = False
        .Title = "Выбрать файл прайса АЗБУКА"
        .Filters.Clear
        .InitialFileName = ""
        If OP.Show = 0 Then Exit Sub
        For lf = 1 To .SelectedItems.Count
            x = .SelectedItems(lf)
            Workbooks.Open Filename:=x

            
        Next
    End With
    End Sub
Функция Replace убрать галочку на ЯЧЕЙКА ЦЕЛИКОМ
 
Нужна помощь по работе функции Replace.
Есть макрос, в ходе работы которого в данных нули в клетках заменяются на ПУСТО.
Кусок кода макроса с этой функцией выглядит так:
Код
.Replace What:="0", Replacement:="", LookAt:=xlWhole
Заменять надо только 0, так как иначе в годе 2021 ноль тоже заменяется.
Проблема в том, что после выполнения этого макроса в стандартной функции Excel "ПОИСК" или "ПОИСК и ЗАМЕНА" в разделе параметры возле "ЯЧЕЙКА ЦЕЛИКОМ" появляется галка. И потом при работе с этой таблицей приходиться все время отключать эту галку при поиске, постоянно забываю это сделать, поиск "не работает и т.д."
Есть возможность в самом макросе убрать эту галку? Насколько я понимаю, надо изменить параметр LookAt:=xlWhole на LookAt:=xlPart
Но у меня никак не получается это сделать.
Заранее всем большое спасибо!
Макрос для копирования блока формул на то число строк, которое есть в таблице с данными
 
Здравствуйте.
Мне каждый день надо обрабатывать несколько таблиц с данными. Из складской программы они выгружаются в неудобном формате, приходиться данные подправить перед работой с ними. Я записал макрос макрорекордером, но проблема в том, что таблицы с разным количеством строк, сейчас примерно 8500, и каждый день количество меняется. Макрорекордер записал диапазон с определенным количество строк. Поэтому я увеличил диапазон строк с формулами до 12000 (с запасом), потом копирую данные "в себя" и очищаю ячейки с нулями, т.е., где нет данных.
Можно сделать так, чтобы при запуске макроса автоматически протягивать вниз формулы, которые находятся в во второй строке в файле ФОРМУЛЫ.XLS на такое количество строк, которые занимают данные в таблице в файле ДАННЫЕ.XLS?
Сейчас код макроса выглядит так
Код
Sub Formula_Dannye_Vyravnivanie()
'
' Formula_Dannye_Vyravnivanie Макрос
'

'
    Range("A2:K2").Select
    Selection.Copy
    Range("A2:K12000").Select
    ActiveSheet.Paste
    Columns("A:K").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=6
    Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
Также прикладываю файлы с формулами и данными
макрос для определения размера диапазона с переменным количество строк
 
Уважаемые форумчане, требуется помощь.
Если вкратце: есть таблица, первая строка - заголовки колонок (всего 10) и первая строка таблицы — формулы, которые берут данные из другого файла (Файл1) и обрабатывают их.
Задача: надо скопировать строку с формулами вниз по листу на n-строк. Количество строк задается размером таблицы в Файле1. Количество этих строк меняется каждый день, обычно их там около 10000 строк.
И вот определить макросом размер диапазона, откуда берутся данные, никак не получается.
Хочу максимально автоматизировать процесс, но не знаю, как протянуть первую строку с формулами на все строки с данными так, чтобы получить все данные из Файла1, так как в основном использую макрорекордер.
При этом я могу посчитать количество строк в Файле1.

То есть в макросе мне надо как-то определить диапазон, куда вставить формулы.
У меня есть начало диапазона A2,  формулой СЧЁТЗ посчитал число строк, и есть последняя колонка К
В конкретном случае диапазон A2:K8569. Но число строк все время меняется.
Можно написать макрос, который на основании таких данных определит диапазон, куда надо вставлять формулы?
Или просто скопирует данные за нужное число строк, определенное по СЧЁТЗ
Заранее всем спасибо за ответы!
Ошибка run-time error1004 при работе макроса сохранения файла
 
Добрый день.
Проблема такая: есть файл, расширение файла xlsm.
В нем делаются вычисления, затем запускается макрос, который копирует активный лист в новый файл, сохраняет его в файл с названием export и текущей датой.
Но, если я хочу сделать файл с макросом как шаблон с расширением xltm, то при запуске макроса получаю сообщение run -time error 1004.
В чем может быть ошибка?

Код
Sub save_data()
    Dim dtDate As Date 
    dtDate = Date
    
    Dim s As Worksheet 
    Dim wb As Workbook  
    Set wb = ActiveWorkbook
    For Each s In wb.Worksheets
        s.Copy
        ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "export_" & Format(dtDate, "dd-mm-yyyy") & ".xlsx", FileFormat:=51
    Next
    ActiveSheet.Shapes("Button 1").Select 
   Selection.Delete
         End Sub
Открытие файла с режимом Protected View через макрос
 
Нужна помощь или в настройках Excel или в тексте макроса. Есть макрос, который открывает 3 файла и выполняет различные действия над ними. На работе в локальной сети все работает нормально. Если заходить в рабочую сеть через VPN с домашнего компьютера, то 2 файла открываются нормально, а на третьем файле макрос останавливается и выдает ошибку run-time error '-2147021892 (80070bbc)'
Это ошибка при открытии файла в Protected View.
Все настройки в Центре безопасности, связанные с этим, отключил. Добавил папку с файлами в доверенные пути. Ничего не помогает.
Может быть, можно в самом макросе прописать, чтобы конкретный файл открывался уже в нормальном виде, который можно редактировать?
Сейчас этот кусок в макросе выглядит так
Код
ChDir "X:\Прайсы"
    Workbooks.Open Filename:="X:\Прайсы\Прайс1.xls"
    Workbooks.Open Filename:="X:\Прайсы\Прайс2.xls"
    Workbooks.Open Filename:="X:\Прайсы\Прайс3.xls"

Excel 2010, у нас стоит давно разработанная складская программа, с более новыми версиями EXCEL отказывается работать

Страницы: 1
Наверх