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

Страницы: 1 2 След.
vba использование диалоговых окон, наткнулся на ограничения в использовании диалогового окна saveas, как обойти
 
разрабатываю программку для работы со схемами вышивок.
нужно сохранить получившуюся на листе схему( в виде сообщества разноокрашенных ячеек) в виде рисунка.
наиболее подходяще - FileDialog(msoFileDialogSaveAs), но не дает изменить фильтр хотябы на "*.*"
как бы обойти?
Живи и дай жить..
прогресс-бар на стандартных элементах, код прогрессбара с примером работы
 
вот, доработал прогрессбар - мож кому понадобится
Живи и дай жить..
Надстройка для выдергивания данных из большого набора файлов: не работает одна из функций, не работает отрисовка даты снимка, если приложение скрыто(по умолчанию для этой надстройки)
 
есть надстройка для выдергивания из большого набора файлов в случайном порядке..
в ней есть функция выдергивания из свойств файла даты снимка и отрисовка этой даты на самом снимке..
по умолчанию при запуске надстройки, если иксель не был запущен ранее, то окно приложения скрывается и видно только окно формы..
в офисе2010 на 64битном ноуте с win7home эта функция перестает работать - файлы вобще не создаются.
на другом компе, тоже 64бит 7ка( но pro) оф2010, все работает нормально.
если сначала открыть иксель( с пустой книгой, например), а потом запустить файл надстройки, то тоже все работает нормально.
надстройку прилагаю(она, кстати, вроде была и в копилке)
чтобы включить функцию даты, нужно поставить галочку "проставить дату"
Изменено: Слэн - 19 фев 2015 10:09:21
Живи и дай жить..
vba непонятная ошибка при создании своего меню, стала вылетать ошибка при попытке создать выпадающее меню в стандартной панели
 
Set con = Application.CommandBars("Worksheet Menu Bar").Controls.Add(msoControlPopup, 1, , , True)

на этой строке получаем:  


анамнез:
Excel 2003
меню создается автоматически при загрузке надстройки.
нормально создавалось в течение нескольких лет и продолжает создаваться на других компах
перестало создаваться на одном из компов при невыясненных обстоятельствах(я был в отпуске - ничего не знаю)
сброс панели(вручную) позволяет один раз выполнить эту подпрограмму, но при следующем запуске опять вылетает
после сброса панели создает новое меню в панели, но опять вылетает при попытке создать в этом меню выпадающее подменю
переустановка офиса не помогла(с сохранением настроек)
просто добавление кнопок на панель проходит нормально, ошибка только при создании с параметром   msoControlPopup


как лечить?
Живи и дай жить..
как пометить лист для последующего удаления? VBA
 
пока только придумал имя создавать( не листа, а на листе в .names)
те на vba создаются листы, потом програмно же и уничтожаются..
но.. между может быть творчество пользователя.. поэтому положение листов или видимое имя не годятся
Живи и дай жить..
макрос, запуск фонового экземпляра иксель и запуск макроса в нем, запустить в отдельном процессе иксель макрос пустого цикла
 
когда все делал в одном процессе, - текущем, то работало, а с запуском копии почему-то нет.
те копия запускается, но цикл нет - видно на дистпечере задач.
где грабли?

предыстория: попросили загрузить процессор, чтобы параллельная задача(не знаю какая, не иксель) немного притормозилась. простого запуска цикла оказалось недостаточно, как запустить несколько процессов иксель параллельно руками объяснить не удалось..

по кнопке пуск запускается столько экземпляров иксель, сколько установлено на "умножителе"
Изменено: Слэн - 11 ноя 2013 09:30:43
Живи и дай жить..
найти строки, взаимодополняющие друг друга до единичной, дан массив из нулей и единиц, много строк и столбцов. составить эффективный алгоритм
 
Цитата
Простите я опять с массивами..
Есть двумерный массив из нулей и единиц. Требуется найти минимальное количество строк, которые бы образовали строку только из единиц. Результатом должны быть номера строк и их количество.

Я сначала ищу строку где больше всего единиц и начинаю ее сравнивать со всеми строками на максимальное отличие, как только нахожу такую, меняю в строке нули на единицы и сравниваю дальше. Очень долгий и много раз повторяющийся цикл For Next в Do Loop.... Может кто-нибудь предложит прогрессивнее метод?

В приложении сама матрица чисел 150 строк на 50 столбцов. (в оригинале существенно больше, обрезал для примера)


не совсем понял, чем не удовлетворило модераторов название темы..
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=51776&result=new

так лучше?  :)  

сначала можно было бы посчитать суммы всех строк и занести их в массив(словарь)

потом начиная с наибольшей суммы искать сразу в дополняющих суммах, а не во всех. например:

есть сумма 39 смотрим в словаре, есть ли строки с суммой 11(дополнение до 50)и проверяем только среди них, есть ли соответствие по месту единиц и нулей..

ссылка на файл: http://www.planetaexcel.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=78268&action=download
Изменено: Слэн - 11 окт 2013 10:59:41
Живи и дай жить..
надстройка для случайного набора файлов из папки(и подкаталогов), случайный выбор файлов, определенный объем файлов, простановка даты снимка на фото
 
выкладывал в старом форуме, но вот доработал возможностью простановки на фото даты снимка..
эта функция правда отработана только для иксель 2010!
я использую эту программку для набора попури из большого домашнего фотоальбома для маленькой такой фоторамки( у меня внутр память 512Мб). и вечером, когда семья обычно собирается перед зомбоящиком, рамка фключается и показывает избранные фотки..

доработал некоторые неточности, а главное добавил возможность вытаскивать из файла дату снимка и наносить на фото( т.е использовал иксель как некоторое подобие фоторедактора)
если программа не находит даты снимка в файле, то берет дату последнего изменения и проставляет тег MD на фото перед датой..
потестируйте, а?
Живи и дай жить..
а никто не работал из икселя с сервисом Яндекс.Диск ?
 
интересуют примеры заливки на диск файлов
Живи и дай жить..
календарь на стандартных элементах, примеры использования
 
Календарь, основанный на стандартных элементах – т.е. не требует подключения дополнительных библиотек, а так же открыт для улучшения/ухудшения/доработки напильником.  
 
Благодаря qw присутствуют четыре вида дизайна (мне лично нравится третий – считая слева, если нажать кнопку «показать календари») .  
 
Благодаря ZVI календарь позиционируется рядом с активной (или заданной) ячейкой.  
 
Благодаря обсуждению на данном форуме календарь принял нижеследующий вид (см вложение).  
 
В файле есть примеры вызова календаря по кнопке (и позиционирования его на экране), по двойному клику в ячейке (позиционируется рядом с ячейкой), из контекстного меню (тоже рядом с активной ячейкой), по двойному клику на встроенном activex-объекте(текстбокс, комбобокс), клик по встроенной фигуре, двойной клик на элементе формы.  
 
Календарь может изменять свой размер при нажатии на спин-кнопку в левом верхнем углу и запоминает этот размер для последующих вызовов (записывая его в имени).  
 
Также уделено некоторое внимание возможности вызывать календарь в другую ячейку, не закрывая его при вызове двойным кликом (если вдруг промахнешься) - просто кликаете в другую ячейку... Но, признаюсь, это несколько усложняет код и, соответственно, понимание его. Каюсь, но не смог удержаться.  
 
Еще раз повторяю, что предназначен он для разработчиков, которые могут свободно включать этот код в свои проекты, а так же изменять его.  
 
Для конечных пользователей может быть сподоблюсь сделать надстройку в дальнейшем.  
 
Советы по улучшению и просто критика – приветствуются – обсуждение ведется в теме:  
http://www.planetaexcel.ru/forum.php?thread_id=39115
Живи и дай жить..
пропадает имя. офис 2007 связка файлов.
 
<EM>http://webfile.ru/5876617</EM> - 1,5Мб!  
офис2007  
в архиве два файла, для краткости: тз и супер  
 
тз при загрузке открывает супер, берет данные для списков проверки данных и закрывает его.  
 
путь к супер прописан через лента-надстройки-отчет-база.  
 
по кнопке отчет открывается супер и идет манипуляция данными с помощью макроса прописанного в супер же, в модуле Maction_report. в частности нужно скопировать данные, обозначенные в супер именем a_t.. вот тут и начинаются загадки. имя куда-то пропадает. т.е. если просто открыть супер из виндоус, то имя есть, а если по кнопке отчет из тз, то нету..  
 
помогите кто чем может.. может мысль какую, может намек..
Живи и дай жить..
Календарь на стандартных элементах
 
Календарь, основанный на стандартных элементах – т.е. не требует подключения дополнительных библиотек, а так же открыт для улучшения/ухудшения/доработки напильником.  
 
Благодаря qw присутствуют четыре вида дизайна (мне лично нравится третий – считая слева, если нажать кнопку «показать календари») .  
 
Благодаря ZVI календарь позиционируется рядом с активной (или заданной) ячейкой.  
 
Благодаря обсуждению на данном форуме календарь принял нижеследующий вид (см вложение).  
 
В файле есть примеры вызова календаря по кнопке (и позиционирования его на экране), по двойному клику в ячейке (позиционируется рядом с ячейкой), из контекстного меню (тоже рядом с активной ячейкой).  
 
Календарь может изменять свой размер при нажатии на спин-кнопку в левом верхнем углу и запоминает этот размер для последующих вызовов (записывая его в имени).  
 
Также уделено некоторое внимание возможности вызывать календарь в другую ячейку, не закрывая его при вызове двойным кликом (если вдруг промахнешься) - просто кликаете в другую ячейку... Но, признаюсь, это несколько усложняет код и, соответственно, понимание его. Каюсь, но не смог удержаться.  
 
Еще раз повторяю, что предназначен он для разработчиков, которые могут свободно включать этот код в свои проекты, а так же изменять его.  
 
Для конечных пользователей может быть сподоблюсь сделать надстройку в дальнейшем.  
 
Советы по улучшению  и просто критика – приветствуются.
Живи и дай жить..
как активировать лист после вызова немодальной формы?
 
чтобы сразу можно было вбивать данные в ячейку, не тыкая в нее мышой?
Живи и дай жить..
программное создание проверки данных - разночтения на разных компах
 
With Range("g8").Validation  
               .Delete  
               .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertWarning, Operator _  
               :=xlBetween, Formula1:= _  
               "=G8/ЗНАЧЕН(ЛЕВСИМВ(F8;ПОИСК("" "";F8)-1))=ЦЕЛОЕ(G8/ЗНАЧЕН(ЛЕВСИМВ(F8;ПОИСК("" "";F8)-1)))"  
               .IgnoreBlank = True  
               .InCellDropdown = True  
               .InputTitle = ""  
               .ErrorTitle = "Внимание"  
               .InputMessage = _  
               "Заказывайте товар" & Chr(10) & "          СТРОГО " & Chr(10) & "в соответствии с количествами," & Chr(10) & " указанными в колонке" & Chr(10) & "       КРАТНОСТЬ" & Chr(10) & "    (первое число)."  
               .ErrorMessage = _  
               "Вы вводите количество," & Chr(10) & " некратное минимальному." & Chr(10) & " Пожалуйста, обратите" & Chr(10) & " внимание на цифры в колонке " & Chr(10) & "кратность, особенно на первую." & Chr(10) & "вторая - количество в упаковке," & Chr(10) & " - дана для справки."  
               .ShowInput = False  
               .ShowError = True  
               .Parent.Copy  
           End With  
 
на одном компе работает без ошибок, на другом спотыкается на операции .add  
 
офис и там и там русский 2003
Живи и дай жить..
офф/2 можно ли получить из текстового файла (csv) sql запросом строки согласно списку номеров
 
список может содержать 100 или больше позиций.
Живи и дай жить..
прогрессбар - простая форма, открытый код
 
воодушевленный интересом к календарю :)  
 
и подвинутый очередным отказом работы надстройки, связанным с отсутствием библиотек после чистки машины каким-то там клинером(не у меня, у сотрудника)..  
 
вот, сподобился. мож кому пригодится.  
 
прогрессбар на простых элементах, с возможностью прерывания процесса  
пример вызывающего кода присутствует..
Живи и дай жить..
всплывающий календарь, простая форма, открытый код
 
понадобился календарь. встроенный в 2003й иксель устраивал, но у заказчика 2007й - нужно прописывать.. не годится.  
нашел xla версию, но закрыта паролем( нашел и вскрытую, но чужое - некул)  
 
плюнул, написал свое. судите(но не строго)  
 
ps предназначается в основном для тех, кто хочет интегрировать календарь в свой код.
Живи и дай жить..
почему не работает application.transpose ?
 
с меньшим количеством строк прайса - работало.  
с тестовым прайсом на 60 000 строк(но коротких) - работало.  
теперь отказывается.  
 
модераторы - простите небольшое превышение размера.
Живи и дай жить..
доработал программу случайного выбора файлов
 
выбирает случайные файлы из указанной папки( с подкаталогами) по заданной маске(расширению) до общего заданного объема.  
 
складывает в выбранную папку(с очисткой ее при необходимости).  
 
любителям музыки и фотографий посвящается..(можно, конечно, и другие назначения придумать)
Живи и дай жить..
offtop/2 иксель и стихи
 
переводил гете - песнь ночного странника..
Живи и дай жить..
задача со звездочкой - vba работа с памятью
 
задача: вернуть числовой код, уникальный для любого  3х-буквенного сочетания(точнее от 1 до 3х букв)  
 
мое первоначальное решение:  
 
Function getncomb(sr$) As Long  
getncomb = CLng(Asc(Mid(LCase(sr), 1, 1)) - 223) * 10000  
If Len(sr) > 1 Then  
   getncomb = getncomb + (Asc(Mid(LCase(sr), 2, 1)) - 223) * 100  
   If Len(sr) > 2 Then getncomb = getncomb + Asc(Mid(LCase(sr), 3, 1)) - 223  
End If  
End Function  
 
 
вот текущее решение - работает в 4 раза быстрее:  
Private Declare Sub GetMem8 Lib "msvbvm60.dll" (ByVal SrcPointer As Long, ByVal DstPointer As Long)  
Function getncomb(sr$) As Long  
Dim  r(0 To 99) As Integer  
Call GetMem8(StrPtr(sr), VarPtr(r(0)))  
getncomb = r(0) - 1071  
If Len(sr) > 1 Then  
   getncomb = getncomb + (r(1) - 1071) * 33  
   If Len(sr) > 2 Then getncomb = getncomb + (r(2) - 1071) * 1089  
End If  
End Function  
 
 
собственно вопрос - будет ли быстрее, если не переписывать память(в данном случае нужно всего лишь 6 байт, но приходится брать 8), а подменить указатели, чтобы массив r ссылался на данные строки sr  ?
Живи и дай жить..
vba как узнать адрес переменной в памяти
 
!
Живи и дай жить..
vba сортировка двумерного массива по определенному полю
 
есть алгоритм сортировки одномерного массива.  
 
далее вижу такой пордход  
1 берем одномерный столбец( тот, по которому нужно сортировать)(вот тут лучше воспользоваться средствами не совсем VBA - функция copymemory из библиотеки kernel32 с этим справится быстрее)  
 
2 создаем доп массив, равный получившемуся одномерному- он будет считаться заполненным порядковыми номерами элементов первого массива(1,2,3..) - т.е. изначально он упорядочен.  
 
3 сортируем первый массив, одновременно выполняя те же преобразования над вторым  
 
4 переписываем остальные поля двумерного массива в соответствии с порядком, получившимся в нашем дополнит массиве - например получилось 4,2,8,1.. -    
заполняем двумерный массив arr(1 to n,1 to c) из первоначального массива arr_n с помощью нашего доп массива arr_r(1 to n)  
for i=1 to n  
..  
arr(i,c)=arr_n(arr_r(i))  
next  
 
есть ли лучшие предложения? или где почитать?
Живи и дай жить..
выбор файлов из вложенных папок в случайном порядке
 
тут на день рождения подарили фоторамку..  
 
можно, конечно и с флешки просматривать, но внутренняя память на 512Мб вполне устраивает - больше - слишком долго смотреть, устаешь.  
 
так вот..  решил сделать случайную выборку из домашнего альбома(а он ужо около 25Гб).  
 
вот что получилось: см вложение  
 
прошу потестить и отозваться..(выбирать можно ведь не только графические файлы)  
 
суть в чем - указываем папку альбома, маску(можно ткнуть в файл), и объем выборки..  
прога в случайном порядке выбирает из всех вложенных папок файлы до достижения требуемого объема и сохраняет их в отдельной папке, которую уже можно скинуть на флешку..
Живи и дай жить..
перенос настроек иксель
 
кто-то недавно спрашивал..  
 
в приемах есть, но косвенно..  
 
а есть, оказывается, прямой способ - мастер сохранения настроек/профилей  
 
C:\Program Files\Microsoft Office\OFFICE11\PROFLWIZ.EXE
Живи и дай жить..
можно ли отменить ввод кода для зарегистрированных пользователей?
 
и 2e  
 
нельзя ли ссылку "создать новую тему" продублировать и в начале страницы?
Живи и дай жить..
оффтоп/2 самое то в пятницу.. зимой.. игрушка на иксель
 
вот excel-ok предложил и я выполнил :)  
 
потестте пожалуйста.  
 
задача - уничтожить как можно больше снежинок.. но на каждую свое оружие - простой клик или двойной..
Живи и дай жить..
задачи со звездочкой ( * ) игрушка питон
 
Олег_Б на sql.ru  выложил такую игрушку. Я ее чуть модернизировал, чтобы управление было с обычных стрелочек, ну и там еще по мелочи..  
 
1 кто мне скажет почему не получается переопределить клавиши управления с помощью onkey  
 
2 предлагаю написать генератор лабиринтов для игры.
Живи и дай жить..
создание собственных меню в офис2007
 
нашел такую тему:  
http://msdn.microsoft.com/ru-ru/magazine/cc163469.aspx  
и такое средство:  
http://openxmldeveloper.org/archive/2006/05/26/CustomUIeditor.aspx  
 
но не понимает русского(или я чего-то не понимаю) - посветите кто чем может :)
Живи и дай жить..
нахождение элементов в списке, дающих заданную сумму
 
Вот накропал на досуге программку.  
Спрашивают иногда люди.  
 
В столбеце А  - список элементов.  
Задаете нужное значение и точность - жмете кнопку.  
 
Если не находит - говорит, что максимум может найти(точность) - задайте чуть большее значение.
Живи и дай жить..
Страницы: 1 2 След.
Наверх