Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Подсчёт значений с нулями и пробелами, лидирующие нули и пробелы: логика работы функции
 
Функция СЧЁТЕСЛИ считает номера с лидирующими нулями и пробелами одинаковыми. См. вложение. Ячейки отформатированы как текст.
Получается, что номера 1, _1, __001, 00001 и т.п. функция считает одинаковыми (тут _ - пробел). Как подсчитать их, считая разными? Пока только приходит в голову макрос, но не всегда макрос можно втолкнуть в документ для передачи его другим лицам.
Ещё странность в том, что если пробел после нуля, то для СЧЁТЕСЛИ это уже разные данные.

Проблема немного затронута в Как при подсчете отличать двойные нули от обычных нулей, но там немного про другое и решение дано только для конкретного случая.
ListView. Отследить смену выбранной строки, Как у ListView получить событие: изменение выделения
 
Нужно у ListView отследить событие - смену выделенной строки. Пока реализовано через события Enter, Click и KeyDown (KeyUp). Но иногда данные на ListView обновляются программно и выделение нужной строки тоже делается программно и вышеуказанные события не срабатывают.
У ListView есть события BeforeUpdate и AfterUpdate, но они не работают. Как заставить их заработать? Также не срабатывают AfterLabelEdit и BeforeLabelEdit.
Возможно, у кого-то есть ещё способ решить проблему.
Сводная таблица: не хватает ресурсов при формировании макросом, А если сводную делать вручную, то всё ОК
 
Лист с примерно 60 тыс строк, 40 столбцов. Сводная таблица вручную формируется нормально, даже без тормозов - летает. Но если действия записать макрорекордером и потом попробовать выполнить макрос, то выскакивает ошибка нехватки ресурсов Excel.
Может, есть у кого-то код VBA для формирования сводной таблицы, чтоб работал нормально.

Windows Server R2 64bit, Excel 2010 32bit
Изменение файла xml макросом, Поменять некоторые данные в xml-файле
 
Нужно в файле xml поменять некоторые данные. Либо в самом файле, либо создать новый.
Данные меняются по следующему правилу: количество в штуках надо изменить на кг, литры и другие. Норма каждого товара своя (есть справочник), поэтому надо вытянуть из xml данные КодТов и КолТов, пересчитать количество (норма у каждого товара своя, например, умножить на 5, 10 или 20) и записать в xml новое количество, а также поменять ОКЕИ_Тов на нужный и ЦенаТов на расчётную.
По форуму поискал, но так не смог найти рабочий вариант кода хотя бы получения данных из xml. Везде свои форматы xml и подогнать код под свои нужды не получилось.
Загрузить в Excel можно, но там КодТов получается без нулей и искать такой код потом в справочнике плохо.
Посоветуйте, как лучше сделать и в какую сторону копать?

ЗЫ. Почему-то файл xml размером 5 КБ этот форум принял как более 100 КБ. Поэтому rar.
Выпадающий список (проверка данных) - создать макросом, В списке имеются запятые и точки с запятой
 
Выпадающий список: создан Проверка данных - Список. Список вносится в виде: Красное,розовое;Синее,голубое;Зелёное;Белое,чёрное,серое. И в ячейке получается нормальный список:
     Красное,розовое
     Синее,голубое
     Зелёное
     Белое,чёрное,серое
Макрорекордер записывает список в виде "Красное,розовое;Синее,голубое;Зелёное;Белое,чёрное,серое". При запуске макроса выпадающий список в ячейке получается корявым в виде
     Красное
     розовое;Синее
     голубое;Зелёное;Белое
     чёрное
     серое
Т.е. суть запятой и точки с запятой меняются местами.

Как макросом внести нормальный список с запятыми в значениях?
Можно в укромное место на лист, а потом сделать ссылку, но нужен список без задействования листа.  
VBA. Объявление большого числа переменных с одинаковым типом, Укоротить строки с объявлением однотипных переменных
 
Иногда приходится объявлять большое число переменных с одинаковым типом. Например:
Код
Dim a0 as Byte, a1 as Byte, a2 as Byte, a3 as Byte, a4 as Byte, a5 as Byte, a6 as Byte, a7 as Byte, a8 as Byte, a9 as Byte
Dim b0 as Byte, b1 as Byte, b2 as Byte, b3 as Byte, b4 as Byte, b5 as Byte, b6 as Byte, b7 as Byte, b8 as Byte, b9 as Byte
' ...........
Dim m0 as Byte, m1 as Byte, m2 as Byte, m3 as Byte, m4 as Byte, m5 as Byte, m6 as Byte, m7 as Byte, m8 as Byte, m9 as Byte
Интересует, можно ли объявить все эти переменные с нужным типом Byte, не вставляя после каждой из их as Byte.
SQL: получить все строки таблицы с количеством значений по определённому полю
 
Вопрос не совсем по Excel.
В VBA запросом к таблице получаю данные, потом обработка данных и на лист Excel. Хотелось бы больше обработки возложить на SQL, т.к. на листе Excel процесс сильнее тормозит, а полученный в VBA  из результата запроса массив может быть большой и вплоть до нехватки памяти.
Таблица с code и id. Значения code уникальные, id - нет. Из таблицы надо получить все строки и количество одинаковых id по каждому code.
Пока у меня получаются данные только с одним (последним) code по каждому id.
Проблема ещё в том, в для данной таблицы и провайдера не работают вложенные запросы. Но JOIN и UNION - работают, хотя и с ними не получилось.
Возможно, решение простое, но сам никак не соображу.
Пример таблицы для простоты - в Excel.
Количество повторов значений без учёта повторов по другому критерию, Формулой без дополнительного столбца
 
Нужно формулой посчитать количество повторов каждого значения в столбце. Но повторы значения с совпадающим вторым полем считать как 1 повтор.

В примере: поля id и code. Надо в другом столбце idcount_sum напротив каждого значения формулой получить количество повторов каждого code, но code с одинаковым id считать как один повтор.
Формула легко делается с доп. столбцом tmp_id_count. Не могу сообразить, как сделать всё в одном столбце.
Сортировка Excel не различает "И" и "Й" в тексте
 
В ячейках коды (текстовые значения) типа
ИN
ЙQ
ЙD
ИF
ИZ
ЙG
После сортировки они располагаются так:
ЙD
ИF
ЙG
ИN
ЙQ
ИZ
Хотя надо, чтоб сначала шли все коды с И, затем с Й.

Просто по одной букве И и Й сортировка правильная - начала И, затем Й. Такая же проблема с Е и Ё.
То, что не учитываются в сортировке некоторые символы (напр., дефис), тоже напрягает.

У кого-то есть идеи, как отсортировать таблицу с подобными значениями нормально по алфавиту?

Создать свой список не получится, т.к. на самом деле значения не двухсимвольные, а гораздо больше. И повлиять на текст кода тоже абсолютно никак нельзя, т.к. эти коды генерятся в другой программе по своему какому-то алгоритму.

Можно с VBA. С VBA тоже в этом смысле проблемы, т.к. при сортировке надо различать И и Й, но не различать заглавные и прописные буквы. Это решил доп.процедурой в другом модуле с Option Compare Binary.
А самое главное, что таблица большая и столбцов сортировки несколько - Excel с сортировкой VBA зависает надолго. К тому же все процедуры сортировки, взятые с этого и других сайтов, страдают одним нехорошим свойством: при одинаковых значениях сам Excel располагает на листе строки в той последовательности, что были раньше, а макросы эти строки перемешивают, что совершенно не нужно.
Да и не каждый пользователь способен запустить нужный макрос в нужный момент.
Сводная таблица: итог в каждой строке, Итоги по строкам если значения из нескольких полей
 
Сводная таблица создана на основании данных с нескольких полей. См. файл.
Лист PT1 - сводная по Name с данными полей param1, param2, param3, param4. В ней есть итоги внизу (т.е. по каждому полю), но нет почему-то итогов по строке (т.е. по каждому Name). В параметрах таблицы галки на Итог по строкам и Итог по столбцам установлены.
Можно добавить суммы вручную, но это доп. заморочки. Жёлтым выделен заголовок столбца, в котором суммы вставлены отдельной формулой. Но при удалении одного из полей param суммы, естественно, остаются на месте и получается пустое пространство. Если вдруг надо добавить поля типа param, то вставленные вручную итоги вообще затираются.
Как и где в параметрах таблицы сделать так, чтоб сводная в таком виде имела свои автоматические итоги по каждой строке?

Кстати, на листе PT2 в столбцы таблицы добавлено поле status. И в таком виде в конце строк получаются итоги по param1, param2 и т.д. Что не так в первом варианте?
Разный результат выполнения SpecialCells(xlCellTypeLastCell) в Sub и Function
 
Код Cells.SpecialCells(xlCellTypeLastCell).Row выдаёт номер последней используемой строки на листе. Если использовать его в Sub, то результат правильный. Если вписать код в Function, а саму функцию запускать из Sub, то тоже результат верный. Но если внести функцию на лист как формулу, то результат получается кривой.
Что не так делаю?
В примере последняя строка 10, в ячейке B3 формула даёт 1.
Поиск по форумам, Некоторые вопросы и пожелания по поиску
 
Есть пара вопросов/пожеланий по поиску на форумах.

1. Поиск производится только на форумах. Можно ли добавить одновременно поиск по Приёмам? В крайнем случае, создать закрытую тему на форуме, в которой будут описания и ссылки уже на Приёмы.
Это чтоб упростить жизнь создающим новые темы, которые не читают, как и я, в Правилах про создания новых тем.
2. Сделать так, чтоб поиск выводил тему с найденным текстом только один раз, а не столько раз, сколько встречается заданный текст. На других форумах (не на всех, но многих) так и сделано, что, по-моему, гораздо удобнее и нагляднее.

ЗЫ. Кстати, похожие темы с похожими вопросами здесь не нашёл. Плохо искал?
VBA SQL: Дата и число в текст, Преобразовать в запросе к dbf дату или число в текст
 
Макросом получаются данные из файлов dbf. Нужно в запросе преобразовать дату и число в текст.
То, что советуется в интернетах - использовать операторы format (а также convert, cast и др.) - не помогает. Выскакивает ошибка [Microsoft][ODBC Visual FoxPro Driver]File 'format.prg' does not exist.
Драйвер подключения поменять не получается, т.к. прочие драйвера выдают ошибку Внешняя таблица не имеет предполагаемый формат.
Пока выкручиваюсь тем, что данные запроса загоняются в массив и там уже преобразуются. Но это усложняет код VBA и не всегда получается сделать быстро.
Как в самом запросе преобразовать дату или число в текст?
Код
Set cnn = New ADODB.Connection
strCnnString = "Driver={Microsoft Visual FoxPro Driver};DriverID=277;UID=;PWD=;" & _
    "SourceDB=D:\Mybase;SourceType=DBF;Exclusive=No;" & _
    "BackgroundFetch=Yes;Collate=Machine;Null=no;Deleted=Yes;"
cnn.Open strCnnString
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
sqlString = "SELECT date, doc, cena FROM mydbf" ' здесь надо бы сразу получить date и cena как строку (текст)
Set rst = cnn.Execute(sqlString)
Задержка выполнения макроса при вводе данных в TextBox, Чтоб срабатывал макрос только после ввода всех символов, а не после каждого
 
Есть TextBox, при изменении текста в котором должен срабатывать макрос. Но надо, чтоб макрос сработал после ввода всех символов, но не выходя из самого TextBox. Т.е. через некоторое время после ввода последнего символа, а не при вводе каждого символа.

Делал так.

'В модуле:
Код
Public TextBoxUpdateTime
Sub MyMacro()
MsgBox "Hello!"
End Sub

'В модуле формы:
Код
Private Sub TextBox_Change()
Dim tx
tx = TimeValue("00:00:05") ' интервал задержки
If TextBoxUpdateTime+ tx < Now Then ' если время выполнения макроса ещё не подошло
On Error Resume Next
Application.OnTime TextBoxUpdateTime+ tx, "MyMacro", Schedule:=False ' отмена запуска макроса в старое время
On Error GoTo 0
TextBoxUpdateTime= Now
Application.OnTime TextBoxUpdateTime+ tx, "MyMacro" ' назначение запуска на новое время
End If
End Sub

Почему-то срабатывает через 5 сек после начала ввода символов, а не после. Где тут косяк, не могу понять.
Номер последней строки с заданным текстовым значением, В несортированном списке найти последнее заданное текстовое значение
 
В столбце список текстовых значений в свободном порядке. Надо найти номер строки ячейки в этом столбце, в котором последний раз встречается заранее заданное значение.
На форумах находил решение на похожий вопрос, но только по числовым данным. А адаптировать под текст не получилось.
Само собой, только формулами.
Автофильтр Excel 2010: фильтр по единственному значению
 
Пример во вложении.

Выбираем, например, фильтр столбца В по Гайка. Получаем список ФИО.
И надо посмотреть, что вообще брал, например, Иванов. Т.е. устанавливаем фильтр в столбце А на Иванов, а в столбце В фильтр убираем (отобразить всё). Получаем список товаров. Всё нормально.
Заново. Фильтры сбросить.
Теперь выбираем в столбце В Болт. Получается, что Болт брал только один Иванов. Опять же: надо посмотреть, что вообще брал этот Иванов. И получается такая картина:
В 2003 всё нормально, т.е. можно выбрать Иванова и снять фильтр по товару. А в 2010 приходится либо снимать фильтр в столбце В и отдельно делать по столбцу А, либо привлекать Настраиваемый фильтр.
Если таких данных много и надо быстро просмотреть их, то в 2010 получается весьма неудобный фильтр.
Кстати, по Склад тоже нельзя выбрать галочкой, ибо тоже только единственное значение.

Где настроить, чтоб фильтр был простой выбор (галочкой), как в 2003?

ЗЫ. Но кое в чём-то фильтр 2010 лучше, чем 97-2003, согласен.
ЗЫЫ. Ну, думаю, само собой разумеется, что без макросов :-))
Пустая страница при печати
 
Во вложении книга, все данные которой явно входят на 1 страницу ландшафтом. Даже с запасом. Никаких других данных или "высовывающихся" за пределы листа ячеек нет.  
Никак не могу понять одну вещь. Почему при печати получается 2 страницы? Вторая, самой собой, полностью пустая.  
Если выставить Параметры страницы -> Разместить не более чем 1 стр. в высоту, то в конце справа остаётся много пустого места, что неудобно.  
Пробовал на нескольких разных принтерах - одно и то же.  
Может, слишком много столбцов? Неужели у Excel лёгкий глюк по этому поводу?
Специальный формат ячейки и отрицательные числа
 
Задача такая: отобразить данные в ячейке в зависимости от значения, а именно:  
при >1       - формат с одним десятичным знаком  
при <1 и >0  - формат с двумя десятичными знаками  
при <0       - целочисленный формат со знаком минус  
 
В формате ячейки -> все форматы ввожу [>1]0.0;[>0]0.00;0
В итоге числа >0 и <-0.5 отображаются как задумано. А числа от 0 до -0.5 почему-то считаются >0 и отображаются без минуса и до сотых.  
 
Что-то с форматом напутано или это такая фишка спецформата?
Можно ли убрать слово "Итог" в Итогах?
 
А можно ли подкрутить Excel так, чтоб после операции Данные -> Итоги... в столбце критериев ("при каждом изменении") после значения вместо слова "Итог" было другое слово, а лучше не было совсем?  
А то приходится после операции Итогов отдельно выделять диапазон и заменять " Итог" на "". Всё бы ничего, можно каждый раз нажать немного лишний раз поработать мышью и клавиатурой. Но иногда само значение-критерий может содержать слово " Итог". Городить каждый раз лишний макрос или функцию по откусыванию последний 5 символов в ячейке ещё муторнее... К тожу же " Итог" - это не везде так: "Итог" - это в Excel2003, а в Excel97 -"Всего". Не говоря уже про Excel на английском или прочих суахили...
Условное форматирование. Сложная формула с И(...) и ДВССЫЛ
 
Excel 2003  
 
Условное форматирование. Условия нужны такие: закрашивать ячейку, если в одной ячейке значение =1, и в другой =2.  
Если указать в формуле условного форматирования прямые ссылки на обе ячейки, то всё работает. Но надо указать ссылки в виде ДВССЫЛ(АДРЕС(текущая_строка;нужный_столбец)).  
Если в формуле присутствует только конструкция ДВССЫЛ(АДРЕС(текущая_строка;нужный_столбец)), то всё работает. Но если добавляется ещё условие, даже простое, то Условное форматирование перестаёт работать.  
 
В примере: Col2, Col4 - именованые ячейки, на номер столбца которых надо ссылаться.  
В ячейках C4, C4 и C6 - условное форматирование: формула его описана в столбце А  
В C4 и C5 - нормально, в C6 - почему-то не работает.  
 
Что не так сделано?
Вложенные Промежуточные Итоги. Неверная группировка при Итоги на данными
 
При формировании вложенных Итогов происходит неверная группировка для верхней группы данных.  
При условии "Итоги под данными" всё группируется нормально.  
Как всё-таки сделать нормальные Итоги на данными?  
 
Во вложенном файле пример на листах: сами данные, как получается при стандартной процедуре формировании Итогов, как хотелось бы получить.  
 
Excel 2003 (11.5612.5606), Но такая же беда и в Excel 97
Ссылка при вызове именованной формулы
 
Как создать именованную формулу, чтоб ссылку можно было задавать прямо при вводе её в ячейку в качестве аргумента? Т.е. чтоб в ячейку A1 можно было ввести что-то типа =МояФормула(D3) и получить значение именно из ячейки D3. Или =МояФормула(G6) - из ячейки G6 соответственно.  
 
Этот вопрос обсуждался, но правда, на другом форуме. Там через одно место проблема решается. Но главная остаётся: появляется окно с предупреждением о макросах. Но хотя и отключить их нельзя, т.к. Excel версии 4.0  
 
Может у кого есть иной способ решения?  
 
 
PS. Вопрос вдогонку.  
В формуле =ЕСЛИ(СТРОКА(D7);ИСТИНА;ЛОЖЬ) после ЕСЛИ должно идти логическое выражение. Формула СТРОКА(D7) выдаёт номер строки. А почему номер строки является вдруг значением ИСТИНА? Номер строки - это число и оно совсем не равно ИСТИНА и может быть вовсе не равно 1.  
То же самое с конструкцией ЕСЛИ(СТОЛБЕЦ(
Лишние скобки и точность вычислений: опять про арифметические глюки Excelя
 
В приложенном файле в ячейках H8 и J8 одна и та же формула. И считает по разному, если выражение заключено в дополнительные скобки. Т.е. там явно должен получиться чистый 0 (ноль), но вместо него вылазит ооочень маленькая, но ненулевая величина. Из-за этого дальнейшие вычисления выполняются неверно.  
Само нужное выражение записано в столбце H выше. И там эти "лишние" скобки уже не являются лишними.  
Понятно, что лечится добавлением в выражение ОКРУГЛ(...;2) в нужных местах. Но каждый раз такие финты не отследишь и не знаешь, с какой стороны ещё Excel взбрыкнёт.  
 
Или это всё из-за Excel 97?  
Может, что-то где-то можно подкрутить, чтоб такое больше не происходило?
Сохранить буфер обмена Clipboard или CutCopyMode при изменении на листе
 
Как сохранить буфер обмена Clipboard или CutCopyMode при каком-либо изменении на листе?  
 
Например.  
 
На листе макрос на событие изменение выделения в активной ячейке размер шрифта устанавливает 10.  
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)  
ActiveCell.Font.Size = 10  
End Sub  
 
Надо скопировать некую ячейку в другую на этот же лист.  
Выделяю некую ячейку -> Копировать  
Выделяю новую ячейку -> Вставить не работает: макрос на SelectionChange отключил CopyMode.  
 
В таком виде    
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)  
If Application.CutCopyMode = xlCopy Then  
ActiveSheet.Paste  
End If  
ActiveCell.Font.Size = 10  
End Sub  
не пойдёт, т.к. вставлять надо не автоматом при выделении ячейки, а командой Вставить  
 
В таком виде    
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)  
If Application.CutCopyMode = xlCopy Then  
Exit Sub  
End If  
ActiveCell.Font.Size = 10  
End Sub  
тоже не пойдёт, т.к. всё-таки нужно, чтоб основное действия макроса (иустановить размер шрифта 10) должно обязательно срабатывать.  
 
Как бы так, чтоб и рыбку съесть, и ...удачно сесть?  
Вообще, основное действие макроса нужно, чтоб ячейка выделялась жёлтым: ActiveCell.Interior.ColorIndex = 6
Макрорекордер и сложная формула
 
Excel 2003  
Для вставки формул макросом делаю как все: сооружаю формулу, включаю запись макроса, вхожу в редактирование ячейки, ВВОД.  
Но при сложной формуле выдаётся предупреждение «Запись невозможна» и ничего не записывается.  
Приходится разбивать формулу на составные части, записывать их макрорекордером по отдельности и потом в VBA вручную их соединять. После этого сам макрос вставки формулы работает нормально.  
 
Вопрос: это предупреждение не обойти?  
Подобная тема обсуждалась http://www.planetaexcel.ru/forum.php?thread_id=9015 и, скорее всего, это ограничение самого Excel.  
 
Интересно, что в Excel 97 подобного предупреждения не выдаётся, но и макрорекордер записывает чушь и в кастрированном виде.  
В прилагаемом файле: не записываются формулы в столбце O (выделено жёлтым).  
Для примера: макросы 1 и 2 – записаны в Excel 97. А макрос FormulaInsertMacro уже вручную доделанный рабочий.
Убрать автоматическое изменение формата ячейки при изменении формулы
 
Опять достал навязчивый сервис от MS...  
 
Excel 2003  
 
В ячейке B2 введено значение типа А123Б. Есть ещё ячейка. Формат её Числовой с двумя десятичными знаками. В ячейке формула типа =ПСТР(B2;2;3)*1. Отображается правильно, т.е. 123.00  
Захожу в ячейку для корректировки формулы вручную. Меняю формулу на, например, =ПСТР(B2;2;2)*1. Но вместо ожидаемого значения 12.00 отображается сама формула (=ПСТР(B2;2;2)*1) и формат ячейки самопроизвольно становится текстовым. Приходится опять менять формат ячейки на числовой, входить в ячейку и нажимать Enter.  
 
Как избавиться от этого маразма?  
PS. В Excel 97 такого идиотизма не было...
Видимый и значимый апостроф в начале текста в ячейке.
 
Некие сторонние данные макросом записываеются в массив Variant. Среди всего прочего есть текстовые данные с апострофом в начале. При переносе на лист Excel апостроф перестаёт отображаться и становится как бы незначимым. Т.е. не влияет на сортировку, формула ЛЕВСИМВ(A1;1) его тоже не воспринимает и т.п.  
Однако нужно, чтоб этот апостроф отображался и был значимым. Как сделать?  
 
Некоторые замечания.  
1. На источник данных повлиять никак нельзя, т.е. апостроф ничем другим не заменить.  
2. В процессе работы эти же данные получаются экспортом из txt. И там этот апостроф отображается и ЛЕВСИМВ даёт верный результат ("'"). Но сортировка этот апостроф не воспринимает. После ручного "переввода" (редактирования) данных в ячейке апостроф перестаёт отображаться.  
3. Не получается скопом вручную или макросом "переввести" данные в ячейки. Ибо общепринятая известная процедура (Копировать пустую ячейку -> Выделить нужный диапазон -> Специальная вставка -> Сложить) нужного результата не даёт.  
4. Пока приходиться изгаляться и макросом добавлять второй апостроф в начале. Но это плохо, ибо надо как-то сравнить данные из массива с данными, полученными через txt.  
 
В прикреплённом файле пример данных, полученными через txt. Данные с апострофом в конце - это после сортировки.
Строка подключения ODBC. Драйвер не поддерживает данной функции
 
Есть код VBA, который добавляет записи в dbf-файлы рабочей базы. Код давнишний, на Windows 98 – Excel 97 работает. При переносе на другой компьютер с Windows 98 – Excel 97 тоже работает. Но на Windows XP – Excel 2003 работать не хочет.  
 
Сам код. На всякий случай весь, хотя ошибка вылезает в самом начале  
 
Код
Dim cnn As ADODB.Connection   
Dim strCnnString As String   
Dim rst As ADODB.Recordset   
Dim sqlString As String   
Dim Data As Variant   
Dim DirPath As String   
   
DirPath = "D:\MyBase"   
   
Set cnn = New ADODB.Connection   
' Строка подключения ODBC.   
Set cnn = New ADODB.Connection   
    strCnnString = "Driver={Microsoft Visual FoxPro Driver};DriverID=277;UID=;PWD=;" & _   
    "SourceDB=" & DirPath & ";SourceType=DBF;Exclusive=Yes;" & _   
    "BackgroundFetch=Yes;Collate=RUSSIAN;Null=Yes;Deleted=Yes;" 'Machine   
cnn.Open strCnnString ' НА ЭТОЙ СТРОКЕ ВЫЛЕТАЕТ ОШИБКА   
   
' Используем метод Execute для создания набора записей.   
Set rst = New ADODB.Recordset   
rst.CursorLocation = adUseClient   
   
sqlString = "INSERT INTO mydbf (……)" ' Тут sql-строка для вставки данных   
   
Set rst = cnn.Execute(sqlString)   
' If rst.EOF Then   
' Else   
' Data = rst.GetRows   
' End If   
'     rst.Close   
'     Set rst = Nothing   
    cnn.Close   
    Set cnn = Nothing
 
 
 
 
Если строку подключения использовать в виде  
strCnnString = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & DirPath & ";"  
то ошибки не появляется, но… там возникает проблема с кодировкой символов, которую решать уж больно муторно….  
 
В прилагаемом файле: Рис.1 – сама ошибка  
далее: то, на что хватает моих знаний: рисунок состояния References и Option->General из Tools в VBA-редакторе.  
 
Где и что надо подкрутить, чтоб заработало?
После создания книги на шаблоне xlt удалить формулы и макросы
 
Сторонняя программа (БЭСТ) экспортирует данные в книгу xls по шаблону. В шаблоне нужные формулы и макросы.  
1. Как сделать запуск макроса ПОСЛЕ получения данных в книгу xls? (Пока получается делать только по событию Worksheet_SelectionChange, но есть ли другой способ?)  
2. Как потом удалить из книги все макросы, а формулы заменить на значения (хотя их можно заменить в макросе через Copy->PasteSpecial(Value), но есть ли ещё способ?)?
Создания сводной таблицы. Разжуйте на примере.
 
Никак не могу сообразить, как получить сводную таблицу по нескольким различным суммам. В данном примере по каждому шифру (наименованию) нужна сумма количества, рублей и объёма.  
В Приёмах смотрел, но этот момент всё-равно не очень понятен.  
 
То, что получается, выглядит не совсем удобно: либо лишние строки, либо в транспонированном виде. И приходится делать лишние действия по оформительству.  
 
В примере листы:  
Данные - табличка с исходными данными.  
Сводная вариант 1 - то, что получается при способе 1 Мастера сводных таблиц.  
Сводная вариант 2 - то, что получается при способе 2 Мастера сводных таблиц.  
Надо получить - вот такой результат хотелось бы иметь в Итоге. В данном случае сделано через СУММЕСЛИ, но в общем случае точно не известно число различных наименований товара и сводная тут была бы самый раз.
Страницы: 1 2 След.
Наверх