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

Страницы: 1 2 След.
Скопировать итоговое значение в буфер обмена
 
Раз у вас текст, то посмотрите ещё в сторону .PutInClipboard
http://stackoverflow.com/questions/14219455/excel-vba-code-to-copy-a-specific-string-to-clipboard
Преобразование даты с 31/02/2016 в 31.02.2016
 
макрос преобразующий в даты выделенный диапазон:
Код
Sub c_date()

Set range1 = Intersect(ActiveWindow.RangeSelection, ActiveSheet.UsedRange)
For Each cell In range1
If IsDate(cell.Value) Then cell.Value = CDate(cell.Value)
Next cell

End Sub
Перевод даты из формата текстового значения в формат даты VBA
 
Как вариант, макрос задающий формат "дата" для выделенных ячеек, для удобства можно вынести макрос на панель быстрого доступа:
Код
Sub c_date()

Set range1 = Intersect(ActiveWindow.RangeSelection, ActiveSheet.UsedRange)
For Each cell In range1
If IsDate(cell.Value) Then cell.Value = CDate(cell.Value)
Next cell

End Sub
Изменено: Exelior - 16.11.2016 22:36:58
Конвертация 32-ух битной надстройки в 64-ёх
 
Цитата
WhiteEagle14 написал: в конторе никто не знает, а в интернете я ничего про неё не нашел
Ну так выкладывайте..
VBA. Формат ячеек в столбце после преобразования (или чем заменить многократный F2, Enter)
 
Как вариант:
Код
'задать формат "дата" для ячеек (выделенного диапазона)
Sub format_date()

Set range1 = Intersect(ActiveWindow.RangeSelection, ActiveSheet.UsedRange)
For Each cell In range1
If IsDate(cell.Value) Then cell.Value = CDate(cell.Value)
Next cell

End Sub
Изменено: Exelior - 19.09.2016 22:46:22
Отследить экспорт данных в Excel из стороннего ПО и обработать его программно, экспорт данных в Excel происходит в режиме автоматизации
 
Цитата
Exelior написал:
для работы этого кода в Excel 2010 мне нужно поставить везде после declare - ptrsafe
и поменять Long на LongPtr?
Отвечу сам себе ) Попробовал - так и есть. А чтобы код работал и там и там нужно использовать струкуру
Код
#If VBA7 Then
'код для Office 2010
#Else
'код для Office 2003-2007
#End If

Подробнее тут - http://www.jkp-ads.com/articles/apideclarations.asp раздел Conditional compiling
или тут - http://excelvba.ru/articles/WinAPI
Отследить экспорт данных в Excel из стороннего ПО и обработать его программно, экспорт данных в Excel происходит в режиме автоматизации
 
Doober
То, что доктор прописал! Спасибо!

Правильно я понимаю, что для работы этого кода в Excel 2010 мне нужно поставить везде после declare - ptrsafe
и поменять Long на LongPtr?
Отследить экспорт данных в Excel из стороннего ПО и обработать его программно, экспорт данных в Excel происходит в режиме автоматизации
 
При любой последовательности запуска (сначала макрос, потом книга или сначала книга, потом макрос) появляется ошибка в Ln 34, Col 21:
Run-time error '1004':
Method 'SaveAs' of object '_Worksheet' failed
Изменено: Exelior - 11.07.2016 06:36:09
Отследить экспорт данных в Excel из стороннего ПО и обработать его программно, экспорт данных в Excel происходит в режиме автоматизации
 
Помогите зациклить.
Код, приведенный Doober работает, но лишь один раз, когда книга содержащая в имени "123" уже открыта. Не могу зациклить, пробовал так:
Добовляю Sleep
Код
Private Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long)
Код
Sub Inf_loop()
Dim n As Integer
n = 0
Do
Sleep 100
DoEvents
Call Терминатор
Sleep 100
DoEvents
Loop Until n = 1
End Sub
пытаюсь открыть "123" - не открывается, никаких действий не происходит.
Отследить экспорт данных в Excel из стороннего ПО и обработать его программно, экспорт данных в Excel происходит в режиме автоматизации
 
Doober
Ого! VBA в связке с Windows API - зверь ) Ещё не проверял ваш код, другие дела навалились, позже посмотрю. Спасибо огромное!
Отследить экспорт данных в Excel из стороннего ПО и обработать его программно, экспорт данных в Excel происходит в режиме автоматизации
 
Пробовал "скрестить" два примера, которые я выше запостил (2-ой похож на ваш код), но "скрестить" в одно целое не получается (
Изменено: Exelior - 10.07.2016 08:48:29
Отследить экспорт данных в Excel из стороннего ПО и обработать его программно, экспорт данных в Excel происходит в режиме автоматизации
 
Уважаемые профи! Помогите пожалуйста автоматизировать сохранение вновь созданной книги. Есть стороннее ПО из которого данные передаются в приложение Еxcel в формате книги .xls (2003).
Поскольку при этом в окне Excel не подгружаются установленные надстройки (в том числе личная книга макросов - personal.xlsb) делаю вывод, что новое окно (приложение) Excel запускается в режиме автоматизации. Проблема описана вот в этой теме (архив):
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=24346
Появились ли какие-то иные (новые) способы решения проблемы?
Конкретно моя задача такая. При появлении новой книги с экспортированными из стороннего ПО данными, программно сделать следующее:
Отследить появление книги и сохранить её, но уже в 2007 формате (.xlsx) с именем файла из ячейки A1 первого листа, по заданному мной пути, например H:\, и закрыть эту книгу и приложение Excel в котором она появилась. И зациклить это дело, т.е. при экспорте книга должна сразу без манипуляций со стороны пользователя сохраняться по требуемому пути и закрывать приложение Excel в котором она создана не трогая другие открытые книги (вообще во время работы этого цикла нужно чтобы была всегда открыта ещё 1 книга из файла) и далее по циклу. Задача облегчается тем, что имя (и путь к файлу) открытой книги не меняется и заранее известно ("AlwaysOpen"), а имя появляющихся книг всегда содержит текст "123"
Желательно это сделать штатными средствами, доступными в Windows 7 + Excel 2007, через VBA (не нашел, что VBA такое позволяет), PowerShell, VBScript, JScript и т.п.
Сам нашел такие варианты кода под похожие задачи:
1) VBScript, отслеживание нового процесса Excel и закрытие его, но мне не удалось модифицировать код под мою задачу, как я понял процесс нельзя привязать к COM-объекту Excel (поправьте если не прав):
Код
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent " _
 & " WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")
i = 0
Do While i = 0
 Set objLatestProcess = colMonitoredProcesses.NextEvent
 If objLatestProcess.TargetInstance.Name = "EXCEL.EXE" Then
 objLatestProcess.TargetInstance.Terminate()
 End If
Loop 

2) VBScript, при одноразовом применении на уже созданной книге работает, но не удалось зациклить и добиться отслеживания вновь создаваемых книг и почему-то код закрывает все книги, а не только ту, где есть "123" в имени книги:
Код
On Error Resume Next
Dim objXL, WB
Set objXL = GetObject(, "Excel.Application")
Set WB = objXL.ActiveWorkbook
If Not TypeName(objXL) = "Empty" Then
    If Not TypeName(WB) = "Nothing" Then
      If Instr(1, objXL.ActiveWorkbook.Name, "123", vbTextCompare) > 0 then
      objXL.ActiveWorkbook.SaveAs "H:\" & objXL.ActiveWorkbook.Worksheets(1).Cells(1, 1).Value & ".xlsx"
        objXL.ActiveWorkbook.Close
        objXL.Application.Quit
      End If
    End If
End If
Изменено: Exelior - 10.07.2016 00:01:29
Из строк собрать удобные таблицы с результатами.
 
Вы же писали, я и отвечаю, что да, возможно через SQL. Не таблицы в Excel форматировать, я про то, что в SQL можно сконструировать запрос, который вернет нужные Вам данные в требуемом виде.
Изменено: Exelior - 10.06.2016 13:18:44
Из строк собрать удобные таблицы с результатами.
 
Если есть доступ к SQL-базе, то лучше переделать SQL-запрос, это к администраторам Вашей БД обратитесь.
Сумма ячеек в строке по заданному условию
 
колхозный вариант:
=ЕСЛИ(ЕПУСТО(A1);0;ЕСЛИ(ЕЧИСЛО(A1);A1;ЕСЛИ(ЕЧИСЛО(ЗНАЧЕН(ПРАВСИМВ(A1)));ЗНАЧЕН(ПРАВСИМВ(A1));0)))+ЕСЛИ(ЕПУСТО(B1);0;ЕСЛИ(ЕЧИСЛО(B1);B1;ЕСЛИ(ЕЧИСЛО(ЗНАЧЕН(ПРАВСИМВ(B1)));ЗНАЧЕН(ПРАВСИМВ(B1));0)))+ЕСЛИ(ЕПУСТО(C1);0;ЕСЛИ(ЕЧИСЛО(C1);C1;ЕСЛИ(ЕЧИСЛО(ЗНАЧЕН(ПРАВСИМВ(C1)));ЗНАЧЕН(ПРАВСИМВ(C1));0)))+ЕСЛИ(ЕПУСТО(D1);0;ЕСЛИ(ЕЧИСЛО(D1);D1;ЕСЛИ(ЕЧИСЛО(ЗНАЧЕН(ПРАВСИМВ(D1)));ЗНАЧЕН(ПРАВСИМВ(D1));0)))
Сумма ячеек в строке по заданному условию
 
Уточните задачу. В разных столбцах могут быть разные данные, т.е.может, например, быть -   Г/9, 7, Р, пусто?
Число в ячейках где буква/число - какие могут быть числа (дву- тре- значные, натуральные, вещественные)?
Поиск по трем буквам и подстановка значения
 
Ivan.kh
забыли "0" - точное совпадение
=ИНДЕКС($G$2:$G$6;ПОИСКПОЗ(ЛЕВСИМВ(B2;3);ЛЕВСИМВ($G$2:$G$6;3);0))
Изменено: Exelior - 08.06.2016 10:55:18
Как оставлять несохраненые версии
 
Например так http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=18879
или поиск по фразам типа "excel автосохранение"
Отображение выбранных строк по порядку
 
Сложно понять чего хотите. Приложите пример с требуемым результатом.
ОСТАТ() на разных ПК разные результаты
 
В Excel 2007 возвращает не "0", а "-5,55112E-17", ноль будет если поставить числовой формат.
В Excel беда с числами с плавающей запятой, формулу ОСТАТ лучше не использовать с делителем  < 1.
Можно посоветовать заменить формулу "ОСТАТ" на вариант с "ЦЕЛОЕ", в Вашем случае =10-(ЦЕЛОЕ(10/0,01)*0,01)
для ячеек A1 и B1:
ОСТАТ(A1;B1)
=
A1-(ЦЕЛОЕ(A1/B1)*B1)
Изменено: Exelior - 13.06.2016 23:02:23
При использовании функции "Сцепить" часть текста жирным шрифтом
 
Как вариант эту задачу можно решить хитрым способом, не городя макросов:
так как длина строки не сильно варьируется, можно просто подобрать размер ячейки чтобы влезали все имеющиеся или предполагаемые суммы, а дальше просто ссылкой на исходные ячейки применять любое форматирование, чтобы четко все было можно поиграться с выравниванием.
Перекрещивание списков, комбинирование столбцов. Полный перебор вариантов
 
А зачем вообще перебирать варианты? Мне кажется быстрее правильно организовать данные:
Или позиций для перебора больше чем в примере?
Перекрещивание списков, комбинирование столбцов. Полный перебор вариантов
 
Почитайте про формулу СЦЕПИТЬ, всё очень просто:
=СЦЕПИТЬ(A2;" ";B2;" ";C2;" ";D2)
Как в ячейку вывести дату и время обновления файла
 
макросом, из темы: http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=8&TID=5119

Код в модуле ЭтаКнига, приведенный ниже, запишет в ячейку A1 первого листа дату и время сохранения:  
 
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)   
  ThisWorkbook.Worksheets(1).Range("A1") = Now   
End Sub
Индексация текста (отсортировать буквы в слове)
 
Юрий М, сорри, затупил.

Tsarneba, может нечеткий поиск поможет http://perfect-excel.ru/publ/excel/makrosy_i_programmy_vba/nechjotkij_poisk/7-1-0-73
Индексация текста (отсортировать буквы в слове)
 
http://www.planetaexcel.ru/techniques/2/80/
СЦЕПИТЬ данные в третьем листе, через анализ данных на двух листах, с общим ключом
 
Jack Famous, это ZVI спасибо за такое чудо, судя по датам сообщений он её на протяжении нескольких лет модифицировал по пожеланиям форумчан, там в теме аж 8 версий выложено.
Вообще в закромах форума очень много полезных вещей, причем универсальных, достойных включения в копилку идей - http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=list&FID=2
Изменено: Exelior - 02.06.2016 23:16:35
СЦЕПИТЬ данные в третьем листе, через анализ данных на двух листах, с общим ключом
 
Решение уже давно есть, во втором шаге все можно сделать банальным ВПР, а дальше вот варианты на VBA, в том числе есть UDF:
http://www.planetaexcel.ru/techniques/7/205/
http://www.excel-vba.ru/chto-umeet-excel/kak-scepit-neskolko-znachenij-v-odnu-yachejku-po-kriteriyu-...
http://www.excel-vba.ru/chto-umeet-excel/scepit-mnogo-yacheek-s-ukazannym-razdelitelem/
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=42
Автоматический перенос диапазона данных из одной таблицы в другую
 
Видимо никто не отвечает т.к. нет примера - файла с таблицами и что Вы хотите получить в итоге.
Формулы для вычислений с полями в формате "Дата"
 
Основной ещё проще, надо было всего лишь отнять:
=B15-МИН(ЕСЛИ($A$2:$A$12="В работе";$C$2:$C$12;""))
Страницы: 1 2 След.
Наверх