Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Excel VBA (часть 2)

Автор: RedPromo
Дата сообщения: 15.10.2007 09:46
Добавлено:
maratino
Приношу свои извенения, но это я неправильно тебе посоветовал.
Первое независимо от того что ты вводиш в textbox свойство text возвращает текстовую строку. У меня нормально работает твой пример, кроме правда того что если данные которые ты фильтруеш числовые не фильтруются, и в этом как теперь я понял твоя проблема. Если так то тогда зачем ты ставиш в конце & "*" к числовому формату она не подходит, его можно сравнивать только по равенству или неравенству, ну и больше/меньше.
Автор: Sunbeam_L
Дата сообщения: 15.10.2007 16:05
Привет.
Я наверное, еще не научилась правильно формировать свои мысли
Да, Oyger, ты меня правильно понял, вот только у меня нет роскоши создавать новую книгу... И юзеры сами кнопкой запускают макросы и они у них должны работать... А если мы отдадим один файл без вспомагательного, работать макросы аж никак не будут....

Автор: RedPromo
Дата сообщения: 15.10.2007 23:16
Sunbeam_L
Всетаки я не понимаю если речь идет о
Цитата:
и в принципе догадливый кастомер может туда зайти и его посмотреть
, то он может даже посмотреть на шапку это топика
Цитата:
Снятие защиты листа при забытом пароле [?]
я считаю средствами Excel невозможно нормально защитится, от "догодливого" а тем более "кастомера".
Вот если вынести код в DLL там уже нужно очень "догадливого кастомера".
Вот мне кажется нормальный пример, Надстройка PLEX для Microsoft Excel я сам был удивлен но она вскрылась на раз, тоесть ребята не стали заморачиваться на всякие ухищрения, хотя надстройка то платная.
Автор: SERGE_BLIZNUK
Дата сообщения: 16.10.2007 06:19

Цитата:
Надстройка PLEX для Microsoft Excel ... то есть ребята не стали заморачиваться на всякие ухищрения,

не ребята - сайт Планета Excel (откуда родом эта надстройка) тянет, насколько мне известно, один человек - Николай Павлов. и думаю, что те, кому надо получить функцию, а сам не в состоянии, те и могу позволить себе купить. А те, кто в состоянии "вскрыть" - те и сами себе все запрограммируют ;-)) NB. кстати, думаю, что не стоит распространять вскрытый вариант (имхо, разумеется)


Цитата:
если вынести код в DLL
есть рабочий пример использования получения строковой функции из DLL внутри VBA? (думаю, что несложно будет написать DLL-ку)
правда, тогда Ваши юзеры должны будут записать себе DLL

Автор: aks_sv
Дата сообщения: 16.10.2007 08:59
Открыт рабочий лист. Подскажите, как обратиться к предыдущему листу (без имени листа)?
Автор: RedPromo
Дата сообщения: 16.10.2007 09:11
SERGE_BLIZNUK
А я не собрался вылаживать вскрытую версию, я с уважением отношусь к автору, просто на примере хотел показать что люди не морочат себе голову с защитой.
Насчет сами тут правда, но как обучающий вариан цены ей нет.
Автор: Troitsky
Дата сообщения: 16.10.2007 09:41
aks_sv

Цитата:
Открыт рабочий лист. Подскажите, как обратиться к предыдущему листу (без имени листа)?


Код: Sheets(ActiveSheet.Index - 1)
Автор: 32sasha
Дата сообщения: 16.10.2007 09:49

Цитата:
32sasha
Что-то типа
If Range("A1").Value = 1 Then
CommandButton1.Enabled = True
Else
CommandButton1.Enabled = False
End If

А как узнать имя кнопки?
Автор: RedPromo
Дата сообщения: 16.10.2007 10:25
32sasha
А какая тебе нужна
Обект
Цитата:
Application.CommandBars


Код: Application.CommandBars("Formatting").Controls(1).Enable
Автор: tec4
Дата сообщения: 16.10.2007 11:03
Подскажите, пожалуйста, можно ли защитить лист Excel от удаления и редатирования?
Автор: RedPromo
Дата сообщения: 16.10.2007 11:30
tec4
Можно. Ссылка
Нинче популярная тема гляжу, все чегото защищают, запрещают.

Автор: aks_sv
Дата сообщения: 16.10.2007 12:42
Troitsky
Премного благодарен
Автор: Oyger
Дата сообщения: 17.10.2007 08:25
Sunbeam_L
RedPromo

Надеюсь за офф-топ не сочтут...
На счет защиты могу сказать следующие из своей практики. У меня есть два файла:
1 - форма, которую я заполняю и отсылаю юзверям. Они ее заполняют и возвращают. Все листы, защещины паролем, за исключением тех ячеек, куда нужно вставлять данные.
2 - мой рабочий файл. Там макрос, который заполняет форму и защищает все листы паролями. Далее - рассылает юзверямь.
Как уже понятно (но на всякий случай скажу), что из файла 1 пароль узнать неоткуда.
Так эти юзверя (не все, а всего 1 или 2 человека из 30) все равно умудряются сломать пароль. Он, правда, простенький - комбинация из 3 цифр.
Для меня так и остается секретом - зачем им все это? Все ячейки, которые им нужны для заполнения и так доступны, а остальные (там формулы для авторасчета) им не нужны. В общем - х.з.
Так что мой Тебе совет, Sunbeam_L: не парся с защитой. Кому надо - все равно вскроют.
Автор: Vitus_Bering
Дата сообщения: 17.10.2007 08:51
Поддерживаю Oyger, защита, что в Excel, что в Access символическая. Защищает лишь от полного чайника...
Автор: vasiliy74
Дата сообщения: 17.10.2007 14:51
может кто знает пути решения, когда добавляю условное форматирование оно встаёт последним как сделать так чтобы оно было первым?
Автор: siimao
Дата сообщения: 17.10.2007 15:24
Здравствуйте, прошу помощи.
Существует база данных из Excel файлов одного формата, размещенных в одной папке, которые содержат уникальные параметры.
Есть сводная таблица Excel, содержащая данные (х-параметр) из каждого файла.
Задача. Поставить в сводной таблице напротив х-параметров у-параметры из файлов, содержащих соответствующий х-параметр. Все переменные х и у в файлах размещены в строгом соответствии, т.е. х всегда в ячейке А1, а у - в С3.
Заранее благодарю
Автор: CEMEH
Дата сообщения: 18.10.2007 09:56
Есть файлик
http://dnv52.narod.ru/SS1.xls
В немм, напротив каждой фамилии время начала работы (явка) и конца работы (сдача) в течении месяца.

Каким образом можно построить визуальную диаграмму люди/месяц , где напротив каждой фамилии по оси Y и времени по оси X будет полосочка (рабочее время человека) можно еще и значения в начале и конце полосочки добавить в формате чч:мм.

В соседней ветке спрашивал, все молчат...

Решение представляется пока только такое: макросом писать текстовые данные для КОМПАСА и используя их строить в нем график
Автор: porokh
Дата сообщения: 18.10.2007 11:32
В Ексел 2003 в условном форматировании допускается только 3 условия, как сделать с помощью VBA больше?
Автор: aks_sv
Дата сообщения: 18.10.2007 15:05
На сайте "Планета Exel" есть интересный макрос "Курс доллара для любой заданной даты":

Код: Sub GetDollar()
Dim sURI As String
Dim oHttp As Object
Dim htmlcode, outstr As String
Dim inpdate As Date
Dim d, m, y As Integer

inpdate = CDate(InputBox("Введите дату в формате _
ДД.ММ.ГГГГ", "Курс доллара", Date))
d = Left(inpdate, 2)
m = Mid(inpdate, 4, 2)
y = Right(inpdate, 4)
sURI = "http://cbr.ru/currency_base/daily.asp?C_month= _
" & m & "&C_year=" & y & "&date_req=" & d & "% _
2F" & m & "%2F" & y & "&d1=" & d
On Error Resume Next
Set oHttp = CreateObject("MSXML2.XMLHTTP")
If Err.Number <> 0 Then
Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
End If
On Error GoTo 0
If oHttp Is Nothing Then
Exit Sub
End If
oHttp.Open "GET", sURI, False
oHttp.Send
htmlcode = oHttp.responseText
outstr = Mid(htmlcode, InStr(1, htmlcode, "USD") + 85, 7)
Set oHttp = Nothing
ActiveCell.Value = CDbl(outstr)
End Sub
Автор: Sunbeam_L
Дата сообщения: 18.10.2007 18:25
Привет.
Я сделала проще - я запротектила весь ВБА модуль, в котором и прописывала пароли. По крайней мере, если кому-то и вздумается ломать пароль ко всем страницам, так это будет (как мне кажется) сложнее. То, что нужно запротектить - не моя прихоть.
Все равно всем спасибо.

У меня постал теперь другой вопрос:
Как из макроса можно вызвать Excel Web Query (*.iqu)?
Поможете?
Автор: Vitus_Bering
Дата сообщения: 18.10.2007 18:32
Sunbeam_L

Цитата:
запротектила весь ВБА модуль, в котором и прописывала пароли. По крайней мере, если кому-то и вздумается ломать пароль ко всем страницам, так это будет (как мне кажется) сложнее.

Достаточно просто снимается пароль с VBA модуля.

Автор: kuzmaxp
Дата сообщения: 19.10.2007 08:37
Здравствуйте!
У меня следующая ситуация...
Я имею список из 60 наименований в одном столбике (некоторые из них повторяются), мне необходимо чтобы после применения автофильтра при каждом последующем выборе условия, предыдущий тоже сохранялся (набор условий, в моем случае-адресов проживания, более 5). Таким способом накапливать новую таблицу. Можно ли это реализовать?
В программировании макросов я еще новичок... :(
Помогите плз... срочно надо.

Наперед огромное спс!!!
Автор: SERGE_BLIZNUK
Дата сообщения: 19.10.2007 10:37
kuzmaxp
это точно через Макросы надо?
Посмотрите для начала в сторону расширенного фильтра (там немножко замороченно, но если разберётесь, имхо, это решит Вашу проблему).
Автор: kuzmaxp
Дата сообщения: 19.10.2007 10:53
да разницы вообще-то нету...
при использовании расширенного фильтра я не могу выбрать сразу несколько несоседних ячеек в таблице (с помощью Ctrl)... "Введен неправильный диапазон условий".

Сейчас попробывал копировать после автофильтра каждый набор отобранных значений макросом

Selection.Copy
Sheets("Лист2").Select
ActiveSheet.Paste

но столкнулся с проблемой что после каждого копирования необходимо самому опускаться на нижнюю ячейку, а потом возвращаться на Лист1 снимать выделение и снова пользоваться автофильтром... снова выделения-->и запуск макроса
Автор: Ddashevskiy
Дата сообщения: 19.10.2007 11:24
У меня на форме есть txtbox, в этой txtbox'е у меня текст из ячейки, как мне поместить мигающий курсор перед определенной позицией (допустим перед 5-ым символом в строке) в тексте? Очень надо. Восславлю знатока!
Автор: Oyger
Дата сообщения: 19.10.2007 13:02
Ddashevskiy

Это делается командой:
TextBox1.SelStart = ХХХ 'Вместо ХХХ указывается номер символа, после которого вставляется курсор.

Цитата:
Восславлю знатока

Славься, Oyger, славься. /смеется/
Автор: 32sasha
Дата сообщения: 19.10.2007 17:06
Как отсортировать в ListBox данные по алфавитному порядку?
Пожалуйста с кодом, для лучшего понимания.
Автор: Vitus_Bering
Дата сообщения: 19.10.2007 20:21
32sasha
httр://www.vba-programmer.com/Snippets/Code_VB/Sorting_Listbox.html
Автор: denisdenmm
Дата сообщения: 20.10.2007 01:41
народ а есть кто-нибудь, а то у меня вопрос

Добавлено:
в общем я уже целый день везде лазю, но не могу найти (если это вообще возможно),
допустим у меня есть куча диалоговых окон, которые я уже создал, но могу ли я допустим вызвав inputbox вызвать нужное мне окно, введя его имя, я уже всё перепробовал,
ну например можно открыть рабочий лист введя имя переменной например так workshits(i)
ну а i=(например 5) и лист есть с именем 5 а вот с окном так не получается

Добавлено:
и короче не могу я это нигде найти, почему-то эта тема никого не интересует
Автор: dneprcomp
Дата сообщения: 20.10.2007 05:18
denisdenmm
Потому, что твоя "куча диалоговых окон" и есть всего лишь куча. А объект workshits является членом массива.
Как вариант, можно объявить массив объектов и загнать туда свои окна. Тогда сможешь обращаться, подставляя индекс.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

Предыдущая тема: Написание своего HyperTerminal для считывания данных


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.