segezha.onego.ru
http://segezha.onego.ru/forum/

Для слегка продвинутых лентяев
http://segezha.onego.ru/forum/viewtopic.php?f=20&t=4270
Страница 1 из 1

Автор:  Самбука [ 23 фев 2012, 18:02 ]
Заголовок сообщения:  Для слегка продвинутых лентяев

Наткнулся на слушок, что вышла Visual Basic 7, но чего то хреново ищется.. нагуглил какой то релиз VB6 Здесь. Пока не распаковывал и не знаю, чем от купленой когда то самопально сделаной и напичканой российскими хацкерами сборки и обохваной VB 6.5 отличается.
Изображение


Но жопой чую шестое чуйство говорит, что это она и есть, тока чем то дополненая. Паралельно качаю и буду поюзать полнофункциональную пробную русскую версию от мелкософта Visual Studio 2010 Доступна в разных видах на их сайте.
Изображение

Автор:  Самбука [ 24 фев 2012, 22:38 ]
Заголовок сообщения:  Re: Для слегка продвинутых лентяев

Итог хреновый... навернул винду... фтопку пробные версии...

Автор:  Raivo [ 24 фев 2012, 23:17 ]
Заголовок сообщения:  Re: Для слегка продвинутых лентяев

Тебе вообще зачем сдался вижУл басик?

Автор:  Самбука [ 24 фев 2012, 23:48 ]
Заголовок сообщения:  Re: Для слегка продвинутых лентяев

Интересный вапрос... ога... начнем с того, как соединить два каких нить массива данных.. для простоты - пусть будут продажи и курсы валют. у тебя есть продажи в рублях по датам ну и курсы валют. существенный недостатк - отгрузки круглосуточны, а курсы к конкретной дате и выходные и праздеги выпадают (а по умолчанию должны быть на предыдущую дату) - пишется макрос и всё восстановлено. Кроме того...До нового пакета Офиса Эксель имел существенное ограничение - в районе 65 тыс, не помню точно.. потом он прост обрезает данные... в этом случае приходится переходить на Аксесс... удобная программа, но лишенная части функционала Экселя... в нём за уголок ячейку не протащищь, а на расписании и выполнении SQL-запрсов попросту долбанёшься... а вот тут и приходит на помощь среда VB, а в частности - VBA, которым пронизан весь офисный пакет. И из экселя можешь вытащить данные Асксеса и передать их в Ворд.... проще говоря - Аксес - хранилище, Эксель - обработчик, Ворд - визуализация. VB - попросту инструмент...

Автор:  Самбука [ 25 фев 2012, 00:05 ]
Заголовок сообщения:  Re: Для слегка продвинутых лентяев

Да... что б глумежа не было... я юзаю тока из-за лени... мне не влом посидеть пол дня, но потом на пол часа делать... удачно пример пришол в голову, ога... для многих документов нужна сумма прописью... шаблон в экселе с кучей формул по налогам и дочислений сводится в ИТОГО, где ручкми дописывать... а зачем? если есть инструмент... открываем Visual Basic, новый пустой модуль через Insert - Module

Код:
Function СУММАПРОПИСЬЮ(n As Double) As String 
 
 Dim Nums1, Nums2, Nums3, Nums4 As Variant 
 
 Nums1 = Array("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ") 
 Nums2 = Array("", "десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", _ 
                        "восемьдесят ", "девяносто ") 
 Nums3 = Array("", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", _ 
                        "восемьсот ", "девятьсот ") 
 Nums4 = Array("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ") 
 Nums5 = Array("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", _ 
                        "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ") 
 
 If n <= 0 Then 
   PropisRus = "ноль" 
   Exit Function 
 End If 
 'разделяем число на разряды, используя вспомогательную функцию Class 
 ed = Class(n, 1) 
 dec = Class(n, 2) 
 sot = Class(n, 3) 
 tys = Class(n, 4) 
 dectys = Class(n, 5) 
 sottys = Class(n, 6) 
 mil = Class(n, 7) 
 decmil = Class(n, 8) 
 
 'проверяем миллионы 
 Select Case decmil 
   Case 1 
     mil_txt = Nums5(mil) & "миллионов " 
     GoTo www 
   Case 2 To 9 
     decmil_txt = Nums2(decmil) 
 End Select 
 Select Case mil 
   Case 1 
     mil_txt = Nums1(mil) & "миллион " 
   Case 2, 3, 4 
     mil_txt = Nums1(mil) & "миллиона " 
   Case  5 To 20 
     mil_txt = Nums1(mil) & "миллионов " 
 End Select 
 www: 
 sottys_txt = Nums3(sottys) 
 'проверяем тысячи 
 Select Case dectys 
   Case 1 
     tys_txt = Nums5(tys) & "тысяч " 
     GoTo eee 
   Case 2 To 9 
     dectys_txt = Nums2(dectys) 
 End Select 
 Select Case tys 
   Case 0 
     If dectys > 0 Then tys_txt = Nums4(tys) & "тысяч " 
   Case 1 
     tys_txt = Nums4(tys) & "тысячa " 
   Case 2, 3, 4 
     tys_txt = Nums4(tys) & "тысячи " 
   Case 5 To 9 
     tys_txt = Nums4(tys) & "тысяч " 
 End Select 
 If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тысяч " 
 eee: 
 sot_txt = Nums3(sot) 
 'проверяем десятки 
 Select Case dec 
   Case 1 
     ed_txt = Nums5(ed) 
     GoTo rrr 
   Case 2 To 9 
     dec_txt = Nums2(dec) 
 End Select 
 
 ed_txt = Nums1(ed) 
 rrr: 
 'формируем итоговую строку 
 СУММАПРОПИСЬЮ = decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt 
End Function 
 
'вспомогательная функция для выделения из числа разрядов 
Private Function Class(M, I) 
  Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1)) 
End Function 


На выходе и имеем:

Изображение

Сделано 1 раз, на форева... в менюху ёкселя свою кнопку и юзать...

Автор:  VADR [ 25 фев 2012, 14:54 ]
Заголовок сообщения:  Re: Для слегка продвинутых лентяев

Бр-р-р... какая гадость...

Автор:  Киссандра [ 25 фев 2012, 15:14 ]
Заголовок сообщения:  Re: Для слегка продвинутых лентяев

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

Автор:  Самбука [ 26 фев 2012, 11:40 ]
Заголовок сообщения:  Re: Для слегка продвинутых лентяев

так это как в макросе забьёшь - так и будет...

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/