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

» Excel VBA

Автор: OkeyCS
Дата сообщения: 22.02.2006 09:00
Народ тут екселевский файл при открытии выдает пароль, а говорят, что есть способы взломать этот файл как-то. Подскажите как, очень надо.
Автор: Sonix
Дата сообщения: 22.02.2006 09:59
yandex (google) -> Advanced Office XP password Recovery+crack.
прога ломает - сам проверял.

Добавлено:
Вопрос для "Morlok":
ну во-первых книга их xlstart не невидимая - открывается вместе с любой запущеной;
во-вторых процедуры почему-то не используются - выдается сообщение "sub or function not defined" (хотя процедура - public).
Автор: Morlok
Дата сообщения: 22.02.2006 10:46
Если видимость выражается в отображении листов то это можно победить. Перед сохранением книги делаешь - меню "Window" и там есть пункт "Hide" после закрываешь Excel и сохраняешь при закрытии книгу. После при открытии ее не будет видно. Можно указать общее место для всех откуда открывать книги, в меню "Options" закладка "General" есть пункт открывать при запуске все файлы из папки, указываешь доступную для всех папку и все (надо будет конечно всех клиентов настроить но один раз).
А по поводу процедур ... При запуске процедуры из обще книги я указываю так Application.Run "ИмяФайлаСМакросом!ИмяПроцедуры"
Автор: mrdime
Дата сообщения: 22.02.2006 23:22
Olive77

Большое спасибо за совет. Я не знал о таком объекте. Теперь проблема решена.

respite

Подобным образом я пытался решить задачу с самого начала. Но он к сожалению не подходит потому, что

Во-первых: Достаточно один раз кликнуть мышью по ячейке, ничего туда не вводя, как она станет удовлетворять условию Is Not Null.

Во-вторых: Таким как ты описал образом, поиск производится до первой удовлетворяющей этому условию ячейки, т.е. до первой пустой ячейки. А в строке может быть 1, 2, 3, 10 пустых ячеек подряд, а потом снова ячейки с данными. В описанном тобой варианте поиск прекратится после первой же найденной пустой ячейки в строке или столбце, стало быть диапазон заполненных ячеек будет найден некорректно.
Автор: Stek
Дата сообщения: 04.03.2006 23:27
а каким образом можно в ячейке показать картинку ? Скажем эти картинки есть в других полях файла.
Автор: NEOMATRIX
Дата сообщения: 05.03.2006 19:21
Скажите пожалуйста как решить задачу в Excel:
Процесс изготовления двух видов промышленных изделий состоит в последовательной обработке каждого из них на трех станках. Время использования этих станков для производства данных изделий ограничено 10 ч. в сутки. Время обработки и прибыль от продажи одного изделия приведены в таблице. Найдите оптимальные объемы производства изделий каждого вида.

Изделие | Время обработки 1 изделия, мин. | Удельная прибыль
     Станок 1 Станок 2 Станок 3
1 10 6 6 2 долл.
2 5 20 15 3 долл.
Автор: anareon
Дата сообщения: 07.03.2006 14:50
можно ли в cделать что-то вроде auto-comlete.. Т.е пользователь набирает в ячеке начало фразы (из некторнго ограниченого множества фраз), а эксель сам дополняет фразу.. как отловить событие набора каждого символа я не нашел - его вообще возможно отловить?
Автор: Anatolij2005
Дата сообщения: 15.03.2006 16:43
Люди подскажите пожалуйста как написать макрос VBA в Excel что бы выделить все ячейки на листе где есть заливка красным цветом.
Автор: Anjin_Kazawa
Дата сообщения: 16.03.2006 11:09

Цитата:
Люди подскажите пожалуйста как написать макрос VBA в Excel что бы выделить все ячейки на листе где есть заливка красным цветом


Код:
ActiveCell.SpecialCells(xlLastCell).Select

end_row = ActiveCell.Row
end_col = ActiveCell.Column

If end_row = 2 Then end_row = 65536
If end_col = 1 Then end_col = 256
For I = 1 To end_row
For J = 1 To end_col
If Cells(I, J).Interior.ColorIndex = 7 Then
If Cells(I, J).Interior.Pattern = xlSolid Then
MsgBox "FOUND row-" + CStr(I) + " col-" + CStr(J)
End If
End If
Next J, I
Автор: aquaman77
Дата сообщения: 16.03.2006 13:14
Anatolij2005


Код:
Sub SelectCells()

Dim iCell As Range
Dim iUnionRange As Range

For Each iCell In Range("A1:Z100")

If iCell.Interior.ColorIndex = 3 Then

If iUnionRange Is Nothing Then
Set iUnionRange = Union(iCell, iCell)
Else
Set iUnionRange = Union(iUnionRange, iCell)
End If

End If

Next

If Not iUnionRange Is Nothing Then iUnionRange.Select

End Sub
Автор: Anatolij2005
Дата сообщения: 16.03.2006 15:00
Благодарю все прекрасно работает.Отдельное спасибо Junior Member и Aquamann77.
Автор: Adrenalina
Дата сообщения: 18.03.2006 12:41
Здравствуйте! Подскажите, пожалуйста, почему при запуске макроса мне выдаёт- "ошибка компиляции" и "процедура слишком велика" . Что нужно сделать?
Автор: NEOMATRIX
Дата сообщения: 20.03.2006 23:24
Помогите плз с задачей которую я указал выше. :/
Автор: Iv2
Дата сообщения: 21.03.2006 10:54
Имеется Excel 2003 и файл xml, кусок файла приведен ниже:

...
<DOC>
<STROKA NAME="..." QUANTITY="..." PRICE="...">
<LAB NOM="..." TARA="..." QUANTITY="..." />
<LAB NOM="..." TARA="..." QUANTITY="..." />
</STROKA>
</DOC>
...

В xml я не силен, подскажите, как с помощью VBA вытащить значения NAME, QUANTITY и PRICE в отдельные столбцы?
Автор: respite
Дата сообщения: 21.03.2006 11:12
Iv2

Код:
MyPath = "D:\"
MyName = Dir(MyPath, vbDirectory)
i = 1
Do While MyName <> ""
If MyName <> "." And MyName <> ".." Then
DoEvents
Open MyPath & MyName For Input As #1
Do While Not EOF(1)
DoEvents
Line Input #1, strTemp
If InStr(1, strTemp, "<STROKA", vbTextCompare) <> 0 Then
l1 = InStr(l1 + 1, strTemp, "NAME", vbTextCompare)
cells(i, 1) = Mid(strFile, l1 + 7, InStr(l1 + 1, strFile, """", vbTextCompare) - l1 - 7)
i=i+1
End If
Loop
Close #1


End If
MyName = Dir

Loop

Автор: Iv2
Дата сообщения: 21.03.2006 12:22
respite
Спасибо, но это несколько не то. В этом варианте все хорошо пока <STROKA> - это действительно одна строка.

При импорте в Excel возникает неудобство, связанное с тем,что QUANTITY присутствует и в <STROKA>, и в <LAB> (интересует только то, что находиться в <STROKA>). Может можно как-то создать программно свою xmlmap и используя ее вытащить только то, что необходимо? Или нужно использовать что-то другое?
Автор: respite
Дата сообщения: 21.03.2006 17:00
Iv2
Я предложил вариант решения "в лоб". Что мешает проверять, закончился ли тэг и использовать какую-нибудь булевую переменную?

Или сначала прочитать в переменную весь файл, а потом прыгать не по строчкам, а по "<STROKA" -> "</STROKA>".

С другой стороны, можно поробовать просто открыть xml-файл Экселем, а потом уже произвести необходимые манипуляции с данными.
Автор: Iv2
Дата сообщения: 22.03.2006 08:00
respite

Цитата:
С другой стороны, можно поробовать просто открыть xml-файл Экселем, а потом уже произвести необходимые манипуляции с данными.


Сейчас я реализовал этот вариант, но все же хотелось бы полнее использовать возможности excel-я по работе с xml. При текущем варианте сначала полностью импортируется xml-файл, а затем происходит обработка полученной таблицы. Почему бы сразу сразу не импортировать только то, что необходимо? Как это сделать я и хочу выяснить.
Автор: Zelenodolec
Дата сообщения: 22.03.2006 09:40
УВАЖАЕМЫЕ,подскажите пожалуйста как решить следующую задачу:
если в ячейке записано,например,3862,то в какой-н другой (или в TextBox) должно отразится 3 по тысяче,1пятисотка,3сотни,1пятидесятка,1десятка,2 по рублю(или 1 двухрублевая).
Помогите!
Автор: respite
Дата сообщения: 23.03.2006 08:19
Iv2
Если хочется элегантных решений, наверно, можно использовать Excel 2003 XML Tools: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_xl2003_ta/html/OfficeExcelXMLToolAddin.asp

Zelenodolec

Код: Dim lRest, lInt As Long
Dim iBanknotes As Variant
iBanknotes = Array(1000, 500, 100, 50, 10, 5, 2, 1)
lRest = 3862
For i = 0 To UBound(iBanknotes)
lInt = Fix(lRest / iBanknotes(i))
If lInt Then Debug.Print lInt & " * " & iBanknotes(i)
lRest = lRest - (lInt * iBanknotes(i))
Next i
Автор: ayol
Дата сообщения: 23.03.2006 20:37
Киньте пожалуйста линк на описание "как кодируеться инфа в екселе"

А то надо запрограмить автоматическую обработку .xls файлов
на php, а ничего об этом не знаю (
т.е. хочеться узнать как "читаеться" xls, если его блокнотом открывать.
Автор: Troitsky
Дата сообщения: 24.03.2006 07:56
ayol

Вообще подобными вопросами лучше интересоваться здесь

Вот тут, есть описание формата.
Автор: ayol
Дата сообщения: 24.03.2006 08:03


Troitsky
Спасибо огромное

читаю..
Автор: Wolfcrush
Дата сообщения: 24.03.2006 14:15
Посоветовали обратится в этот раздел...
Подскажите плиз, как в Экселе реализовать такой вот прикол...

A B C D
Автор: Troitsky
Дата сообщения: 24.03.2006 20:48
Wolfcrush
Если уж совсем примитивно, то тогда вот так:
Код: Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column = 1 Then Cells(1, 2) = Cells(ActiveCell.Row, 3)
End Sub
Автор: icywind
Дата сообщения: 26.03.2006 19:32
Нужно написать макрос для минимизации функции двух переменных (точнее, приведение ее к определенному значению). Недолго думая, решил использовать надстройку "Поиск решений". После автоматической записи макроса получил следующий код:


Код: Sub Макрос1()
SolverOk SetCell:="$G$13", MaxMinVal:=3, ValueOf:="96", ByChange:="$B$3,$D$3"
SolverSolve
End Sub
Автор: OchkaritO
Дата сообщения: 27.03.2006 10:56
Народ, помогите дописать код:

Sub MSG()
Dim i As Integer
Dim z As Integer
Set w1 = ThisWorkbook.Worksheets("Work") 'Nazvanie lista, na kotorom vvodatsay dannye'
Set w2 = ThisWorkbook.Worksheets("DB") 'Nazvanie lista, kuda budem kopirovat'
Range("R[i]C1:R[i]C10").Select
Selection.Copy
End Sub

Может быть что-то не правильно. Буду очень благодарен за помощь.
Автор: aquaman77
Дата сообщения: 27.03.2006 12:36
OchkaritO
А что хоть скрипт делать должен???
Автор: OchkaritO
Дата сообщения: 27.03.2006 13:11
С одной страницы копировать данные на другую, при этом добавляя их. И все.
Данные постоянно из одних и тех же ячеек, вводятся с клавы.
Автор: aquaman77
Дата сообщения: 27.03.2006 14:50
OchkaritO


Код:
Sub MSG()
Dim i As Integer
Dim z As Integer
Set w1 = ThisWorkbook.Worksheets("Work") 'Nazvanie lista, na kotorom vvodatsay dannye'
Set w2 = ThisWorkbook.Worksheets("DB") 'Nazvanie lista, kuda budem kopirovat'
i = 1 'cчетчик по источнику
j = 1 'счетчик по назначению
w1.Activate
' начало цикла по i тут
Range(Cells(i, 1), Cells(i, 10)).Copy w2.Cells(j, 1)
' если скопировали, то j=j+1
' конец цикла по i
End Sub

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Стоит ли переходить с Билдера на Делфи?


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