Создаю письма в Ворд, данные для письма в файле Excel. Периодически теряется подключение к источнику данных. Могу пройти путь в ручную, но вот бесит... Попробовал написать макрос. Задача открыть единственный файл Excel в папке с бланком письма не зависимо от расширения. Но вот в строке подключения выданной макрорекодером вызывают сомнения части строки User ID=Admin и хотелось бы иметь возможность указывать имя листа откуда берем данныеFROM `01Osn$`" в переменной. Забыл, проба макроса в Ворде.
При попытке открытия книги Офис 2010 макросом появилась ошибка Run-time error 1004 Method Open of object Workbooks failed При переходе к отладчику попадаем на строку Set wb = Workbooks.Open(Filename:=Mask & fName, UpdateLinks:=False, ReadOnly:=False) Нажатие F8 помогает. Книга открывается и все отрабатывается. Файл рабочий, работал более 2-х лет. Все переменные Mask & fName - есть. Началось в где-то январе.
К объектам TextBox на форме можно обратиться по его имени Me.Controls( "TextBox" & i), или просто по индексу в коллекции создаваемых объектов Me.Controls(i) в порядке их добавления на форму. При этом индекс отображается в TabIndex. Где то, что то я сделал и внутренний порядок изменился. Проставление TabIndex в рукопашную через свойства или View - Tab Order, не влияет на "внутренний счетчик". Собственно вопрос - можно ли поменять индексы в коллекции элементов на форме? Это необходимо для обработки их в цикле в определенном порядке. Решение нашел Me.Controls( "TextBox" & i) = aArray(i) при заполнении формы, и на сайте у П.Ю. Климова через массив имен в заданном порядке при выгрузке в таблицы.
Код
lCol = 1
For Each iName in aArray("TextBox1", "TextBox5",...)
.Cells(lRow, lCol).Value = Me.Controls(iName).Value
lCol = lCol +1
Next
Ребят, а ни кто не делал vbs для пакетной обработки файлов SpeedCam для навигаторов? Например с сайта SpeedCamOnline.ru загрузил по регионам и надо свести в 1 по уникальным сразу из нескольких текстовых. Задумался сделать, но пока руки не дошли да и как то не кошерно сначала в Экс, а потом пересохранять в текст (это то что умею). Данные разделяются запятыми (для Навитела) уникальными будет связка X,Y,DIRECTION IDX,X,Y,TYPE,SPEED,DIRTYPE,DIRECTION 4502,46.1937200,55.9920600,1,50,2,246
Подскажите пожалуйста, возможно ли контролировать события изменения ComboBox без привязки к листу на котором он создан? Есть пример решения, хотелось бы вынести процедуру Private Sub TempCombo_KeyDown с модуля листа (Июнь в примере) на котором создан этот ComboBox. Но перенос его в модуль книги по аналогии с контролем события листа ни чего не дает:( А может я не смог задать правильный вопрос Google Так, при активации столбцов B, D, F вызывается ComboBox и надо обработать потом события.
Просьба владельцам Офиса 2010 и выше (или 2003) записать макрорекордером вставку фигуры на лист, изменение цвета и толщины линии, заливки и вставку текста. В 2007 макрорекордер шейпы не пишет Полученный код прошу выложить в качестве образца.
Я немного напишу, как увидел Вашу тему, возможно, это не соответствует действительности и обидит Вас, но если на форуме нет ответов, то искать причину лучше в себе. Я скачивал и смотрел выложенный файл. Сложилось впечатление, что это не Вы его делали, не знаете, как организованы данные, и что нужно сделать, а хотите просто получить готовый ответ. При этом форумчанам предлагается самостоятельно определить и сделать то, что Вам надо. По сути, Вам необходим программный перебор данных в 1-й ячейке на скрытом листе со справочной информацией. Если бы Вы потрудились и описали задачу – вариант решения был бы минут через 5. Если правильно понял надо:
Код
Sub Prnt_allObject() 'печать активного листа
Dim lRow As Long, rngObject As Range, rngTek As Range 'определяем переменные
Application.ScreenUpdating = False
With Worksheets("Имя скрытого листа справочника") ' определяем лист с которого берем данные
Set rngObject = .Range("b2:b20") 'указываем диапазон с данными для выборки объектов (номер, а не наименование)
For Each rngTek In rngObject
.Range("C5").Value = rngTek.Value 'вносим номер объекта в ячейку для расчетов
'-----------------------
'если надо по всем датам, делаем цикл по датам
For lRow = 25 To 37 '(где 25 это номер строки начала данных)
.Range("C25").Value = .Cells(lRow, "B").Value
Next lRow
'-----------------------
'если не успевает Экс рассчитать, ставим задержку (в примере 1 секунда)
'Application.Wait Time:=Now + TimeSerial(0, 0, 01)
'а здесь отправляем документ на печать, строчка из макрорекордера
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="HP LaserJet 1200 Series PCL 6 (Ne04:)", Collate:=True
Next
End With
Application.ScreenUpdating = True
End Sub
PS а вот нервничать, и поднимать тему в топ это лишнее...
Поменяли на работе ПК, поставили Win7, OFFICE2007, Каспера6 и файл вылетает с ошибкой не могу Скомпилировать проект и Automation error. Пока в суматохе не разобрался, но дома этот файл под 2007 открылся и даже фамилию не спросил. Библиотеки проверил, все одинаково подключено. Посмотреть все ли сервис паки на офис установлены не догадался:( Где смотреть и за что душить техподдержку? Может кто то подсказать?
Посмотрите пожалуйста что не так делаю:( Сделал простенький табель учета. Для закрашивания нерабочих дней использую УФ. при этом не пойму что не так сделал. В заголовке при изменении месяца, ячейка AL1, перекрашивание идет сразу, а вот ниже 10 строки надо или выделять диапазон, или закрывать файл. Может ошибся с распространением условий УФ.
Навеяло вывешенным шариком на сайте и людьми, возвращающимися вечером с корпоративов;) О праздновании Нового года или как меняются времена и нравы на опыте всего одной жизни. Детство, конец эпохи социализма в большой стране – числа 30 декабря ставим и наряжаем елку (сосну) в ночь с 31 декабря на 2 января празднуем Новый год. А 3 родители уже в большинстве случаев на работе. Рождество проходит незаметно, велика руководящая роль партии. Ну и, наконец, завершаем праздничную кутерьму празднованием Старого Нового года и выбрасываем елку. Юность, развал большой страны, так же проходит подготовка и празднованию Нового года, в череду праздников добавляется Рождество, теперь праздничное партсобрание заменено торжественным молебном, и по привычке, завершаем череду праздников выбрасыванием ели 15 января. Меняются эпохи, и вот мы взрослеем и уже становимся космополитами. По ощущениям на рубеже 2000 приходит в Россию католическое Рождество. Теперь, если и не ставим елки, то начинаем праздновать с 24 декабря и далее по уже устоявшемуся графику. И вот с 2005 нам дарят десять дней каникул И теперь в ночь с 24 декабря на 15 января :) С наступающим Вас, дорогие Планетяне, опьянением и здоровья Вашей печени:)
Столкнулся с задачей оптимальной обработки разно размерных массивов. В примере - лист Tabel и Prohod. Необходимо на листе Tabel заменить ФИО краткое на Полное из листа Prohod и проставить время входа/выхода на соответствующие даты. Сделал через Find перебирая по очереди все данные с листа Prohod, но как то медленно и кажется не совсем правильно;(
Держите вариант. Кнопку не делал. По условию задачи - активный лист. Какой лист будет активным - не знаю. Имя файла формируется из значений ячеек во второй строке. Это все - дальше дерзайте сами.
Преамбула:) Начал использовать запись диапазона в массив arrData = Range(Cells(1, 1), Cells(LastRow, 1)) Пока попадались задачи, что макрос явно запускается с заданного активного листа и ни каких проблем с переносом значений в массив и выгрузкой из массива небыло. Но вот столкнулся с задачей что макрос может быть вызван "из любого" места. Активировать принудительно лист не хочется, перебирать по ячейке, можно но:( Вопрос! Как можно сосчитать данные в массив с неактивного листа. У меня идет ошибка 13 когда я прописываю Sheets("name").Range("A1:A" & LastRow) В общем нужно корректно сосчитывать и вносить данные из/в ячеки /массив
Пакет ОФ2007 домашний. Acces отсутствует. Соответственно нет и календарика. Вопрос: Как подключить календарик в Windows7 64bit? Как для ХР - скопировал файлик в sistem32, в Windows7 выполняю Regsvr32 c:\windows\system32\mscal.ocx не проходит:( пишет что элемент отсутствует. Жалко, теперь мои файлы не имеют той функциональности;(
Как определить размерность массива myArr(1 to x, 1 to y)-? x = Ubound(myArr()) а y-?
Слэн, кажется, недавно показывал пример, но что то не найдусь:((
И еще можно ли удалять записи из массива и как? Например для уменьшения кол-ва записей для последующей обработки и перебора после выполнения условий и выборки части данных удовлетворяющих условию.
Курил сайт П.Ю.Климова, справку – не помогло По справке перед удалением ИСТИНА ОБЪЕКТ ИНДЕКС С помощью сайта создал конструкцию – но не работает. ListBox = frmReg.lbAuto For iCount = frmReg.lbAuto.ListCount - 1 To 1 Step -1 If frmReg.lbAuto.List(iCount, 11) <> frmReg.ComboBox1.Value Then lbAuto.RemoveItem iCount End If
И еще – можно ли сразу присвоить значения? lbAuto.List = iMassiv() или очистить листбокс? ЗЫ ОФИС2007
В младшем офисе можно было создать "динамическую" диаграмму. Ряды данных именованной формулой через смещение, а значения для ряда уже =имя. Создал именованные диапазоны, пытаюсь присвоить значения ряду - ошибка:(( Больше не поддерживается, или что то не то делаю?
Собственно и вопрос - нужно запустить макрос по событию листа BeforeDoubleClick( без входа в режим редактирования ячейки. Как то не смог найти найти свойство, и после даблклик попадаю в ячейку:((
Пытаюсь сделать макрос по перемещению ячеек на строку вверх/вниз. Если жать на кнопку ОК все работает, но хочу найти событие:( Изменение Spinbutton не запускает процедуру, только меняет значение (или не правильно Ф1 понял). При этом попытка прописать запуск на изменение TextBox тоже не дает результата. Не ловит программное изменение :(.
Хочу связать 2 книги. Первая называется ТаблицаСделок, вторая АрхивСделок.
Т.е. при запуске/выходе параллельно запускается вторая. Все кажется правильно, макрос делал сам и он у меня работал, теперь же дает ошибку при попытке присвоения заданного листа переменной (код в Лист1) Set arhiwSht = Workbooks("АрхивСделок").Sheets("Лист1") 'назначаем переменной имя листа архивой книги и при закрытии когда хочу закрыть вторую книгу (ЭтаКнига) Workbooks("АрхивСделок").Close saveChanges:=True
Было бы смешно, но что не так в коде или в настройках Ехс. Что могло произойти, кроме того что полностью переустановил все, и соответственно что-то может быть не подключил:((
2 Юрий М Юрий, выкладываю 2 файла, которые использую. К сожалению мне было достаточно того, что у меня есть и я не собирал решения которые выкладывали. А были надстройками,даже DLL, для боящихся макросов - формулами (vikttur-?)... Может кто скачивал - выложит, восстановим копилку.
Подскажите в чем проблема. Пытаюсь автофильтром в макросе выделить значения - все данные просто скрываются. При этом если войти в сам фильтр - условия и значения переданы правильно, нажимаш кнопочку ОК и все прекрасно фильтруется.
Это только у меня - не мог зайти вчера на сайт и сегодня пару часов был без доступа. Хотя пингуется нормально, и ответ есть без пропуска и задержка не критична 58 -?
Создал новую тему в догон... Почему нет? Это у меня, в напримерчике, рабочий вариант... Было-бы интересно без дополнительных вычислений тащить разницу именно предпоследний/крайний и не по диапазону, а в фиксированных ячейках...
Прошу прощения, в коде была допущена ошибка... Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myRange As Range Dim rng, FilterData, k, aRange
Set myRange = Range("G5:G100")
On Error Resume Next
If Selection.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, myRange) Is Nothing Then
ActiveSheet.AutoFilterMode = False
'rng = Range("B2")
k = Target.Value
Application.ScreenUpdating = False
FilterData = "=" & k If IsEmpty(FilterData) Then Exit Sub ' Фильтровать With ActiveSheet .UsedRange LastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row Set aRange = Range("G4", Cells(LastRow, "G")) aRange.AutoFilter Field:=1, Criteria1:=FilterData End With
Call copyTo 'вызов макроса копирования был после проверки условия и срабатывал при любом дабл клик...
End If
If ActiveCell.Rows.Hidden Then ' Если активная ячейка попала на скрытый ряд - стать ниже последней строки фильтра Cells(rng.Cells(1, 1).Offset(rng.Rows.Count, 0).Row, ActiveCell.Column).Select End If
Собрал пару - тройку ссылок по форуму из серии: - Чего хочет Ирена? Для новичков - ответ что это означает. И вот они главные вопросы форума: 1. Чего хочет пользователь? 2. А кому это, вообще-то, надо? Планирую продолжать подборку.
Как передать в Сумм() имена листов, вычисляемые в зависимости от выполнения условий? Что-то ни как не могу сообразить, кризис жанра? Или просто пора отдохнуть.