Спасибо.
Как передать в vba диапазон одной ячейки в переменную?
Как передать в vba диапазон одной ячейки в переменную?
Как передать в vba диапазон одной ячейки в переменную?
Вставить только значения из закрытой книги
Вставить только значения из закрытой книги
Вставить только значения из закрытой книги
01.08.2012 22:34:12
KukLP,
Уважаемые форумчане. Здравствуйте. Спасибо еще раз за помощь и приглашение разобраться в проблеме. Обстоятельства были следующие. С помощью кода Код TempWb.Sheets("Лист1").Range ("A13:B6000").Copy BazaSht.Range("J7").PasteSpecial xlValues Копировались данные из одной книги в другую (версия 2003). В книге – источнике (Книга1) данных было применено условное форматирование некоторых ячеек. Книга – получатель(Книга2) данных работала нормально. Фильтр работал быстро. Затем на ПК поставили 2007. Через некоторое время книга получатель стала сильно тормозить – долго обрабатывались данные и при открытии и при обновлении данных. Фильтр также отрабатывал очень долго. После проверки обнаружил, что в книге получателе образовалось большое количество условий по установке условного формата (как то они туда скопировались накопительным порядком) Путь решения вырисовался следующий. 1. Либо у меня что-то не так с кодом. И в 2003 это не проявилось. 2.Либо в 2007 что-то не учел. На «скорую руку» проблему решил удалением условного форматирования со всего листа в книге получателе данных. Отработка данных при открытии и просмотре «колесиком» стала приемлемой. Но работа фильтра так и не улучшилась. А вот с применением кода Код Range("A1").Value = Range("A2").Value Все изменилось. Условие условного форматирования в книгу получатель (Книга3) не переносится при копировании значений. Данные с пустым значением, переносятся как пустое значение (не «0»).Данные можно посмотреть быстро, фильтр работает быстро. Правда, на пробной версии. Здесь записей совсем мало. Оригинальная таблица сама небольшая: 1500 строк и около 30 столбцов. Формат данных по столбцам: текстовый, числовой и дата. «Привинитить» новый код к ней еще не успел. Главное, что было непонятно, – почему в 2003 проблем не было, а в 2007 они появились? Буду признателен за отклик и разъяснения Спасибо. В архиве Книга2 – то, что было и не работало, Книга3 – то, что стало. |
|
|
Вставить только значения из закрытой книги
Вставить только значения из закрытой книги
Вставить только значения из закрытой книги
Вставить только значения из закрытой книги
24.07.2012 16:54:58
Уважаемые форумчане!
Есть такой вариант копирования данных из закрытой книги: Sub Кнопка21_Щелкнуть() Dim TempWb As Workbook Dim BazaSht As Worksheet Dim iPath As String With Application .ScreenUpdating = False .Calculation = xlCalculationManual Set BazaSht = ActiveSheet iPath = ActiveWorkbook.Path & "\" Set TempWb = Workbooks.Open(Filename:="V:\" & "1.xls", UpdateLinks:=False, ReadOnly:=True) TempWb.Sheets("Лист1").Range("A13:B6000").Copy Destination:=BazaSht.Range("J7") TempWb.Close saveChanges:=False .Calculation = xlAutomatic .ScreenUpdating = True End With End Sub Но при этом копируются и форматы тоже. Подскажите, пожалуйста - как сделать так, чтобы копировались только значения? Вынужден вернуться к теме "вставки только значений" в связи с установкой Excel 2007. На выражение TempWb.Sheets("Лист1").Range ("A13:B6000").Copy BazaSht.Range("J7").PasteSpecial xlValues Компилятор подчеркивает всю строку красным цветом, а xlValues выделяет синим фоном. После заключение xlValues в скобки при запуске программы - пишет "Невозможно получить свойство PasteSpecial класса Range". С проставленными аргумнтами PasteSpecial тоже появляется ошибка. Подскажите, пожалуйста, что здесь не так? Как вставить только значения? |
|
|
останавливается выполнение процедуры по таймеру
27.06.2012 16:11:23
Первый раз файлы открываются, обновляются, сохраняются.
Но во-второй раз при открытии файла Расчет2.xls процедура останавливается и появляется окно Run Time Error 1004 Method Open of object Workbooks failed Подскажите, пожалуйста, «из-за чего это происходит и что делать?» Sub Кнопка4_Щелкнуть() Dim dTime As Date Workbooks.Open Filename:="D:\" & "Расчет" & ".xls" Application.Run "'Расчет.xls'!Кнопка41_Щелкнуть" ActiveWorkbook.Close (True) Workbooks.Open Filename:="D:\" & "Расчет2" & ".xls" Application.Run "'Расчет2.xls'!Кнопка181_Щелкнуть" ActiveWorkbook.Close (True) dTime = Now + TimeValue("00:01:00") Application.OnTime dTime, "Кнопка4_Щелкнуть" ', , True End Sub |
|
|
Не работает ЧИСТРАБДНИ в Excel 2007
27.04.2012 22:45:31
Промежуточный итог такой. На отдельном ПК в Excel 2007 открываю файл, сделанный в Excel 2003. Заменяю ЧИСТРАБДНИ на ЧИСТРАБДНИ. Ошибка #ИМЯ? исчезает. Сохраняю файл и закрываю его с выходом из Excel. В следующий раз файл открывается в Excel 2007 без ошибок. Но на других ПК, где такой процедуры проделано не было, все также появляется ошибка. Получается, что нужно каждый ПК настраивать. Может есть какой-нибудь механизм групповой политики, позволяющий распространить изменения на все ПК одновременно?
|
|
|
Не работает ЧИСТРАБДНИ в Excel 2007
Не работает ЧИСТРАБДНИ в Excel 2007
Не работает ЧИСТРАБДНИ в Excel 2007
Не работает ЧИСТРАБДНИ в Excel 2007
27.04.2012 15:23:15
Уважаемые форумчане.
Подскажите, пожалуйста, как настроить Excel 2007 У меня в Excel 2003 формула ЧИСТРАБДНИ работает нормально. Пакет анализа включен. При открытии того же файла в Excel 2007 формула ЧИСТРАБДНИ выдает в ячейке #ИМЯ?. Пакет анализа включен. Попробовал заново создать вычисление с формулой ЧИСТРАБДНИ в самом Excel 2007 - заработало. Но тогда придется везде в файле, созданном в 2003 пересоздавать формулу ЧИСТРАБДНИ. При этом заметил следующее. В файле, созданном в 2007 и, открытом потом в 2003 - тоже появляется ошибка. Т.е. получается, что для 2003 и 2007 существуют свои условия создания формул? Есть ли способ сделать так, чтобы файл (с формулой ЧИСТРАБДНИ) 2003 нормально работал в 2007? |
|
|
передать параметр запроса на обновление из Excel в Access
передать параметр запроса на обновление из Excel в Access
передать параметр запроса на обновление из Excel в Access
передать параметр запроса на обновление из Excel в Access
Замена в имени столбца буквы на цифру
Замена в имени столбца буквы на цифру
Замена в имени столбца буквы на цифру
19.10.2011 09:03:08
Уважаемые форумчане.
При замене в выражении ws.Range("A2") буквенного значения A на цифру или на значение переменной c - ws.Range("c & 2") программа выдает ошибку. Добавил указание на именование столбцов цифрами Application.ReferenceStyle = xlR1C1. Но ошибка все равно осталась. Произвел замену на ws.Range(ws.Cells(1, c), ws.Cells(1, c)). Получилась достаточно длинная запись. Подскажите, пожалуйста, а есть ли еще способ заменить букву, обозначающую столбец диапазона на цифру или на значение переменной? |
|
|
Передача данных из recordset
Передача данных из recordset
03.10.2011 22:45:29
Уважаемые форумчане.
Прошу Вас помочь разобраться со следующей ситуацией. 1 Передаем на лист из recordset данные. Получаем таблицу Исполнитель Иванов Петров Сидоров Иванов Петров 2. Ставим в Excel фильтр по фамилии Сидоров, получаем видимую строку Исполнитель Сидоров обновляем recordset, фамилия Сидоров заменяется на фамилию Иванов Исполнитель Иванов Т.е. данные из recordset вставляются в первую отфильтрованную строку, а надо во вторую строку листа (ячейку “J2”). Так чтобы при включенном фильтре построчно обновились данные Иванов на Иванов, Петров на Петров, Сидоров на Сидоров. Чтобы строка с фамилией Сидоров осталась без изменений. Как это сделать? Sub pr() Dim cn As New ADODB.Connection Dim cm As New ADODB.Command Dim rs As New ADODB.Recordset Dim fldLoop As Field Dim i As Integer Dim ws As Worksheet Set ws = Sheets(1) Application.ScreenUpdating = False Application.Calculation = xlCalculationManual cn.Provider = "Microsoft.Jet.OLEDB.4.0" cn.ConnectionString = "Data Source = D:\Книга3; Extended Properties=Excel 8.0;""" cn.Open cm.ActiveConnection = cn cm.CommandText = "SELECT Исполнитель FROM [Лист1$]" rs.Open cm Do While Not rs.EOF rs.MoveNext ws.Range("J" & 2).CopyFromRecordset rs Loop rs.Close cn.Close Application.Calculation = xlAutomatic Application.ScreenUpdating = True End Sub |
|
|
Получить адрес ячейки до нажатия Enter
Получить адрес ячейки до нажатия Enter
Получить адрес ячейки до нажатия Enter
Получить адрес ячейки до нажатия Enter
Получить адрес ячейки до нажатия Enter