Проблема в том, что мне надо для кода определить наличие горизонтальных линий в области. Таблица огромная, выгружается из программы корпоративной. Отсутствие границ означает, что ее содержимое (обычно текст где-то по середине) распространяется на все ячейки (что-то вроде объединения), когда как в области 1 тоже может быть текст только где-то по середине, но относиться он к определенной строке, где и расположен.
Единственный вариант определить принадлежность текста (к определенной строке или всем) - это определить наличие горизонтальных строк в области. Голову сломал как они это сделали.
Форматирование повторяет, но ответы не дает. Пробовал. Хотя это означает, что какой-то параметр они меняют для отображения/скрытия этих границ.
Добрый вечер. Во вложении есть пример файла, в котором две области "A3:A10" и "B3:B10". Во второй области, как видно, не отображаются горизонтальные границы. Сравнил параметры линий ( .LineStyle, .ColorIndex и тд.) заливку - все одинаково.
Помогите разобраться в чем суть. Заранее огромное спасибо.
Позвольте воскресить этот запрос, так как столкнулся с проблемой. При использовании примера Казанского наткнулся на некорректную работу в следующем случае:
Код
r.Characters(400).InsertAfter vblf
а также в тех случаях, когда в тексте ячейки уже присутствует перенос строки. Как понимаете, текст при ActiveSheet.Paste копируется не в нужную ячейку, а в несколько ячеек (зависит от количество vblf в тексте).
Подскажите способ иного переноса текста из Shapes в ячейку без потери формата текста.
Андрей VG написал: Что вы под этим подразумеваете?
Некая программа может направлять результаты расчетов только на печать. Расчеты я автоматизировал, в качестве принтера по умолчанию установил PDFCreator с автоматическими параметрами сохранения. Что бы в дальнейшем работать с результатами мне нужно знать куда PDFCreator сохраняет файлы и под каким наименованием - думал это возможно узнать средствами VBA.
Настройки принтера могут быть изменены другим пользователем, по этому было бы неплохо иметь возможность корректировать их в процессе выполнения макроса. Вносить изменения в реестр у меня не получится, отслеживать изменения онлайн мне не нужно.
Jungl написал: если вас устроит отдельное приложение
Интересует именно через VBA. Я понимаю, что отдельное приложение можно запустить через VBA - не вариант. Если отсутствует возможность изменения настроек, то хотя бы узнать текущие настройки по пп.2, 3.1-3.4
Jungl написал: Aleksey , каков бюджет сего предприятия? Для чего эта возня с настройками, если не секрет
Будет частью глобального макроса, который облегчит мне и коллегам работу. На одной машине могут работать несколько пользователей. Бюджет - назовите свою цену, исходя из трудозатрат, думаю договоримся. Если задача не решаемая, прошу отписать.
Задача обусловлена этой темой. На ПК установлена последняя версия PDFCreator 3.2.0. Необходимо с помощью макроса VBA изменить настройки PDFCreator. 1. Узнать какие существуют профили 2. На форме"Принтер": узнать какой профиль активирован и при необходимости его изменить. 3.1. На форме"Профиль" вкладка "Сохранить": проверить активировано автоматическое сохранение профиля или нет, если нет активировать его. 3.2. На форме"Профиль" вкладка "Сохранить": узнать под каким именем осуществляется автоматическое сохранение и иметь возможность изменить его. 3.3. На форме"Профиль" вкладка "Сохранить": узнать в какую папку сохраняются результаты и иметь возможность изменить ее. 3.4. На форме"Профиль" вкладка "Сохранить": отключать опцию "Открыть файл после сохранения" и "Показывать быстрые действия" Сохранить выбранные настройки.
Doober, В моем примере, я открываю pdf Word-ом - но я просто не знаю как это сделать по-другому))) На тех ПК где будут пользоваться этим макросом стоит Acrobat Reader DC, и Microsoft Office 2010. Как я знаю Microsoft Office 2010 не может корректно открыть pdf файл, поэтому вариант открытия через Acrobat мною приветствуется, поддерживается головой,руками и ногами!!!
Как только не пытался, а до ума свой макрос довести не смог. Прошу помощи.
Задача: Рисунок.pdf - файл содержимое которого будет периодически меняться (цикл). Название файла меняться не будет.. 1. Необходимо копировать рисунок со второго листа файла Рисунок.pdf 2. Вставить в Word, добавить название рисунка из таблицы файла Исходный.xlsb 3. Добавить возможность вставки в конце цикла таблицы из Исходный.xlsb на первый лист Word
Файлы: Исходный.xlsb - в нем исходные данные, макрос, который принципе является ТЗ с подробным описанием действий. Рисунок.pdf - сам объект работы. Файл docx - то, что хотел бы получить.
Андрей VG, Ничего не понял даже с гугл переводом. А нет ни у кого примера работы PDFCreator версией 2 и выше в VBA, особенно интересует как узнать, а потом и изменить настройки автосохранения (если это возможно).
Андрей VG,Спасибо за наводку. Для моей версии в примерах тоже указано Set PDFCreatorQueue = CreateObject("PDFCreator.JobQueue") Теперь ошибка не возникает, но:
Код
Sub Test(): Dim iPDFCreator, s
Set iPDFCreator = CreateObject("PDFCreator.JobQueue")
s = iPDFCreator.cOption("UseAutosave")
End Sub
на строчке s = iPDFCreator.cOption("UseAutosave") выдает ошибку "error 438: object doesn't support this property or method", а в окне "Locals" iPDFCreator имеет следующие параметры: : Count : 0 : Long : NextJob : <Invalid index. Please check the index parameter.> : IPrintJob По моему что-то не так)))
Установлен: Windows 10 x64, MO 2013, PDFCreator 2.5.3 Возникла необходимость узнать параметры настройки автосохранения PDFCreator 1.1 При запуске макроса из этой темы post_371371 выдает ошибку "can't find project or library". 1.2 Отключил библиотеку "MiSSING: PDFCreator", выдает ошибку "user-defined type not defined" на строке "Private WithEvents PDFCreator1 As PDFCreator.clsPDFCreator" 1.3 Нашел и подключил библиотеку "PDFCreator_COM", ошибка не пропала
2.1 При запуске макроса из этой темы post_326569 (файл PrintPDF_PDF Creator.xlsm) возникают те же проблемы на строке "Dim pdfjob As PDFCreator.clsPDFCreator"
3.1 Пробовал вариант Set iPDFCreator = CreateObject("PDFCreator.clsPDFCreator"), нашел в инете, выдает ошибку "activex component can't create object" 3.2 Нашел на англоязычном форуме, что ошибка связана с отключенной NET framework - у меня все норм.
БМВ, Огромное спасибо, третий вариант идеален, так как именно таким способом я узнавал имя принтера)) Осталось только добавить: Set WshNetwork = CreateObject("Wscript.Network") и WshNetwork.SetDefaultPrinter strPrinterName Следующий раз буду умнее - буду выкладывать свой код или пример файла.
Уважаемые форумчане подскажите какой командой или кодом VBA можно изменить принтер по умолчанию - Аналог "Панель управления\Все элементы панели управления\Устройства и принтеры - Назначить принтером по умолчанию" По поиску нашел как определить имя нужного принтера (пример - PDFCreator), номера его порта (пример - iPDFCreator (Ne06:)), а как назначить его принтером по умолчанию не пойму. Заранее спасибо.
Доброго времени суток!!! Столкнулся с следующей проблемой. В примере есть макрос при запуске которого копируется формат строк (мне необходима высота строк).
Код
Sub mgbeg()
Лист1.Range("$A$3:$A$1373").Clear: Лист18.Range("$A$3:$A$1373").EntireRow.Copy
Лист1.Range("$A$3:$A$1373").EntireRow.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub
При первом использовании проблем нет, например высота строки №13 составляет 110,25. При повторном использовании макроса строки (в которых отсутствует объединение) уменьшается до минимального значения, например высота строки №13 становится 15,75 в то время как на листе "Исходник" (Лист18) она составляет 110,25. Запоминать высоту каждой строки области перебором не вариант, т.к. количество строк в области может достигать 12000. Подскажите как можно решить это проблему.
Доброго времени суток знатоки Excel. Проблема ограничения текста длиной в 256 символов меня преследует, в связи с чем прошу помощи. Есть 2 макроса: Первый создает коллекцию уникальных значений высоты строк и запоминает соответствующие им области.
Код
For Each iCells In Obl 'Запоминаем уникальные значения высоты строк в коллекцию
On Error Resume Next:
If iCells <> "" Then Coll.Add CStr(iCells.RowHeight), CStr(iCells.RowHeight)
If NewObl Is Nothing Then Set NewObl = iCells Else Set NewObl = Union(NewObl, iCells)
On Error GoTo 0
Next iCells:
iОбласть(i) = NewObl.Address
В итоге получается 2-а массива (высота строк, адрес области)
Второй макрос возвращает строкам ранее запомненные высоты строк, так как между ними пользователь осуществляет различные действия, которые приводят к изменению высоты различных строк, т.е. возвращаем первоначальный вид листу.
Однако обнаружил проблему несоответствия высоты ряда строк их первоначальному виду. Опытным путем обнаружил, что при:
Вот может мне кто-нибудь объяснить: 1. String - Используется для хранения текста. Может содержать от 0 символов до приблизительно 2 миллиардов символов. В чем проблема? 2. Можно ли ее решить? 3. Есть ли другие способы решения моей задачи. У меня пока только одна идея - 1-м макросом делать копию листа. Извините за "простыню текста"
Sub DateCells()
'Date()— возвращает текущую системную дату
ActiveCell.Value = DateSerial(Year(Date), Month(Date), 1) 'Первый день
ActiveCell.Cells(2,1).Value= DateSerial(Year(Date), Month(Date) + 1, 0) 'Последний день
End Sub
И не будет))) По крайне мере в том файле, что вы приложили, так как в столбце R на листе 1 и столбце М на листе 2 нет ни одного одинакового значения. Для примера я скопировал одно значение из листа 1 в лист 2 и все отработало.
Доброе времени суток знатоки Excel!!! Прошу не закидывать камнями за ниже озвученный вопрос!!! А есть команда для выделения столбца без учета объединенных ячеек по горизонтали, т.e. аналог клика в название столбца вверху ячеек? Данная команда естественно не подходит:
Код
Columns(2).Select
т.к. при наличии объединенных ячеек по горизонтали выделяются все столбцы объединенного диапазона.
Sub uuu() Dim i&
Dim c As Range
'------------------
Application.ScreenUpdating = False
For Each c In ActiveSheet.UsedRange.Cells
If c.Value <> "" Then
For i = Len(c.Value) To 1 Step -1
With c.Characters(Start:=i, Length:=1)
If .Font.Superscript = True Then .Delete
End With
Next
End If
Next
Application.ScreenUpdating = True
Beep
MsgBox "Готово!"
End Sub
Доброе время суток уважаемые форумчани!! Хочу попросить помощи в решение следующей задачи. В ячейке содержится текст где каждый символ имеет свои свойства (формат), в том числе и надстрочные символы. Необходимо удалить надстрочные символы в тексте так, чтобы формат остальных символов остался неизменным. Единственное что придумал, это: 1. Создание двумерного массива: Массив(параметры To колич. символов) 2. Перебор текста по одному символу и сохранение параметров каждого символа в массив (с помощью: ячейка.Characters(i, 1).Font) 3. Поиск надстрочных символов, их удаление, присвоение остальным символам соответствующий формат
Вроде все предельно ясно, но лист который я буду обрабатывать содержит тысячи ячеек и текст там далеко не в 3 символа. Есть другой более простой способ решения этой задачи?
Пример текста и желаемого результата прикладываю. Спасибо всем заранее!