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

Страницы: 1
Что быстрее: Дополнительные столбцы или 3-х этажная формула?
 
Здравствуйте

Подскажите пожалуйста что быстрее работает, дополнительные столбцы или 3-х этажная формула?

В приложенном файле 2 варианта расчёта: 1-й с разбитием формулы на столбцы, 2-й всё в кучу, в одной ячейке.
Какой вариант быстрее считается и меньше тормозит файл при открытии, если таких формул куча?

Интересно как происходит пересчёт книги:
Как я понимаю в 1-м варианте ИНДЕКС() в ячейке "F4" считается 1 раз и далее формула уже использует только значение.
А во 2-м варианте, ИНДЕКС() считается 6 раз, или вообще разницы нет?

Хотелось бы понять, что предпочтительнее использовать?
Изменено: AlexGor - 16.10.2024 09:26:57
Как занести в Выпадающий список строку из одной ячейки и строка стала списком?, Нужны выпадающие списки зависящие от значения в соседней ячейке.
 
Здравствуйте.

Подскажите пожалуйста:
как в выпадающем списке прописать ссылку на ячёйку в которой лежит выпадающий список в виде строки?
Или может какой разделитель использовать в строке, чтобы ВС эту строку воспринял как список?

Смысл в том, что у каждого значения в первом столбце свой ВС выбираемый из таблицы значений.
[ Закрыто] Выпадающий список, Как занести в ВС строку из одной ячейки и строка стала списком?
 
Здравствуйте.

Подскажите пожалуйста, гугл не помогает),
как в выпадающем списке прописать ссылку на ячёйку в которой лежит выпадающий список в виде строки?
Или может какой разделитель использовать в строке, чтобы ВС эту строку воспринял как список?

Смысл в том, что у каждого значения в первом столбце свой ВС выбираемый из таблицы значений.
Многократная обработка нескольких столбцов, Нужен оптимальный вариант пошаговой обработка нескольких столбцов. Через словари или коллекции, что в данном случае удобнее.
 
Здравствуйте.

Хотелось бы получить:
Сроков нет, пока кода нет обрабатываю в ручную, как код будет порадуюсь.
Хотелось бы получить хотя бы основу, (не костыльный вариант, а то как это делают знатоки, "правильно-оптимально") кода обработки первых двух проходов. Остальную рутину, кучу проверок, возможно допилю сам.
Хотелось бы иметь правильную основу, на моём файле (возможно хоть с минимальными приписками-пояснениями в коде, что куда. Или просто рабочий код), чтобы дальше учиться и дорабатывать остальной функционал.
Отдельно или вместе, код расчёта значения [Shg_KGdiff], ячейка V4. Как я понимаю чтобы уйти в код и вернуться на лист уже с окончательными значениями столбца DOCS в код, в начале нужно брать и столбцы из которых считается [Shg_KGdiff], по формулам в ячейках видно откуда что берётся.

Напишите пожалуйста в личку за сколько Вам интересно сделать часть, какую, или всё.
Сразу не отвечу, у меня уже ночь, да и выходные.)

Нужно обрабатывать 5 столбцов в несколько проходов. (для значения [Shg_KGdiff], ячейка V4 доп столбцы, видно по формулам)
1-й столбец - стиль изделия (STYLE = D)
2-й - размер, (SIZE =H)
3-й - (WORK = P) вес плановый из чертежа, но может быть и вес взвешивания, об этом говорит значение в столбце 4,
4-й - (Q) индикатор, какой вес в столбце 3
5 - (DOCS - R) вес из упаковочного листа.
1-й + 2-й столбцы = модель изделия. Нужно много раз проходить по всем позициям и проверять соответствие разным условиям.

Первый проход:
Обработку нужно делать по моделям т.к. если хоть у одной позиции есть результат взвешивания, остальным позициям, такой же модели ставим вес взвешивания.
Если в одной коллекции нет ни одного результата взвешивания то проверка и выполнение условия = у всех позиций, одной модели одинаковый вес.
Если вес различается, остановка обработки, сообщение и дальнейшая ручная корректировка базы. В моём файле первое такое сообщение выскочит на OEM 022 19x8.0 т.к. один вес =11,56 другой 11,58. После сообщения и ручной корректировки, в начале выполнения кода уже у обоих вес будет = 11,57
Аналогично OEM 022 19x9.0 после сообщения и ручной корректировки базы у обоих вес будет = 12,16

Второй проход, либо во время первого прохода:
Нужно сравнивать веса одинакового стиля (ст1) и разных размеров (ст2), чтоб у меньшего размера, не был вес больше, чем у большего размера.
Сравниваем OEM 022 19x8.0 и OEM 022 19x9.0: разница веса WORK  12,16 - 11,57=0,59. Соответственно разница веса в столбце DOCS 12,7 - 12,2= 0,5 не должна быть меньше 0,59, а у нас 0,5, это меньше. Нужно корректировать столбец DOCS: если [Shg_KGdiff] положительное значение, то меняем 12,7 на 12,79 (12,79=12,7+(0,59-0,5)) , если же отрицательное то 12,2 меняем на 12,11 (12,11=12,2-(0,59-0,5)). И так далее по всем строкам. Такое сравнение проводится только в рамках одного STYLE, разные стили между собой не сравниваются.

Отдельным блоком или может ёщё как нужно перевести в VBA расчёт значения [Shg_KGdiff], ячейка V4  т.к. дальнейшая обработка полностью зависит от этого значения, придётся постоянно выгружать промежуточные значения столбца DOCS что будет сильно тормозить процесс расчёта.

Дальнейшие проходы, не знаю сколько их получится:
Пока выгрузка обратно на лист, там работают формулы и считается общий вес. Сравниваем получившийся общий вес с общим весом контейнера из взвешивания. И разницу веса нужно равномерно распределить, помодельно, сначала на модели где нет взвешивания, а если каждой позиции уже добавлено до 1 кг, то остаток равномерно раскидывается на все модели где взвешивание есть.
Планировал проходить по модельно и каждому диску добавлять или убирать (в зависимости от значения [Shg_KGdiff]) по 0,1кг пока общий вес не сравняется. Но до этого ещё нужно дожить.
VBA Из массива создать коллекцию коллекций, VBA Разбить массив на коллекции и далее создать коллекцию из этих коллекций
 
Здравствуйте.
Моё первое знакомство с коллекциями, не судите строго.
Есть столбец его в массив (параллельно в такие же массивы берутся ещё несколько столбцов, с таким же количеством строк, это для информации)
Нужно разбить основной столбец на коллекции одинаковых значений и далее эти коллекции собрать в одну коллекцию, чтоб впихнуть их в "For Each".
Чтобы далее обрабатывать массивы согласно коллекциям.
Через циклы у меня это получилось, но только для 5-и уникальных:
Код
Sub Style()
  Dim i As Byte, StrStart As Byte, StrStop As Byte, QtyEL As Byte, Str_arr() As Byte, coll As Variant
  Dim collSTL As New Collection, collSTL1 As New Collection, collSTL2 As New Collection, collSTL3 As New Collection, collSTL4 As New Collection, collSTL5 As New Collection
  Dim cSTL1 As Byte, cSTL2 As Byte, cSTL3 As Byte, cSTL4 As Byte, cSTL5 As Byte
    StrStart = 7
    StrStop = 17
    QtyEL = 1 + StrStop - StrStart
    ReDim Style_arr(1 To QtyEL)
    Style_arr = ActiveSheet.Range(Cells(StrStart, 4), Cells(StrStop, 4)).Value
    'Значения в столбце 4 для заполнения Style_arr:  "OOO 022", "OOO 022", "OOO 022", "OOO 022", "OOO 023", "OOO 023", "OOO 023", "EEE 511", "EEE 511", "FF 431", "FF 431"
    For i = 1 To QtyEL
        If Style_arr(i, 1) = Style_arr(1, 1) Then
            collSTL1.Add Style_arr(i, 1)
        Else
            If cSTL2 = 0 Then cSTL2 = i
            If Style_arr(i, 1) = Style_arr(cSTL2, 1) Then
                collSTL2.Add Style_arr(i, 1)
            Else
                If cSTL3 = 0 Then cSTL3 = i
                If Style_arr(i, 1) = Style_arr(cSTL3, 1) Then
                    collSTL3.Add Style_arr(i, 1)
                Else
                    If cSTL4 = 0 Then cSTL4 = i
                    If Style_arr(i, 1) = Style_arr(cSTL4, 1) Then
                        collSTL4.Add Style_arr(i, 1)
                    Else
                        If cSTL5 = 0 Then cSTL5 = i
                        If Style_arr(i, 1) = Style_arr(cSTL5, 1) Then collSTL5.Add Style_arr(i, 1)
                    End If
                End If
            End If
        End If
    Next i
    collSTL.Add collSTL1
    If collSTL2.Count > 0 Then collSTL.Add collSTL2
    If collSTL3.Count > 0 Then collSTL.Add collSTL3
    If collSTL4.Count > 0 Then collSTL.Add collSTL4
    If collSTL5.Count > 0 Then collSTL.Add collSTL5
For Each coll In collSTL
    'Обработка
Next coll
End Sub
А в столбце может быть до 30 уникальных значений и соответственно нужно 30 коллекций. Мой код нужно увеличивать в 6 раз.

Подскажите пожалуйста: как сделать тоже самое но не так грамоздко?
ошибка VBA при наличии Китайских символов, В переменную падают "?" вместо Китайских иероглифов
 
Здравствуйте.
Ниже код переименования файлов, если имя файла содержит Китайские иероглифы, вместо них в переменную падают "?"
И соответственно VBA выдаёт ошибку.
Код
Private Sub Rnm_Fail()
  Dim RnmFail$
Application.ScreenUpdating = False
Application.DisplayAlerts = False
  ChDrive Left(ThisWorkbook.Path, 1)
  ChDir ThisWorkbook.Path
  AFLPath = ThisWorkbook.Path: If Right$(AFLPath, 1) <> "\" Then AFLPath = AFLPath & "\"
  RnmFail = Application.GetOpenFilename("Выберите фото (*.jpg),*.jpg", 1, "Выберите фото:  ")
  If Not RnmFail = "False" Then
    Name RnmFail As AFLPath & "111.jpg"
  End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Подскажите пожалуйста, как обойти этот момент?
Изменено: AlexGor - 18.03.2024 08:23:48
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Здравствуйте, уважаемые знатоки VBA, помогите пожалуйста.
Необходимо текст из переменной отформатировать и скопировать в буфер обмена, для последующей вставки.
В БО текст копирую этим кодом:
Код
Sub TEST_1()
    Dim Byf$
    Byf = "This is bold." & Chr(13) & "This is normal."
    SetClipBoardText Byf
End Sub
Function SetClipBoardText(ByVal Text As Variant) As Boolean
    SetClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.SetData("Text", Text)
End Function

Есть ещё такой вариант, не знаю есть ли между ними разница:
Код
Sub TEST_2()
    Dim Byf$
    Byf = "This is bold." & Chr(13) & "This is normal."
    With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    .SetText Byf: .PutInClipboard
    End With
End Sub
Возможно ли в VBA форматирование текста, копируемого в буфер обмена?
Может возможно использовать что-то типа:
Код
<p><em><span style="font-family:Calibri;color: rgb(0, 41, 114);font-size:11pt;">Коллеги, Здравствуйте.</em></span></p>
Если да, то как это записать в случае с переменной?
Хотя бы выделять "полужирным", уже было бы счастье)
Поиск по столбцу значения со значком и объединение, Необходим поиск по определённым столбцам ячейки со значением "↑ с верхней" и далее объединить с верхней ячейкой
 
Здравствуйте, нужна помощь.
Как в VBA прописать значок? Не прописывается искомое значение "↑ с верхней".

Если требуется объединение то формулами в нужных ячейках проставляется "↑ с верхней" и в таком случае необходимо очистить искомую ячейку и эту ячейку объединить с верхней ячейкой. Либо с верхней и ближайшей нижней, если ниже тоже значение "↑ с верхней".

Полуручной вариант накрапал: если выделена ячейка со значением "↑ с верхней" очистит и объединит, только не знаю как значок "↑" воткнуть.

Подскажите пожалуйста:
- как значок прописать?
- как настроить поиск только по необходимым столбцам и желательно только по ячейкам со значением. Не знаю нужно ли это но возможно с такам поиском код будет быстрее. А то листов в книге предостаточно и столбцов на листах уйма.

Моих знаний хватит только чтоб через "IF" идти сверху вниз по столбцу. Цто-то прям забуксовал.
Изменено: DjAlex77 - 20.06.2023 02:43:10
Из закрытой книги взять значения диапазона строк с объединёнными ячейками, по условию., Из закрытой книги нужны значения диапазона, но в диапазоне есть объединённые ячейки.
 
Уважаемые знатоки VBA
Помогите пожалуйста.
Необходимо из закрытого файла "D:\2023 ДР.xlsm", желательно не открывая его, взять и вставить в открытый "ЕО 2023.xlsm", диапазон значений (Только значения).
Темы про это есть, но в моём случае жизнь усложняют объединённые ячейки, как на входе так и на выходе.
По большому счёту нужно, если макрос запускаем на листе "Май23", обновить таблицу "ДР-Май" и обновить предыдущий месяц на листе "Апрель23", используя данные из закрытого файла "D:\2023 ДР.xlsm":
- т.к. выше таблицы "ДР-Май" есть другая таблица в которой не редко меняется количество строк, номер первой строки необходимого диапазона задан именем
Код
Range("DRT_Str").Row + 1

- нужно по столбцу "D" или "K" определить номер последней заполненной строки- это последняя строка диапазона.
- в этом диапазоне нужно взять значения столбцов начиная с "D" и до "K", или "X", они с "K" объединены, также нужны данные столбца "AB"
-всё это перенести в аналогичные столбцы открытого файла
- скрыть пустые строки в таблице "ДР" открытого файла (не обязательно, зная номер последней заполненной строки как то сам доковыряю)
- далее всё это с предыдущим месяцем.

Думал копировать необходимые строки, целиком, но значения в строку с объединёнными ячейками тоже не вставляются.
Избавиться от  объединённых ни как, выше таблица очень тяжёлая... Можно в закрытом файле от объединённых ячеек избавиться, но что это даст.
И сделать что то в VBA я могу только с открытыми книгами, как работать с закрытой для меня тёмный лес.
Пустая PLEX, Необходимо закрыть надстройку по образцу PLEX и создать файл, желательно "exe", для разблокировки "ОПЕРАТОР" и "РАЗРАБОТЧИК"
 
Здравствуйте.
Работа ещё актуальна!!!
Задачи пересмотрел, снимать и ставить защиту не нужно, установить защиту один раз и навсегда.

1. Защита.
Имея исходник надстройки защищаем и выпускаем защищённую рабочую надстройку:
- внёс изменения
- нажал на кнопку), получил новую, закрытую раз и навсегда версию
 возможно защищать в ручную, но тогда опять же нужна помощь, какая-то дорожная карта, как это сделать.
- рабочая надстройка лежит на яндекс диске
- заменил файл надстройки в месте её расположения
- при следующем запуске Excel, у всех обновлённая надстройка.

2. Базы.
Сейчас в рабочих документах есть скрытые листы куда через "Запросы и подключения" обновляются базы из EXCEL файлов.
- нужно как-то защитить листы на которые "Запросы и подключения" выгружает базы (защитить от просмотра и копирования, но так чтоб формулы и макросы необходимые данные брали)
- защита не должна мешать обновлению через "Запросы и подключения"

- разместил листы для загрузки баз непосредственно в надстройку, они там не видны, но на сколько это надёжно, и если VBA не защищён выдернуть их легко. Поэтому 2-й вопрос переплетается с 1-м.
- может Вы предложите какой-то другой защищённый вариант размещения таблиц с данными.


3. Ключ активации.
- Хотелось бы ключ активации надстройки, или ограничение по времени (действует 6 месяцев, в обновлённой версии другие даты, соответственно старые версии автоматом через 6 месяцев работать не будут.

Буду благодарен и готов оплатить хоть целиком, хоть по отдельности каждый из 3-х вопросов выше.
Изменено: AlexGor - 09.07.2024 07:28:27
VBA Сохранить много скрытых листов в PDF, Необходимо сохранить скрытых 150 листов в PDF
 
Уважаемые профи VBA
Подскажите пожалуйста как без тормозов, и возможно ли вообще, не используя циклы, сохранить большое количество скрытых листов в PDF?

Есть файл, в нём помимо разных листов есть скрытые, расположены по порядку, названия ярлыков "1,2,3,4,.....150"
Необходимо к примеру с 1-го по 105-й сохранить в 1-й.pdf, с 106-го по 120-й во 2-й.pdf, и с 120-го по 144 в 3-й.pdf.

Есть код:
Код
Sub PDF_1()
''Работает, но только с видимыми листами, имена листов игнорит, считает с первого видимого.
    ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Test\file1.pdf", _
    From:=2, To:=5, OpenAfterPublish:=True
End Sub

с выбором листов всё отлично, но для него нужно сделать видимыми листы с 1-го по 144-й и потом обратно их убрать.
Может есть какоето обращение к листам, чтоб как выше задать сразу "листы 1-144.Visible = True"?  

По отображению листов наковырял:
Код
Sub Скрыть()
''Работает, но так же выбрать 150 листов............!
    Sheets(Array("2", "3", "4", "5")).Activate
    ActiveWindow.SelectedSheets.Visible = False
End Sub
Sub Показать()
''Не работает...............?
    Sheets(Array("2", "3", "4", "5")).Activate
    ActiveWindow.SelectedSheets.Visible = True

    Sheets(Array("2", "3", "4", "5")).Visible = True
End Sub

Ещё вариант по сохранению в pdf:
Код
Sub PDF_2()
''Работает только с видимыми, и выбрать тут 150 листов............
    Sheets(Array("Лист2", "Лист3", "Лист4", "Лист5")).Select
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Test\file2.pdf", OpenAfterPublish:=True
End Sub


Вот этим пользуюсь, если нужно сохранить 1 лист:
Код
Sub PDF_3()
''Работает с одним листом, если лист видимый, Как выбрать 150 листов??????!
    FulName$ = "C:\Test\file3.pdf"
    ShNm$ = "Лист1"
    SavePDF ShNm, FulName
End Sub
Function SavePDF(ByVal ShNm As String, FulName As String)
Sheets(ShNm).ExportAsFixedFormat Type:=xlTypePDF, Filename:=FulName, Quality:=xlQualityMinimum _
    , IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Function

но как сюда, не используя цикл, воткнуть 150 листов?!
VBA Переименовать ярлык листа используя Китайский шрифт, Необходимо кодом VBA переименовать ярлык листа вставив в имя часть Китайского текста.
 
Здравствуйте
Помогите пожалуйста.
В книге иногда необходимо вставлять текстовые Китайские надписи: сейчас нужно в ярлык листа при переименовании, и далее, также кодом в некоторые ячейки. Как вставить код есть, но VBA упорно отказывается прописывать в коде Китайские иероглифы, всё заменяет "???????"

Подскажите пожалуйста: как научить VBA прописывать Китайский текст?
Пример - файл во вложении.
Изменено: DjAlex77 - 24.04.2023 01:28:35
Диалоговое окно в Excel 2013 не убирается, Как закрыть диалоговое окно в Excel 2013 до выполнения всех макросов?
 
Уважаемые знатоки VBA, здравствуйте.
Помогите пожалуйста как закрыть диалоговое окно в нужный момент?

По команде:
Код
DialogSheets("MENU").Hide
окно закрывается но не сразу, а только после выполнения всех макросов.

В предыдущей версии Excel это не было проблемой, а в 13-м не закрывшееся диалоговое окно перекрывает
Код
MsgBox

Из-за этого не нажать кнопку и приходится щёлкать все вкладки чтоб увидеть "MsgBox" либо чтоб увидеть то, что должен вывести макрос.

Оба файла положить в одно место.
В файле "E 2022.xlsm" по нажатию кнопки "TEST" появляется диалоговое окно и далее, по нажатию кнопки "ФАЙЛ" из файла "111 BDR.xlsm" создаётся файл "000 BDR.xlsx"
Изменено: DjAlex77 - 21.07.2022 04:42:52
Сохранить презентацию.pptx в PDF из Excel
 
Всем доброго времени суток! Уважаемые форумчане помогите пожалуйста дополнить макрос:
Необходимо из Excel, через VBA - Сохранить презентацию.pptx в .pdf
На просторах нэта нашёл такой код, подправил под себя, работает.

Подскажите пожалуйста как изменить код чтоб при открытии презентации обновлялись связи,
а потом уже конвертация в .pdf?
Код
Sub Test()
    'Чтоб работало, нужно в редакторе VBA во вкладке Tools опция References подключить Microsft Power Point Object Library
    On Error Resume Next
    ThisWorkbook.VBProject.References.AddFromFile Application.path & "\MSPPT.OLB"
    On Error GoTo 0
    Dim pp As New PowerPoint.Application
    With pp.Presentations.Open("Диск:\путь к файлу\???????.pptx")
        .ExportAsFixedFormat .path & "\test.pdf", 2&, 2&
        .Close
    End With
    If pp.Presentations.Count = 0 Then pp.Quit
    Set pp = Nothing
End Sub

Заранее Благодарен!

Такой код необходим для:
Есть файл Excel с кучей таблиц и постоянно добавляющихся данных.
Из этих таблиц посредством ссылок формируется презентация (открыл презентацию, при открытии новые данные подтянулись, презентация стала актуальной на сегодняшний день)
Эту презентацию необходимо ежедневно рассылать всем.
В течении дня работник работает в Excel файле, а в конце дня рассылает презентацию с учётом изменений текущего дня.
Задача установить кнопку в Excel файле - нажал кнопку письмо с .pdf файлом всем улетело.
Код для этой кнопки уже написал, всё работает, письмо с файлом улетает, но только если .pdf уже создан вручную.
Поэтому и нужен указанный выше код, чтоб его внедрить и вообще не лазить в Power Point.
Изменено: DjAlex77 - 24.09.2021 02:26:31
Поиск номера(букв) столбца по содержимому в строке., Интересует и VBA и Формульный варианты. Необходимо из одного файла вставить в другой файл номер(буквы) столбца из другого файла.
 
Уважаемые знатоки Excel Здравствуйте!
Помогите пожалуйста.
Есть файл "1 УЧЕТ.xlsx" в нём лист "Argus" на листе таблица, в ней столбец "Курс доллара". Файл доступен только для чтения и в файле другой оператор постоянно то добавляет то убирает какой-то столбец, соответственно имя необходимого столбца постоянно меняется и просто ссылка не работает. Необходимо чтоб в другом файле был всего один столбец в который при открытии будут добавляться курсы за новые даты. Мой вариант в рабочий файл в какую-то ячейку вставить имя искомого столбца и потом формулой уже растягивать на все даты. Но вот с именем искомого столбца помощь и нужна, интересны оба варианта: VBA и формулы. Может кто-то вообще другой вариант решения вопроса предложит.
Изменено: DjAlex77 - 18.09.2020 11:14:58
Outlook VBA изменить фон письма через HTML, Изменить фон письма Outlook через тело письма HTML из Excel
 
Уважаемые знатоки VBA здравствуйте.
Помогите пожалуйста. Необходимо изменить фон письма через HTML.
Вообще задача: создавая письмо Outlook из Excel вставить в письмо текст и изменить фон письма.
Как создать письмо и т.д. знаю, а вот с фоном проблем.
Я в HTML не специалист, не судите строго, наваял что-то методом научного тыка).
Вот код, вставляемый непосредственно в Outlook, планирую строки после ".HTMLBody =" вставить в код VBA Excel.
Код
Sub Test()
    Dim Inspector As Outlook.Inspector
    Set Inspector = Application.ActiveInspector()

    '1 фон письма - рисунок с диска
Inspector.CurrentItem.HTMLBody = "<head><meta charset=utf-8><title>background-image</title><style>" _
& "body {background-image: url(C:\imagesKYRH6AYS.jpg); /* Путь к фоновому изображению */" _
& "background-color: #efefef; /* Цвет фона */" _
& "}</style></head><body><p>Привет</p></body>"

    '2 пытался фоном письма сделать фон из стандартной темы Outlook "Геометрия"
Inspector.CurrentItem.HTMLBody = "<head><meta charset=utf-8><title>background-image</title><style>" _
& "body {background-image: url(image001.gif@01CD3469.D1EB1F70); /* Путь к фоновому изображению */" _
& "background-color: #efefef; /* Цвет фона */" _
& "}</style></head><body><p>Привет</p></body>"

    '3
Inspector.CurrentItem.HTMLBody = "<head><meta charset=utf-8><title>background-image</title><style>" _
& "body {background-image: linear-gradient(white, gray); /* Путь к фоновому изображению */" _
& "background-color: #efefef; /* Цвет фона */" _
& "}</style></head><body><p>Привет</p></body>"
    Set Inspector = Nothing
End Sub
Подскажите пожалуйста где ошибка?
Цвет фона письма меняется а вот "background-image" не работает ни в одном из 3-х вариантов.
Изменено: DjAlex77 - 06.03.2020 02:01:27
VBA копировать закрытый файл с удалением макросов, в фоне, Подправьте пожалуйста код
 
Уважаемые знатоки VBA,

Необходимо макросом открыть файл .xlsm и сохранить в другой папке как .xlsx без макросов и всё это произвести в фоне, без отображения.
Поиск помог создать 2 варианта, оба работают, но:

Код
sFileName$ = "G:\888.xlsm"
sNewFileName$ = "G:\111\999.xlsx"
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Set objExcel = New Excel.Application
Set myEx = objExcel.Workbooks.Open(sFileName)
    myEx.SaveAs FileName:=sNewFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Set myEx = Nothing
Set objExcel = Nothing

Application.DisplayAlerts = True
Application.ScreenUpdating = True

В первом варианте всё равно выскакивает запрос на сохранение без макросов, как убрать.


Код
sFileName$ = "G:\888.xlsm"
sNewFileName$ = "G:\111\999.xlsx"
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Workbooks.Open sFileName
ActiveWorkbook.SaveAs FileName:=sNewFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close


Application.DisplayAlerts = True
Application.ScreenUpdating = True

Файлов копируется несколько и хотелось бы чтоб на панели задач они не мелькали при открытии и закрытии.
Изменено: DjAlex77 - 25.04.2019 06:54:40
Макрос, выбирает часть таблицы и выводит её на экран в виде окна.
 
Уважаемые знатоки Excel, здравствуйте.
Помогите пожалуйста. В приложенном файле макрос который выбирает из общей таблицы часть этой таблицы по условию и далее, с сохранением форматирования, выводит эти данные на экран в виде отдельного окна. И также копирует выбранный кусок таблицы в буфер обмена, для последующей вставки в другое приложение. Макрос работает, но по непонятным мне причинам частенько выскакивает ошибка в момент вставки (заполнения диалогового окна).

Пожалуйста подскажите как убрать эту ошибку совсем?
Или может есть способ выполнить, описанные выше действия, каким-то другим способом?


Приложенный файл не нагружен формулами и макросами, поэтому ошибка выскакивает редко. В оригинальном файле много всего и ошибка выскакивает постоянно с 1-2 раза.
Если размеренно нажимать на кнопки, то ошибка может и не выскочить.

Чтобы быстро дойти до ошибки нужно:
нажать кнопку "TEST", появится окно с частью таблицы, берём мышкой появившееся окно и перемещаем, так чтобы кнопка "EXIT" совпала с кнопкой "TEST". Нажимаем "EXIT".
Так как кнопка "EXIT" теперь появляется прямо над кнопкой "TEST", молотим по левой кнопке мыши секунд 5, ошибка выскочит, если нет, запустить один раз "TEST 2", или кликнуть мышкой любую ячейку на листе, и снова молотить кнопку "TEST" секунд 5. После первого появления ошибки, она будет выскакивать очень часто.

Другой способ быстрого вызова ошибки:
Параллельно с моим файлом откройте второй свой файл (потяжелее, с макросами), тогда ошибка выскакивает с первого запуска.

Ошибка: "Run-time error '1004':
              Приложению Microsoft Excel не удаётся вставить данные."

В коде строка с ошибкой помечена:
Код
Private Function Инфо(ByVal Name As String, ByVal DialogName As String)
Application.ScreenUpdating = False
Sheets(DialogName).Visible = xlSheetVisible
Range(Name).Copy
Sheets(DialogName).Select
ActiveSheet.Shapes("Dialog 1").Select
ActiveSheet.Paste ' НА ЭТОЙ КОМАНДЕ ВЫЛЕТАЕТ ОШИБКА!!!!
Selection.ShapeRange.IncrementLeft 6#
Selection.ShapeRange.IncrementTop 20
Sheets("ОБРАЗЕЦ").Select
DialogSheets(DialogName).Show
Range(Name).Copy
Application.ScreenUpdating = True
End Function
Изменено: DjAlex77 - 20.12.2018 07:32:24
Удалить выпадающие списки из книги кодом VBA
 
Всем доброго времени суток.
Уважаемые специалисты, подскажите пожалуйста код VBA,
Как удалить выпадающие списки со всей книги?
С помощью "Selection.Validation.Delete" получилось удалить выпадающие списки, но в книге листов много,
каждый лист "Selection" и т.д. в общем файл тормозит.
По идее должно быть что-то типа:
Код
Sub Formulas_To_Values_Book()
'преобразование формул в значения во всей книге
    For Each ws In ActiveWorkbook.Worksheets
        ws.UsedRange.Value = ws.UsedRange.Value
    Next ws
End Sub

Но вот как сюда "Validation.Delete" вставить?

Помогите Пожалуйста!
Номер строки с минимальным значением в ячейке одного столбца, по условию в другом столбце
 
Всем доброго времени суток! Уважаемые форумчане помогите пожалуйста:
Необходимо по столбцу 1 (A) найти номер строки с самой ранней (мин) датой, но при этом по столбцу 8 (H), найденной строки, значение ячейки должно быть больше 0.
Если возможно, интересуют оба варианта: и макросом и формулами

Дальше думаю смогу сам:
Если такая строка найдена, в ячейку столбца 4 (D) вставляем Дату Вывоза (Ячейка I1), а в ячейку столбца 6 (F) вставляем значение из ячейки столбца 3 (С).
Далее ищем новую строку с минимальной датой и т.д. пока значение Осталось вывезти (Ячейка F1) не сойдёт в 0.
В приложенном примере, на втором листе то, что должно получится.

Для чего нужно, если кому интересно:
Есть товар, расфасованный в разную тару, с разными датами поступления на склад. При отгрузках со склада списывается по правилу первое пришло - первое ушло. Частичная отгрузка из одной ёмкости возможна, для списания остатка из одной ёмкости есть раздел "Вывоз №2".

Заранее Благодарен!
Макрос Копировать в буфер обмена, Не работает Макрос, выдаёт "User-defined type not defined". В чём разница между двумя файлами?
 
Всем добрый день!
Подскажите пожалуйста в чём разница между двумя файлами?
В одном макрос работает в другом выдаёт сообщение: "User-defined type not defined"
Преобразование строковой переменной в имя Excel, Вставка таблици в диалоговое окно или MsgBox
 
Уважаемые форумчане подскажите пожалуйста:
Как в VBA строковую переменную преобразовать в имя Excel
В книге есть ячейка с именем "MU_Перевозчик1" и значением "Машина" и ячейка с именем "MU_Перевозчик2" и значением "Поезд"
Также в книге есть таблица1, ей присвоено имя "Машина" и таблица2, ей присвоено имя "Поезд"
Код
Sub Перевозчик1()
Перевозчик = [MU_Перевозчик1] ' = Машина
ПеревозчикиИнфо Перевозчик
End Sub
Sub Перевозчик2()
Перевозчик = [MU_Перевозчик2] ' = Поезд
ПеревозчикиИнфо Перевозчик
End Sub
Private Function ПеревозчикиИнфо(ByVal Перевозчик As String)
Application.ScreenUpdating = False
'ааааа = "[" & Перевозчик & "]"
'[ааааа].Copy  НЕ РАБОТАЕТ!
    [Перевозчик].Copy 'НЕ РАБОТАЕТ, если "Перевозчик" заменить на "Машина" или "Поезд" всё ок, но мне необходимо чтоб само менялось, в зависимости с какого Sub зашёл
    Sheets("PEREV").Select
    ActiveSheet.Shapes("Check Box 3").Select
    ActiveSheet.Paste       'Вставляет скопированную таблицу в диалоговое окно
    Selection.ShapeRange.IncrementLeft 6#
    Selection.ShapeRange.IncrementTop 20
    Sheets("Ежедневник").Select
DialogSheets("PEREV").Show
End Function

Или может существует другой способ, как вставить таблицу в диалоговое окно или MsgBox?
Помогите пожалуйста!
Создать новую папку с добавлением к имени номера, Необходимо макросом проанализировать имена существующих папок и создать следующую по порядку номеров папку
 
 Доброго времени суток! Прошу помощи! Помогите написать макрос:
Есть папка по адресу «G:\Департамент\06.2016\ », в ней папки с именами:
«0 Файлы »
«99 Иванов»
«100 Петров »
«101 Сидоров »
«102 Соколов »
«Все »
«Общие »
Есть имя «Орлов». Необходимо макросом создать
следующую по порядку номеров папку «103 Орлов», а если папка «… Орлов» уже есть выдать сообщение:    MsgBox "Папка «Орлов» существует, с номером «…», Вы хотите создать новую папку «103 Орлов»?"

Знаю как создать папку по необходимому адресу, но как проанализировать имена существующих и определить следующий по порядку номер?!
Макрос. Поиск номера строки по значению в столбце
 
Доброго времени суток! Прошу помощи! Помогите написать макрос:
Есть два файла: 1-й (Макросы ПЛАН.xlsm) "Документ", 2-й (ИСХОДЯЩАЯ КОРРЕСПОНДЕНЦИЯ.xls) "Таблица" регистрации всех документов.
Кое как слепил макрос: по нажатию кнопки в "Документе" открывается файл "Таблица", по столбцу "С" определяется верхняя свободная строчка, в неё вставляются данные регистрируемого документа, из "Таблицы" копируется номер и вставляется в "Документ", затем "Таблица" закрывается с сохранением.

Как проверить зарегистрирован ли уже документ с такими же данными (исполнителя опускаем), если да - "Сообщение", нет - "Другое сообщение"
Теорию вроде понимаю: по столбцу "B" определить номер строки с номером регистрируемого документа, а дальше по строке через "if" проверить совпадают ли остальные данные. Но это прописать в VBA не получается!!!

В примере есть несколько кодов про это, но под себя приспособить ни ка не получается!!! В VBA новичок. Свой писал методом научного тыка, РАБОТАЕТ.)))
Строку If IsEmpty(c.Offset(-1, 0)) Then Set c = c.End(xlUp) Else Set c = c.Offset(1, 0) вообще не понимаю как работает, главное что она даёт мне номер последней заполненной строки, причём на чистом листе (без форматирования) данный код выдаёт другой номер строки.

1. Помогите пожалуйста с проверкой!!! (Главный вопрос)
2. Может мой код можно отшлифовать?

ЗАРАНЕЕ БЛАГОДАРЕН!!!!!
Сохранить активный лист как .png файл и отправить через Outlook, За полный, чётко работающий код готов заплатить. Буду БЛАГОДАРЕН просто за помощь!
 
Доброго времени суток! Прошу помощи! Помогите написать макрос:
Как из активного листа сделать .png файл?
В идеале .pdf, но целиком как картинка, как будто оригинал распечатали и отсканировали!
Можно ли с помощью макроса управлять Adobe Acrobat? У меня XI Pro. Если да, подскажите код (открыть PDF, сохранить как PNG, PDF удалить)

Сейчас:
Исходный файл - это документ, на нём команды и вставленные росписи руководителей.
Каждый раз после редактирования файл печатается как оригинал затем на сканер и в рассылку.
Если сканера и принтера под рукой нет то в стандартный .pdf потом Акробатом в .png так как .png (вес качество) оптимальный и в рассылку.

Стандартный .pdf не подходит:
Сохранённый стандартным способом .pdf в 300 раз весит больше (скан 11 КБ стандартный .pdf = 300 КБ) и самое главное стандартный .pdf не выглядит как сканированный оригинал, на нем можно отдельно выделить текст и каждую картинку отдельно. А необходимо весь лист одной картинкой.

НЕОБХОДИМ макрос:
1) который сохранит файл имя: (год.месяц.дата НАЗВАНИЕ.png) в текущую папку, где год.месяц.дата из ячейки (В1), Название из (В5)
2) отправит на печать, на сетевой принтер
2) создать в Outlook письмо, прикрепить к нему созданный .png, вставить список адресов получателей, тему и обязательно подпись автоматически (ту которая у отправителя в автомате) другой outlook, другая подпись.

Во вложении файл .exl образец, в нём, в VBA, кода которые нашёл по этой темен. Второй файл .png это то, что необходимо получить для рассылки.

ЗАРАНЕЕ БЛАГОДАРЕН!!!!!
Сохранить активный лист как СКАН и отправить через Outlook
 
Добрый день! Прошу помощи! Помогите написать макрос:
Как из активного листа сделать .png файл
В идеале .pdf но целиком как картинка, как будто оригинал распечатали и отсканировали!

Исходный файл - это документ, на нём команды и вставленные росписи руководителей.
Каждый раз после редактирования файл печатается как оригинал затем на сканер и в рассылку.
Сохранённый стандартным способом .pdf в 300 раз весит больше (скан 11 КБ стандартный .pdf = 300 КБ) и самое главное стандартный .pdf не выглядит как сканированный оригинал. Если сканера и принтера под рукой нет то в стандартный .pdf потом Акробатом в .png так как .png (вес качество) оптимальный и в рассылку.
В идеале: 1) макрос который сохранит файл (год.месяц.дата ИМЯ.pdf) в текущую папку
                 2) после сохранения создать в Outlook письмо, прикрепить к нему созданный .pdf, вставить список адресов получателей и тему.
Второй пункт для меня пока вообще космос, пока хотя бы сохранить!
Сохранить активный лист в PDF как картинку, Помогите с макросом!!!
 
Добрый день! Прошу помощи! Помогите написать макрос:
Как сохранить активный лист в виде картинки (скан) PDF или PNG с именем файла "B1 пробел B5".pdf
Дата (в имени файла) из ячейки "B1" в формате: 2015.08.22
Был бы благодарен за помощь.  
Пример прилагаю:
Изменение текста примечания в зависимости от содержания ячейки
 
Добрый день! Прошу помощи в таком вопросе:
Есть ячейка значение выбирается из выпадающего списка, как сделать чтоб текст примечания (или сообщения) менялся, в зависимости от значения ячейки?
Был бы благодарен за помощь.
Пример прилагаю:
Страницы: 1
Наверх