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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 161 След.
Ширина и высота ячеек, Не получается точно указать ширину и высоту ячеек
 
Цитата
Михаил Нарвич написал:
потом увидел, что тема "архивная"
А где Вы это увидели?
Владимир
Р7 офис, Импортозамещение аналог excel
 
К словам Михаила добавлю, что ONLYOFFICE - продукт с открытым исходным кодом (как и LibreOffice) и при очень большом желании ( :)  )выдвинутые гипотезы (например, про SetValue и GetValue) можно превратить в утверждения.
Владимир
Ширина и высота ячеек, Не получается точно указать ширину и высоту ячеек
 
Здравствуйте, Михаил!

Да, какие-то искажения будут. Главное - Excel будет сам сражаться с особенностями принтера.  :)
Владимир
Р7 офис, Импортозамещение аналог excel
 
Поскольку наш форум обычно отвечает (почти) на все вопросы, то вот ключ к разгадке вопроса о загадочном поведении методов GetValue и SetValue.

Откройте новый документ  в P7 или ONLYOFFICE (у меня версия 8.3.3.21) с языком интерфейса "Русский" и занесите в ячейку A1 число 1,2 (или другое дробное).

Выполните макрос (JS):
Код
function test()
{
    const oRange1 = Api.GetActiveSheet().GetRange("A1");    
    const oRange2 = Api.GetActiveSheet().GetRange("A2");
    oRange2.SetValue(oRange1.GetValue());
} 
test();

У меня в ячейке A2 появляется дата 1 февраля 2025 года с соответствующим форматом ячейки.
Это говорит о следующем (в P7 могут быть другие результаты - проверьте):
1. Метод getRange возврашает строку (string) и для ячеек, содержащих число. Если эта ячейка содержит число, то число преобразуется в текст в соответствии с правилами JS (без учета настроек локали).
2. Метод setRange интерпретирует текст при занесении в ячейку в соответствии с настройками локали.
Изменено: sokol92 - 01.05.2025 17:06:58
Владимир
Ширина и высота ячеек, Не получается точно указать ширину и высоту ячеек
 
Я бы начал с уcтановки масштаба "разместить не более чем на 1 стр. в ширину и 1 стр. в высоту".
Изменено: sokol92 - 01.05.2025 16:14:21
Владимир
Р7 офис, Импортозамещение аналог excel
 
Посмотрел запись. Докладчик молодец, правда, в 1:36:32 кто-то задал коварный вопрос.
Владимир
Р7 офис, Импортозамещение аналог excel
 
Спасибо за ссылку. Функция Msgbox (или аналог) появилась?
Владимир
ДР (ex HB)
 
Уважаемый Юрий, с днем рождения!
Вы внесли и вносите исключительный вклад в успех этого форума и все мы Вам бесконечно благодарны. Примите наилучшие пожелания здоровья и успехов!
Владимир
Лучший парсер VBA-Json (ваше мнение)
 
Давайте проверим эффективность предлагаемых решений для Excel VBA на примере типового json - файла, аналогичного тем, которые возвращаются Web-сервисами.
Порядок проверки:
1. Создаем каталог C:\temp (если не существует)
2. Выполняем макрос CreateJson (см. ниже). Значения переменных nRows (число строк) и nCols (число столбцов) можно менять.
Макрос создает json - файл C:\Temp\example.json с кодировкой UTF-8.

Задача: выполнить парсинг этого файла и занести данные из этого файла в диапазон ячеек новой книги Excel (nRows строк, nCols столбцов).
Рассказать о результатах: примененный метод, время выполнения.
Код
Option Explicit

Sub CreateJson()
  Dim nRows As Long, nCols As Long, i As Long, s As String, arr
  
  nRows = 10000
  nCols = 30
  
  ' Генерируем объект Json с ключами "Field_i" и значениями "Значение i"
  ' Это представление одной записи результата.
  For i = 1 To nCols
    s = IIf(s = "", "{", s & ",") & """Field_" & i & """:""Значение " & i & """"
  Next i
  s = s & "}"
  
  ' Генерируем массив из nRows одинаковых записей
  ReDim arr(1 To nRows)
  For i = 1 To nRows
    arr(i) = s
  Next i
  
  s = "[" & Join(arr, ",") & "]"
  
  ' Записываем в файл C:\temp\Example.json в кодировке UTF-8
  Text_SaveToFile s, "C:\temp\example.json", "utf-8noBOM"
  
End Sub

'
' Источник макроса : https://excelvba.ru/code/TextFile
' © 2022 ExcelVBA.ru
'
Function Text_SaveToFile(ByVal txt$, ByVal Filename$, Optional ByVal Encoding$) As Boolean
    ' функция сохраняет текст txt в кодировке Encoding$ в файл filename$
    ' возвращает TRUE, если сохранение прошло успешно
    ' © 2022 ExcelVBA.ru
    On Error Resume Next: Err.Clear
    If Encoding$ = "ANSI" Then Encoding$ = "windows-1251"
    If Encoding$ = "" Then Encoding$ = "UTF-8" ' кодировка по умолчанию: UTF-8
    
    Select Case Encoding$
        Case "utf-8noBOM"
            With CreateObject("ADODB.Stream")
                .Type = 2: .Charset = "utf-8": .Open: .WriteText txt$
                Dim binaryStream As Object: Set binaryStream = CreateObject("ADODB.Stream")
                binaryStream.Type = 1: binaryStream.Mode = 3: binaryStream.Open
                .Position = 3: .CopyTo binaryStream        'Skip BOM bytes
                .flush: .Close
                binaryStream.SaveToFile Filename$, 2
                binaryStream.Close
            End With
 
        Case Else
            With CreateObject("ADODB.Stream")
                .Type = 2: .Charset = Encoding$: .Open: .WriteText txt$
                .SaveToFile Filename$, 2: .Close
            End With
    End Select
    Text_SaveToFile = Err = 0: DoEvents
End Function
Владимир
VBA. Медленная работа cells.copy и cells.format, На некоторых компьютерах.
 
Я думаю, что попытка за 0,66 сек 100 раз обновить буфер обмена является непростой задачей для MS Windows (да еще с учетом того, что может быть включено журналирование изменений буфера обмена). Можно добавить после обновлений буфера обмена вызов функции DoEvents, что повысит стабильность,  но замедлит время выполнения.
Владимир
VBA. Медленная работа cells.copy и cells.format, На некоторых компьютерах.
 
После сохранения в формате .xlsm (который можно анализировать) у меня (Excel 2016 Win 10) Ваши тесты выдают (стабильно) результаты такого порядка:(округлено до 2 знаков после запятой):

test1: 0.42
test2: 0,66
test3: 0,64
test4: 0,01

Остаюсь при своих рекомендациях.

P.S. У Вас макрос находится в модуле листа (а не стандартном модуле), так что не запускайте его кнопкой.
P.P.S. После команды PasteSpecial, если буфер обмена больше не нужен, лучше добавить строку:
Код
Application.CutCopyMode = False
Изменено: sokol92 - 23.04.2025 17:04:47
Владимир
VBA. Медленная работа cells.copy и cells.format, На некоторых компьютерах.
 
Спасибо за подготовленный пример.
Методы 2-3 100 раз копируют информацию в буфер обмена и вставляют информацию из буфера обмена. В эффективных программах необходимо минимизировать количество таких операций.

Общее замечание - следует минимизировать число взаимодействий между VBA и Excel. Копирование диапазона ячеек во много раз быстрее, чем копирование каждой ячейки этого же диапазона по отдельности.
Изменено: sokol92 - 23.04.2025 12:43:33
Владимир
VBA. Медленная работа cells.copy и cells.format, На некоторых компьютерах.
 
Файл - пример и описание действий, приводящих к неэффективной работе макросов, помогли бы прояснить ситуацию.
Владимир
Значение ячейки сделать адресом., Значение ячейки сделать адресом.
 
В A3:
=ДВССЫЛ(A2)
Владимир
Вставка массива в ячейки (VBA), Какой то странный баг со значениями после вставки
 
Цитата
Sanja написал:
Это транспонирование шалит.
+1.
Совет для читателей темы: никогда не используйте Application.Transpose (если только Вы не разработчик Excel и не видели исходного кода  программы).  :)

Поясню (упрощенно) суть вышеуказанного эффекта в макросе из стартового сообщения.
После цикла форматирования массива arr элементами массива являются переменные типа Variant подтипа Date. Поскольку такого типа данных для ячеек Excel не существует (в Excel датам соответствуют числа), то метод Application.Transpose преобразует эти даты в текст (в соответствии с локальными настройками). При присвоении значения свойству Value, наоборот, ожидается не локализованное выражение.
Изменено: sokol92 - 03.04.2025 18:02:50
Владимир
Как в строку состояния в excel добавить произведение выделенных ячеек?, В строке состояния в excel произведение выделенных ячеек
 
Цитата
МатросНаЗебре написал:
Вариант побыстрее.
Можно еще попробовать поиграться с такой конструкцией:
Код
Debug.Print Application.Product(Selection)

Должна понимать все варианты для непустого Selection (ячейка, диапазон, несколько диапазонов).
Владимир
Как в эксель включить поддержку открытия файлов с длинной пути более 259 символов ?
 
Цитата
БМВ написал:
я про Excel ибо он резал все время до еще более короткого, оставляя место под имя листа и прочее и получалось 216 символов.
Здравствуйте, Михаил!
Excel 2016 и 2019 не работает с "длинными" путями (без трюков с префиксами), более новых версий у меня нет, но, учитывая желание Microsoft сохранять преемственность ошибок...

Цитата
БМВ написал:
возможно поможет использование пути в виде \\?\D:\very long path
Для читателей темы: обзор этой проблематики здесь.
Владимир
Как в эксель включить поддержку открытия файлов с длинной пути более 259 символов ?
 
Документация здесь. Кроме наличия вышеуказанного ключа (LongPathsEnabled) в реестре требуется, чтобы манифест приложения содержал элемент longPathAware.
Изменено: sokol92 - 27.03.2025 19:58:37
Владимир
Размер и жинеспособность файла
 
Цитата
Сергей Лисицын написал:
как и где можно узнать, какие функции игнорируют пустые диапазоны, а какие нет?
В первую очередь, читать здесь и соседние разделы.
Изменено: sokol92 - 24.03.2025 16:19:44
Владимир
Как упорядочить цифры в столбце по возрастанию?
 
Требуемый метод сортировки называется "натуральная сортировка" (natural sort). Насколько мне известно, в Excel этот метод сортировки штатными методами не реализован.
Изменено: sokol92 - 08.03.2025 18:28:11
Владимир
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
Цитата
Алексей Вячеславович написал:
отчего так "распух" ПУСТОЙ файл?
1. Выделите на каждом листе ячейку "A1" и нажмите CTRL+Shift+End (определение использованной области листа).
На листе "ИД" выделяются  все строки по 65536.
2. На листе "ИД" выделите интервал строк (полных) 27-65536 и удалите эти строки. Сохраните файл.
У меня размер файла уменьшается до 44K.
Владимир
[ Закрыто] Формат csv
 
Цитата
Hugo написал:
А для UDF не важно если их будет больше 10ти
Хорошо бы дожить до ноября 2286 года...   :D
Владимир
[ Закрыто] Формат csv
 
Время указано в формате UNIX (в миллисекундах после 1970-01-01).
Код
=ДАТА(1970;1;1)+A1/24/3600000
Изменено: sokol92 - 02.03.2025 17:26:27
Владимир
сохранение файлов *.ods в *xls* на макросе LibreOffice
 
Успехов! Сообщите, пожалуйста, о результатах.
Владимир
сохранение файлов *.ods в *xls* на макросе LibreOffice
 
В файле - шаблоне используются две группы элементов управления "Переключатели". Выбранное значение первой группы заносится в скрытую ячейку W32, второй группы - в скрытую ячейку X32. По-видимому, далее значения скрытых ячеек обрабатываются при сборе информации.

В LibreOffice эта конструкция с переключателями не работает. Можно предложить использовать выбор элемента из списка (ячейки C32 и K32 в приложенном файле). При этом значения скрытых ячеек W32 и X32 должны формироваться правильно.
Прилагаемый файл предназначен для Excel и LibreOffice. В LibreOffice после заполнения файл следует сохранить в том же формате (.xlsm).  


Разумеется, над дизайном можно еще поработать.
Владимир
сохранение файлов *.ods в *xls* на макросе LibreOffice
 
Нужно посмотреть на исходный шаблон в формате .xlsm (с макросами и элементами управления), который Вам прислали для заполнения. Тогда возможно будет давать рекомендации, как с ним работать в LibreOffice.
Изменено: sokol92 - 24.02.2025 20:32:15
Владимир
сохранение файлов *.ods в *xls* на макросе LibreOffice
 
Шаблон для файла иванова.ods был изначально разработан в Excel, затем заполнен в LibreOffice Calc и сохранен в формате .ods.
Нужно посмотреть исходный шаблон (.xlsm или .xltm), возможно ли его заполнить в Calc и сохранить в исходном формате (.xlsm). Как указано выше, создание таких шаблонов требует определенной квалификации.
Изменено: sokol92 - 24.02.2025 20:00:36
Владимир
сохранение файлов *.ods в *xls* на макросе LibreOffice
 
Цитата
Miroslavovna написала:
EXCEL на ASTRA LINUX нет
Цитата
Miroslavovna написала:
часть сотрудников работает в excel

Два варианта для подготовки исходного шаблона Оценочной формы.

1. Та часть сотрудников, которая работает в Excel, готовит Оценочную форму в формате .xlsm (см. мое сообщение выше).

2. Оценочная форма готовится в LibreOffice и сохраняется в формате .xlsx (макросы, которые "понимает" Excel, Вы все равно не сможете написать).

Шаблоны форм смогут заполняться как в Excel (MS Windows), так и в LibreOffice Calc (AstraLinux или MS Windows).



Третий вариант - делать разные шаблоны для заполнения в Excel (в формате .xlsm) и в Calc (.ods). Этото вариант более трудоемкий, но предоставляет больше возможностей.
Изменено: sokol92 - 24.02.2025 18:34:18
Владимир
сохранение файлов *.ods в *xls* на макросе LibreOffice
 
Цитата
Miroslavovna написал:
часть сотрудников работает в excel, часть в Libre
Используйте формат .xlsm, шаблоны и макросы создавайте и редактируйте в Excel.
LibreOffice корректно работает с данными в этом формате. Что касается пользовательских форм и макросов, то от разработчика требуется определенная квалификация.
Примеры не смотрел.
Владимир
VBA. Автофильтр до определенной строки таблицы.
 
Другой способ - "умные" таблицы со своим собственным автофильтром.
Владимир
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 161 След.
Наверх