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

Страницы: 1
ВПР внутри
 
Столкнулся тут с обработкой двух таблиц - 990тыс и 20тыс строк. Работа для ВПР. Удивила скорость работы - пара секунд. 900к на открытие парсился дольше.
Как оно так быстро работает? Для сравнения макрос с .Find работал 1.5 часа.
обратил внимание, что файл с внедренным ВПР (20тыс строк) с 2мб вырос до 50мб.
copy-paste со скрытым объектом excel.app
 
Уткнулся в проблему работы с copy-paste со скрытым объектом.  При obj.visible=true работает без проблем, а с false вылетает с ошибкой 'select method of range class failed'.
В чем косяк?

Код
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
    Application.DisplayAlerts = False
    objExcel.DisplayAlerts = False
    Set xsIn = objExcel.Workbooks.Open(tt)
    Set Inv = xsIn.Sheets(1)
    xsIn.Activate  
    Inv.Range(FCol & InfoL & ":" & LCol & InfoL).Select '<< тут вылетает с ошибкой, если objExcel.Visible = false. с true работает нормально.     
objExcel.Selection.Copy
...
Изменено: ae485 - 23.11.2023 12:41:29
Встраивание кода в xlsm с помощью макроса
 
Сейчас генерится обычный xlsx. Нашел тут несколько полезных улучшений, требующих в том числе вставки макроса.
Подскажите направление как внедрить код при создании файла?
.Replace. Получить количество замен
 
Подскажите как после выполнения кода
Код
Selection.Replace What:=RuSym(ii), Replacement:=EnSym(ii), MatchCase:=False, LookAt:=xlPart, SearchFormat:=False, ReplaceFormat:=False
получить количество произведенных замен? То, что встроенный Search&Replace отображает всплывающим окном "we  made X replacements".
Слетает цветовое форматирование строки
 
Подскажите как правильно добавлять данные в ячейку средствами VBA, в которой есть частичное форматирование?


Код
[B1] = "AAA/BBB"
[B2] = "CCC"
With [B1].Characters(Start:=5, Length:=3).Font
 .Color = vbBlue
End With
[B1] = [B1] & "/" & [B2] 'здесь [B1] снова вся становится черной.
Изменено: ae485 - 17.02.2023 16:52:48
Сложный PDF->XLS. Инструментарий.
 
Есть мутно сформированный PDF, из которого нужно дергать данные: артикулы, их замену (значение в скобках), заказ (ODxxxx), кол-во, цену.

пробовал файнридером распознавать, открывать вордом, сохранять xls из foxit pdf reader. Всегда пока на выходе получается сложнообрабатываемая муть с рандомно объединенными ячейками. Пока лучше чем открыть вордом и копипастом потом в excel вставить не получается.

Подскажите методику (и/или нструментарий) как работать с такими сложными файлами.
Изменено: ae485 - 22.01.2023 13:12:41
Правильное обращение к объектам на странице
 
При работе с checkbox приходится обращаться к ним достаточно коряво: Sheets(1).CheckBoxes(1).Value.

Во всех примерах по-умолчанию все обращаются к Checkbox1.Value, что удобней и логичней, но в моем случае так почему-то не работает, возвращает ошибку.

Очевидно, что чего-то не хватает, но чего именно - никак не пойму.
И более глобальный вопрос - как быстро получить список визуальных объектов на странице и как понять что куда относится?
(например если на странице десяток чекбоксов, кпопки и пр.)
RegExp и Lookbehind (?<=), Неполная реализация RegExp?
 
Пытаюсь собрать RegExp, чтобы во фразе "....START 12345-6788-655 END" находилось все, что между START и END.
Отработал паттерн - "(?<=START)(.*?)(?=END)" в онлайн билдере, затягиваю в VBA - получаю ошибку.

Получается что Lookbehind нельзя пользоваться?
Добавление страницы во внешний файл. Файл умирает.
 
В трех соснах запутался. Пытаюсь добавить новый лист во внешний файл и файл после этого не открывается. Подскажите что делаю не так.

Рабочий код (локализовал до места, на котором происходит сбой):

Код
Set xsInv = GetObject(filename)
xsInv.Sheets.Add After:=xsInv.Sheets(xsInv.Sheets.Count)
xsInv.Parent.Windows(2).Visible = True
xsInv.Close SaveChanges:=True
Set xsInv = Nothing
При этом работаю на одной странице с этим файлом, вношу изменения - все ок.
Код
xsInv.Sheets(1).Range(InvPerc_c & ii).Interior.Color = 65535
Изменено: ae485 - 03.12.2022 16:50:26
вывести информационное сообщение на время работы макроса
 
Подскажите как вывести информационное сообщение с момента начала работы макроса и автоматом убрать его после завершения. что-то типа 'processing...'.
Cписок всех слов из docx
 
Подскажите пожалуйста скрипт для xls, формирующий из docx список всех слов в виде таблицы.
Сравнение двух файлов с подсвечиванием изменений
 
Есть потребность попозиционного сравнения двух страниц с подсвечиванием изменений.

Поискал уже существующие реализации - нашел, ExcelCompare, но там списком изменения выдаются, что совсем ненаглядно.

Есть подозрение, что проще написать макрос.

Основная проблема в том, что строки плавают, что-то добавляется, что-то удаляется. По колонкам структура жесткая. Можно конечно вручную добавлять якорную нумерацию, но это муторно.


Подскажите направления наиболее оптимальной реализации.
Изменено: ae485 - 23.04.2019 09:52:38
Накопительный итог в надстройке crystal ball, проблема с обновлением данных
 
Пытаюсь запустить симуляцию в надстройке Crystal Ball довольно простого действия:
одна ячейка меняется случайным образом по определенному алгоритму, а вторая накапливает сумму этих изменений.

Накопление реализовано так:
Код
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      With Target
         If .Address(False, False) = "A1" Then
            If IsNumeric(.Value) Then
               Application.EnableEvents = False
               Range("A2").Value = Range("A2").Value + .Value
               Application.EnableEvents = True
            End If
         End If
      End With
End Sub
Проблема в том, что все работает только в пошаговой трассировке Crystal Ball. Если же запустить на исполнение (1 млн повторов), то накопление не работает.
Пробовал с 'Application.Volatile', эффекта не дало.

В чем может быть дело?
Работа с word из excel
 
Хочу открыть из excel документ word, изменить колонтитул и отправить на печать.

что делаю:
Код
Dim xs As Object
Dim wd As Object
Dim wdApp As Object

Set wdApp = CreateObject("Word.Document")
Set wd = wdApp.Application.Documents.Open("d:\filename.docx")

wd.Sections(1).Footers(wdHeaderFooterPrimary).Range.Text = "ttt"
wd.Application.PrintOut Range:=wdPrintRangeOfPages, Copies:=1, Pages:="2"
... 
При обращении к колонтитулу вылетает 'Object doesn't support this property or method'.
При попытке напечатать вылетает "Runtime error: 5148. Число должно находиться в диапазоне -32765 до 32767"

Никак не пойму что не так.
изменить параметры колонтитула
 
Что делаю:

str="100"

ActiveSheet.PageSetup.RightFooter = "&""Times New Roman,обычный"""
ActiveSheet.PageSetup.RightFooter = str

переменная присваивается, но шрифт не меняется.

конструктор макросов предлагает делать так:

.RightFooter = "&""Times New Roman,обычный""&14 100"

но, при прогоне значение становится равным "1", плюс непонятно как же в этом случае задействовать переменную.
автодобавление переменных в watchlist
 
в 2010м экселе при трассировке переменные автоматически добавляются в watch list. в 2013м по-умолчанию ничего не добавляется. никак не найду как включить эту опцию.
реализация алгоритма Metaphone, сомнения в корректности работы
 
вопрос по поводу работы алгоритма metaphone. есть сомнения в корректности работы (иногда возвращает пустую строку, см. пример).
никак не пойму что не так...
извлечь текст макроса из битого xlsm
 
написал макрос для обработки списка пользователей (20000 строк). при работе что-то пошло не так, и после сохранения файла он перестал открываться...

при открытии excel возвращает:

Скрытый текст


можно ли как то извлечь текст макроса из него?
заполнение многомерного динамического массива
 
никак не попаду в цель с заполнением массива.
что тут не так:

Dim fArr
Dim lArr()

const str1 = "Aaa aa aaa. Bbb bb bbbb"
fArr = Trim(Split(str1, "."  )  ) 'делим на предложения

For i = 0 To UBound(fArr) 'пытаемся делить на слова
lArr = Array(Trim(Split(fArr(i), " "  )  ), i)
Next i

если смотреть по шагам, то массив lArr заполняется почему то только всегда в (0) (0,1,2) или (0,1,2) (0) (если i вперед вынести)
как его заставить заполнять (0) (0,1,2), (1) (0,1,2) ?
Изменено: ae485 - 07.03.2013 10:04:03
запросы к google из макроса, перевод предложений
 
необходимо после ввода предложения в ячейку обратиться из макроса к google translate с данной фразой и получить обратно перевод.
не знаю как подступиться. дайте пожалуйста направление движения.
сменить ориентацию документа word из excel
 
код такой:

Dim wd As Object
Set wd = CreateObject("Word.Document" ;)

With wd.PageSetup
If .Orientation <> wdOrientPortrait Then
.Orientation = wdOrientPortrait
Else
.Orientation = wdOrientLandscape
End If
End With

по идее должен переворачивать. но не работает почему-то. не переворачивает.
Изменено: ae485 - 20.02.2013 15:05:44
Работа с диаграммами. Не работает созданный Excel макрос
 
запускаю запись макроса, захожу в свойства оси на графике и меняю размер шрифта. получается следующее:

ActiveSheet.ChartObjects("name")  .Activate
ActiveChart.Axes(xlValue).Select
With Selection.Format.TextFrame2.TextRange.Font
.Size = 16
End With

после этого запускаю этот макрос - не работает. пишет "method 'TextFrame2' of object ChartFormat failed"

первый раз сталкиваюсь с проблемой неработоспособности свежезаписанного макроса.

куда здесь смотреть?
Изменено: ae485 - 06.02.2013 15:08:01
.findnext из примера возвращает ошибку
 
запутался в трех соснах.

почему пример из хелпа экселя,

With Worksheets(1).Range("a1:a500")
   Set c = .Find(2, lookin:=xlValues)
   If Not c Is Nothing Then
       firstAddress = c.Address
       Do
           c.Value = 5
           Set c = .FindNext©
       Loop While Not c Is Nothing And c.Address <> firstAddress
   End If
End With

возвращает ошибку 91? чего ему не хватает?
фильтр, множественное копирование и графики
 
помогите решить следующую задачу:

имеем плоскую таблицу.

как с помощью макроса можно:
1. вычислить кол-во уникальных названий в столбце X
2. создать кол-во закладок по кол-ву данных названий
3. поочередно включая фильтр по по данным названиям копипастить полученную таблицу в соответствующую закладку
4. в каждой закладке построить график

во вложении целевое состояние, сформированное вручную.
методика расчета рейтинга Эло
 
казалось бы простая задачка реализации метода Эло* для двух игроков в реализации натолкнулась на препятствие в вычислениях , когда следующее значение формулы зависит о предыдущего. непонятно как это можно сделать в динамике (чтобы можно было второй и последующие шаги просчитать).  
 
реализовывать все в макросах не подходит, т.к. на модельку хочется натравить Oracle Crystal Ball и просимулировать процесс.  
 
* - метод Эло - метод расчёта относительной силы игроков в играх, в которых участвуют двое.  
(http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B9%D1%82%D0%B8%D0%BD%D0%B3_%D0%AD%D­0%BB%D0%BE)
многовариантный поиск
 
уважаемые Гуру VBA,  
 
подскажите как можно корректно подсчитать количество оборудования (например "HP") в строке:  
 
"HP DL160 G6 - 1x;ПК Kraftway - 10x;GEG  ISP ES23 - 6x;HP DL380 G4 - 10x;Kraftway GEG  200 ED21 - 2x;GEG  ISP ES24 - 6x;GEG  200 ED11 - 3x;Hyperion RS103 Etegro "  
 
чтобы после прогона получилось итого 11  
 
сейчас процедура просто пробегает по диапазону и по сути считает количество ячеек где есть HP:  
 
   With ThisWorkbook.Sheets(1).Range("av1:av833")  
       SumVendor = 0  
       Set c = .Find(iVendor(i).Name, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)  
     
       If Not c Is Nothing Then  
           SumVendor = 1  
           firstAddress = c.Address  
           Do  
               If Cells(c.Row, 2) = "X" Then  
                   SumVendor = SumVendor + 1  
               End If  
               Set c = .FindNext©  
           Loop While Not c Is Nothing And c.Address <> firstAddress  
       End If  
   End With  
   Cells(iVendor(i).Pos, 13).Value = SumVendor
win скрипты под Mac
 
можно ли как-то программно определить что скрипт запущен под mac'ом?
работа с внешним xls
 
подскажите, почему в коде  
 
Dim xs As Object  
Set xs = GetObject("path")  
 
For i = 2 To 821  
   If xs.Application.Cells(i, 3) <> "" Then  
       Set c = Range("D2:D898").Find(What:=xs.Application.Cells(i, 4), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)  
       If Not c Is Nothing Then  
           xs.Application.Cells(i, 4).Interior.Color = 3507718  
       End If  
   End If  
Next i  
 
xs.Save  
xs.Close  
Set xs = Nothing  
 
все изменения происходят с xls, из которого я макрос запускаю, а вовсе не с тем, который я открываю через getobject?
Страницы: 1
Наверх