Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Записи участника (krosav4ig) - Мир MS Excel

Результаты поиска
krosav4ig Дата: Среда, 15.10.2014, 19:40 | Сообщение № 2101 | Тема: Получение котировок на драгметаллы с сайта ЦБ РФ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Да, и по выходным, и по праздникам


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДа, и по выходным, и по праздникам

Автор - krosav4ig
Дата добавления - 15.10.2014 в 19:40
krosav4ig Дата: Среда, 15.10.2014, 18:09 | Сообщение № 2102 | Тема: Печать нескольких страниц на одном листе
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
попробуйте печатать через виртуальный принтер, например fineprint или priprinter


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 15.10.2014, 18:18
 
Ответить
Сообщениепопробуйте печатать через виртуальный принтер, например fineprint или priprinter

Автор - krosav4ig
Дата добавления - 15.10.2014 в 18:09
krosav4ig Дата: Среда, 15.10.2014, 17:52 | Сообщение № 2103 | Тема: Песечение строк и стлобцов с условием, содержат какое-то зна
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а можно и без ИНДЕКС :)
Pavel_1, обратите внимание на количество пробелов и точек
[p.s.]формулу название темы навеяло
К сообщению приложен файл: 0745003.xls (36.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 15.10.2014, 18:32
 
Ответить
Сообщениеа можно и без ИНДЕКС :)
Pavel_1, обратите внимание на количество пробелов и точек
[p.s.]формулу название темы навеяло

Автор - krosav4ig
Дата добавления - 15.10.2014 в 17:52
krosav4ig Дата: Среда, 15.10.2014, 16:00 | Сообщение № 2104 | Тема: Диаграмма средних значений
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
смотрите лист2

upd.
заменил файл (перепаковал в deflate, был lzma, но его не все понимают)
К сообщению приложен файл: 0226857.zip (73.6 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 15.10.2014, 16:55
 
Ответить
Сообщениесмотрите лист2

upd.
заменил файл (перепаковал в deflate, был lzma, но его не все понимают)

Автор - krosav4ig
Дата добавления - 15.10.2014 в 16:00
krosav4ig Дата: Вторник, 14.10.2014, 18:56 | Сообщение № 2105 | Тема: Получение котировок на драгметаллы с сайта ЦБ РФ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
переписал МетЦБР. Теперь работает как надо
[vba]
Код
Function МетЦБР#(Optional Code% = 2, Optional dDate As Date)
     Dim d As Object, ddate1 As Date: Set d = CreateObject("MSXML2.DOMDocument.4.0")
     dDate = IIf(dDate, dDate, Date): ddate1 = Application.EDate(dDate, -1): d.async = 0
     d.Load ("http://www.cbr.ru/scripts/xml_metall.asp?date_req1=" & ddate1 & "&date_req2=" & dDate)
     МетЦБР= CDbl(d.SelectSingleNode("*/Record[@Code='" & Code & "'][last()]/Buy").Text)
     Set d = Nothing
End Function
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениепереписал МетЦБР. Теперь работает как надо
[vba]
Код
Function МетЦБР#(Optional Code% = 2, Optional dDate As Date)
     Dim d As Object, ddate1 As Date: Set d = CreateObject("MSXML2.DOMDocument.4.0")
     dDate = IIf(dDate, dDate, Date): ddate1 = Application.EDate(dDate, -1): d.async = 0
     d.Load ("http://www.cbr.ru/scripts/xml_metall.asp?date_req1=" & ddate1 & "&date_req2=" & dDate)
     МетЦБР= CDbl(d.SelectSingleNode("*/Record[@Code='" & Code & "'][last()]/Buy").Text)
     Set d = Nothing
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 14.10.2014 в 18:56
krosav4ig Дата: Вторник, 14.10.2014, 17:52 | Сообщение № 2106 | Тема: Получение котировок на драгметаллы с сайта ЦБ РФ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
то же самое и с soap, у вас в функции DragMetDynamic("11.10.2014", 2) свойство xml.xml равно
а при дате = "12.10.2014" или "13.10.2014" xml.xml уже равен


ЗЫ.
[vba]
Код
    For Each x In XML.SelectNodes("//CodMet")
          If Val(x.Text) = Met Then
              DragMetDynamic = Val(x.ParentNode.ChildNodes(2).Text)
          End If
      Next
[/vba] можно заменить на

[vba]
Код
    DragMetDynamic = Val(XML.SelectSingleNode("//DrgMet[CodMet='" & Met & "']/price").Text)
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 14.10.2014, 17:54
 
Ответить
Сообщението же самое и с soap, у вас в функции DragMetDynamic("11.10.2014", 2) свойство xml.xml равно
а при дате = "12.10.2014" или "13.10.2014" xml.xml уже равен


ЗЫ.
[vba]
Код
    For Each x In XML.SelectNodes("//CodMet")
          If Val(x.Text) = Met Then
              DragMetDynamic = Val(x.ParentNode.ChildNodes(2).Text)
          End If
      Next
[/vba] можно заменить на

[vba]
Код
    DragMetDynamic = Val(XML.SelectSingleNode("//DrgMet[CodMet='" & Met & "']/price").Text)
[/vba]

Автор - krosav4ig
Дата добавления - 14.10.2014 в 17:52
krosav4ig Дата: Вторник, 14.10.2014, 17:52 | Сообщение № 2107 | Тема: Получение котировок на драгметаллы с сайта ЦБ РФ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
doober, загвоздка в том, что и через soap запрос, и через xml_metall.asp цбр дает курс только в том случае, если есть курс, который вступает в силу в запрашиваемую дату. Т.е. в воскресенье и понедельник курс получить не получается
к примеру по ссылке http://www.cbr.ru/scripts....10.2014 возвращаются котировки, а по http://www.cbr.ru/scripts....10.2014 и http://www.cbr.ru/scripts....10.2014 -нет


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеdoober, загвоздка в том, что и через soap запрос, и через xml_metall.asp цбр дает курс только в том случае, если есть курс, который вступает в силу в запрашиваемую дату. Т.е. в воскресенье и понедельник курс получить не получается
к примеру по ссылке http://www.cbr.ru/scripts....10.2014 возвращаются котировки, а по http://www.cbr.ru/scripts....10.2014 и http://www.cbr.ru/scripts....10.2014 -нет

Автор - krosav4ig
Дата добавления - 14.10.2014 в 17:52
krosav4ig Дата: Вторник, 14.10.2014, 15:16 | Сообщение № 2108 | Тема: Получение котировок на драгметаллы с сайта ЦБ РФ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
мысля подтвердилась, даю исправленную функцию[vba]
Код
Option Explicit
Private Declare Function DeleteUrlCacheEntry& Lib "wininet" (ByVal lpszUrlName$)
Function МетЦБР2#(code)
      Application.Volatile False
      Dim oHTML As HTMLDocument, oDoc As HTMLDocument, elem As HTMLBaseElement, url$, n%, str$, diff#:
      Set oHTML = New HTMLDocument
      url = "http://cbr.ru/"
      DeleteUrlCacheEntry (url)
      Set oDoc = oHTML.createDocumentFromUrl(url, "")
      Do
          DoEvents
      Loop Until oDoc.readyState = "complete"
      oHTML.body.innerHTML = oDoc.getElementById("widget_metal").innerHTML
      Set oDoc = Nothing
      n = InStr(1, "_auagptpg", LCase(code)) / 2 - 1 + Val(code)
      Set elem = oHTML.getElementsByTagName("span")(n)
      With oHTML.getElementsByTagName("i")
          If Not .Item(n + 1) Is Nothing Then diff = CDbl(.Item(n + 1).Title)
      End With
      МетЦБР2 = CDbl(elem.innerText) - diff
      'With Application.Caller
      '    If Not .Comment Is Nothing Then .Comment.Delete
      '    str = oHTML.getElementsByTagName("ins")(n).ParentNode.innerText
      '    str = str & CStr(CDate(Mid(Replace(oHTML.LastModified, "/", "/" & Left(oHTML.LastModified, 3)), 7, 10)))
      '    .AddComment str & Right(oHTML.LastModified, 9)
      'End With
      Set elem = Nothing
      Set oHTML = Nothing
End Function
[/vba]
Если при вычислении этой функции появляется окошко c предупреждением о безопасности, то нужно внести cbr.ru в доверенные узлы:
пуск->выполнить->Inetcpl.cpl->безопасность->надежные узлы->узлы->убрать галочку, ввести cbr.ru->добавить->закрыть->ОК
или
пуск->выполнить->Inetcpl.cpl->безопасность->местная интрасеть->узлы->дополнительно->убрать галочку, ввести cbr.ru->добавить->закрыть->ОК->ОК


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 14.10.2014, 15:38
 
Ответить
Сообщениемысля подтвердилась, даю исправленную функцию[vba]
Код
Option Explicit
Private Declare Function DeleteUrlCacheEntry& Lib "wininet" (ByVal lpszUrlName$)
Function МетЦБР2#(code)
      Application.Volatile False
      Dim oHTML As HTMLDocument, oDoc As HTMLDocument, elem As HTMLBaseElement, url$, n%, str$, diff#:
      Set oHTML = New HTMLDocument
      url = "http://cbr.ru/"
      DeleteUrlCacheEntry (url)
      Set oDoc = oHTML.createDocumentFromUrl(url, "")
      Do
          DoEvents
      Loop Until oDoc.readyState = "complete"
      oHTML.body.innerHTML = oDoc.getElementById("widget_metal").innerHTML
      Set oDoc = Nothing
      n = InStr(1, "_auagptpg", LCase(code)) / 2 - 1 + Val(code)
      Set elem = oHTML.getElementsByTagName("span")(n)
      With oHTML.getElementsByTagName("i")
          If Not .Item(n + 1) Is Nothing Then diff = CDbl(.Item(n + 1).Title)
      End With
      МетЦБР2 = CDbl(elem.innerText) - diff
      'With Application.Caller
      '    If Not .Comment Is Nothing Then .Comment.Delete
      '    str = oHTML.getElementsByTagName("ins")(n).ParentNode.innerText
      '    str = str & CStr(CDate(Mid(Replace(oHTML.LastModified, "/", "/" & Left(oHTML.LastModified, 3)), 7, 10)))
      '    .AddComment str & Right(oHTML.LastModified, 9)
      'End With
      Set elem = Nothing
      Set oHTML = Nothing
End Function
[/vba]
Если при вычислении этой функции появляется окошко c предупреждением о безопасности, то нужно внести cbr.ru в доверенные узлы:
пуск->выполнить->Inetcpl.cpl->безопасность->надежные узлы->узлы->убрать галочку, ввести cbr.ru->добавить->закрыть->ОК
или
пуск->выполнить->Inetcpl.cpl->безопасность->местная интрасеть->узлы->дополнительно->убрать галочку, ввести cbr.ru->добавить->закрыть->ОК->ОК

Автор - krosav4ig
Дата добавления - 14.10.2014 в 15:16
krosav4ig Дата: Вторник, 14.10.2014, 04:19 | Сообщение № 2109 | Тема: Поиск одинаковых ячеек и выгрузка в другой лист
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Прикладываю примерную таблицу

а таблица наверно невидимка ;)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
Прикладываю примерную таблицу

а таблица наверно невидимка ;)

Автор - krosav4ig
Дата добавления - 14.10.2014 в 04:19
krosav4ig Дата: Вторник, 14.10.2014, 03:08 | Сообщение № 2110 | Тема: Получение котировок на драгметаллы с сайта ЦБ РФ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
ну с валютами все намного проще. ЦБ сам выдает действующий курс на запрашиваемую дату, а с металлами он этого делать не хочет :(
кстати вот переписанная мной функция, которая делает то же самое, что и GetRate, только в случае ошибки она возвращает #ЗНАЧ
[vba]
Код
Function ЦБР#(Optional Curr$, Optional dDate As Date)
     Dim d As Object, date_req$
     Set d = CreateObject("msxml.DOMDocument")
     If Not CBool(Len(Curr)) Then Curr = "USD"
     date_req = "?date_req=" & IIf(dDate, dDate, Date)
     d.async = 0: d.Load ("http://www.cbr.ru/scripts/XML_daily.asp" & date_req)
     With d.SelectSingleNode("*/Valute[CharCode='" & UCase(Curr) & "']")
         ЦБР = CDbl(.ChildNodes(4).Text) / Val(.ChildNodes(2).Text)
     End With
     Set d = Nothing
End Function
[/vba]
1 атрибут- буквенный код валюты, если не указан - по умолчанию "USD"
2 атрибут -дата (как в МетЦБР), если не указана - по умолчанию текущая системная дата

есть мысля по поводу исправления МетЦБР2, если после 14:00 мысля подтвердится, выложу исправленный код


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 14.10.2014, 03:29
 
Ответить
Сообщениену с валютами все намного проще. ЦБ сам выдает действующий курс на запрашиваемую дату, а с металлами он этого делать не хочет :(
кстати вот переписанная мной функция, которая делает то же самое, что и GetRate, только в случае ошибки она возвращает #ЗНАЧ
[vba]
Код
Function ЦБР#(Optional Curr$, Optional dDate As Date)
     Dim d As Object, date_req$
     Set d = CreateObject("msxml.DOMDocument")
     If Not CBool(Len(Curr)) Then Curr = "USD"
     date_req = "?date_req=" & IIf(dDate, dDate, Date)
     d.async = 0: d.Load ("http://www.cbr.ru/scripts/XML_daily.asp" & date_req)
     With d.SelectSingleNode("*/Valute[CharCode='" & UCase(Curr) & "']")
         ЦБР = CDbl(.ChildNodes(4).Text) / Val(.ChildNodes(2).Text)
     End With
     Set d = Nothing
End Function
[/vba]
1 атрибут- буквенный код валюты, если не указан - по умолчанию "USD"
2 атрибут -дата (как в МетЦБР), если не указана - по умолчанию текущая системная дата

есть мысля по поводу исправления МетЦБР2, если после 14:00 мысля подтвердится, выложу исправленный код

Автор - krosav4ig
Дата добавления - 14.10.2014 в 03:08
krosav4ig Дата: Понедельник, 13.10.2014, 23:11 | Сообщение № 2111 | Тема: Получение котировок на драгметаллы с сайта ЦБ РФ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
я правильно понял, что в пятницу ЦБ устанавливает курс, который вступает в силу с субботы и действует по понедельник включительно?
и по поводу праздников. К примеру тут написано
Цитата
1, 2, 3, 4, 5, 6 и 8 января — Новогодние каникулы;
7 января — Рождество Христово;
9 января — выходной;

это означает, что 31 декабря устанавливается курс, который вступает в силу 1 янв и действует по 12 янв включительно (1-9 янв нерабочие дни, 10 янв-суббота)?


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 13.10.2014, 23:24
 
Ответить
Сообщениея правильно понял, что в пятницу ЦБ устанавливает курс, который вступает в силу с субботы и действует по понедельник включительно?
и по поводу праздников. К примеру тут написано
Цитата
1, 2, 3, 4, 5, 6 и 8 января — Новогодние каникулы;
7 января — Рождество Христово;
9 января — выходной;

это означает, что 31 декабря устанавливается курс, который вступает в силу 1 янв и действует по 12 янв включительно (1-9 янв нерабочие дни, 10 янв-суббота)?

Автор - krosav4ig
Дата добавления - 13.10.2014 в 23:11
krosav4ig Дата: Понедельник, 13.10.2014, 20:49 | Сообщение № 2112 | Тема: Макрос объединения текста выбранных столбцов построчно
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Wander, а обязательно ячейки именно объединять? Может вам такой вариант подойдет?
[vba]
Код
Sub JoinVal()
           Dim rng As Range, cell As Range, wsh As Worksheet
10        On Error GoTo err
20        With Application
30            .ScreenUpdating = 0: .EnableEvents = 0
40            Set wsh = ThisWorkbook.Worksheets("Лист1")
50            Set rng = Intersect(wsh.UsedRange, wsh.[A:A])
60            For Each cell In rng.Cells
70                cell.Value = Trim(Join(.Index(wsh.Range(cell, cell.Offset(, _
                       2)).Value, 1, 0), " "))
80            Next
90            wsh.[B:C].EntireColumn.Delete: rng.EntireColumn.AutoFit
100 err:      If err.Number Then
110               MsgBox "Ошибка " & err.Number & " (" & err.Description & _
                       ") в процедуре JoinVal модуля Module1 на строке " & Erl
120           End If
130           .ScreenUpdating = 1: .EnableEvents = 1
140       End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 13.10.2014, 22:14
 
Ответить
СообщениеWander, а обязательно ячейки именно объединять? Может вам такой вариант подойдет?
[vba]
Код
Sub JoinVal()
           Dim rng As Range, cell As Range, wsh As Worksheet
10        On Error GoTo err
20        With Application
30            .ScreenUpdating = 0: .EnableEvents = 0
40            Set wsh = ThisWorkbook.Worksheets("Лист1")
50            Set rng = Intersect(wsh.UsedRange, wsh.[A:A])
60            For Each cell In rng.Cells
70                cell.Value = Trim(Join(.Index(wsh.Range(cell, cell.Offset(, _
                       2)).Value, 1, 0), " "))
80            Next
90            wsh.[B:C].EntireColumn.Delete: rng.EntireColumn.AutoFit
100 err:      If err.Number Then
110               MsgBox "Ошибка " & err.Number & " (" & err.Description & _
                       ") в процедуре JoinVal модуля Module1 на строке " & Erl
120           End If
130           .ScreenUpdating = 1: .EnableEvents = 1
140       End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 13.10.2014 в 20:49
krosav4ig Дата: Понедельник, 13.10.2014, 13:46 | Сообщение № 2113 | Тема: Сделать книгу поверх остальных окон И оставить активной
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
с помощью VBA можно книгу сделать поверх всех окон, но в вашем случае это вряд ли поможет если ваш СКД постоянно забирает фокус.
в книге наведите курсор на C1 чтобы сделать поверх всех окон, на A1 чтобы сделать не поверх всех окон
К сообщению приложен файл: qwe.xls (36.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 13.10.2014, 13:47
 
Ответить
Сообщениес помощью VBA можно книгу сделать поверх всех окон, но в вашем случае это вряд ли поможет если ваш СКД постоянно забирает фокус.
в книге наведите курсор на C1 чтобы сделать поверх всех окон, на A1 чтобы сделать не поверх всех окон

Автор - krosav4ig
Дата добавления - 13.10.2014 в 13:46
krosav4ig Дата: Понедельник, 13.10.2014, 04:17 | Сообщение № 2114 | Тема: ведомость для начисления заработной платы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Как-то так



upd.
заменил файл
К сообщению приложен файл: 9238488.xlsx (9.4 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 13.10.2014, 14:01
 
Ответить
СообщениеКак-то так



upd.
заменил файл

Автор - krosav4ig
Дата добавления - 13.10.2014 в 04:17
krosav4ig Дата: Воскресенье, 12.10.2014, 00:59 | Сообщение № 2115 | Тема: Run-time error 91 При работе с UserForm
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
это конечно не панацея, но вроде как проблему решает
в CommandButton2_Click() userform1
вместо
[vba]
Код
UserForm1.Hide
[/vba]
[vba]
Код
UserForm1.Move -999
[/vba]
в FormStart
вместо
[vba]
Код
code = code & "UserForm1.Show" & vbCr
[/vba]
[vba]
Код
code = code & "UserForm1.Left = Application.Left + (0.5 * Application.Width) - (0.5 * UserForm1.Width)" & vbCr
[/vba]
после
[vba]
Код
code = code & "Worksheets(1).Cells(1, 1) = NameIzd" & vbCr
code = code & "Unload Me" & vbCr
[/vba]
[vba]
Код
code = code & "unload UserForm1" & vbCr
[/vba]
К сообщению приложен файл: 9355785.xlsm (37.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 12.10.2014, 01:01
 
Ответить
Сообщениеэто конечно не панацея, но вроде как проблему решает
в CommandButton2_Click() userform1
вместо
[vba]
Код
UserForm1.Hide
[/vba]
[vba]
Код
UserForm1.Move -999
[/vba]
в FormStart
вместо
[vba]
Код
code = code & "UserForm1.Show" & vbCr
[/vba]
[vba]
Код
code = code & "UserForm1.Left = Application.Left + (0.5 * Application.Width) - (0.5 * UserForm1.Width)" & vbCr
[/vba]
после
[vba]
Код
code = code & "Worksheets(1).Cells(1, 1) = NameIzd" & vbCr
code = code & "Unload Me" & vbCr
[/vba]
[vba]
Код
code = code & "unload UserForm1" & vbCr
[/vba]

Автор - krosav4ig
Дата добавления - 12.10.2014 в 00:59
krosav4ig Дата: Суббота, 11.10.2014, 19:06 | Сообщение № 2116 | Тема: Получение котировок на драгметаллы с сайта ЦБ РФ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
нарисовал еще одну функцию. возвращает текущую цену на драгметалл с главной страницы ЦБР
для работы необходимо подключить Microsoft HTML Object Library
[vba]
Код
Private Declare Function DeleteUrlCacheEntry& Lib "wininet" (ByVal lpszUrlName$)
Function МетЦБР2#(code)
      Application.Volatile False
      Dim oHTML As HTMLDocument, oDoc As HTMLDocument, elem As HTMLBaseElement, url$, n%, str$:
      Set oHTML = New HTMLDocument
      url = "http://www.cbr.ru/"
      DeleteUrlCacheEntry (url)
      Set oDoc = oHTML.createDocumentFromUrl(url, "")
      Do
          DoEvents
      Loop Until oDoc.readyState = "complete"
      oHTML.body.innerHTML = oDoc.getElementById("widget_metal").innerHTML
      Set oDoc = Nothing
      n = InStr(1, "_auagptpg", LCase(code)) / 2 - 1 + Val(code)
      Set elem = oHTML.getElementsByTagName("span")(n)
      МетЦБР2 = CDbl(elem.innerText)
      'With Application.Caller
      '    If Not .Comment Is Nothing Then .Comment.Delete
      '    str = oHTML.getElementsByTagName("ins")(n).ParentNode.innerText
      '    str = str & CStr(CDate(Mid(Replace(oHTML.LastModified, "/", "/" & Left(oHTML.LastModified, 3)), 7, 10)))
      '    .AddComment str & Right(oHTML.LastModified, 9)
      'End With
      Set elem = Nothing
      Set oHTML = Nothing
End Function
[/vba]
закомментированные строки кода добавляют в ячейку примечание с названием металла, его буквенным кодом, датой и временем
code - числовой или буквенный код металла: золото - 1 или "au", серебро - 2 или "ag", платина -3 или "pt", палладий - 4 или "pd"
К сообщению приложен файл: 3582330.xls (38.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Суббота, 11.10.2014, 19:23
 
Ответить
Сообщениенарисовал еще одну функцию. возвращает текущую цену на драгметалл с главной страницы ЦБР
для работы необходимо подключить Microsoft HTML Object Library
[vba]
Код
Private Declare Function DeleteUrlCacheEntry& Lib "wininet" (ByVal lpszUrlName$)
Function МетЦБР2#(code)
      Application.Volatile False
      Dim oHTML As HTMLDocument, oDoc As HTMLDocument, elem As HTMLBaseElement, url$, n%, str$:
      Set oHTML = New HTMLDocument
      url = "http://www.cbr.ru/"
      DeleteUrlCacheEntry (url)
      Set oDoc = oHTML.createDocumentFromUrl(url, "")
      Do
          DoEvents
      Loop Until oDoc.readyState = "complete"
      oHTML.body.innerHTML = oDoc.getElementById("widget_metal").innerHTML
      Set oDoc = Nothing
      n = InStr(1, "_auagptpg", LCase(code)) / 2 - 1 + Val(code)
      Set elem = oHTML.getElementsByTagName("span")(n)
      МетЦБР2 = CDbl(elem.innerText)
      'With Application.Caller
      '    If Not .Comment Is Nothing Then .Comment.Delete
      '    str = oHTML.getElementsByTagName("ins")(n).ParentNode.innerText
      '    str = str & CStr(CDate(Mid(Replace(oHTML.LastModified, "/", "/" & Left(oHTML.LastModified, 3)), 7, 10)))
      '    .AddComment str & Right(oHTML.LastModified, 9)
      'End With
      Set elem = Nothing
      Set oHTML = Nothing
End Function
[/vba]
закомментированные строки кода добавляют в ячейку примечание с названием металла, его буквенным кодом, датой и временем
code - числовой или буквенный код металла: золото - 1 или "au", серебро - 2 или "ag", платина -3 или "pt", палладий - 4 или "pd"

Автор - krosav4ig
Дата добавления - 11.10.2014 в 19:06
krosav4ig Дата: Пятница, 10.10.2014, 12:57 | Сообщение № 2117 | Тема: Получение котировок на драгметаллы с сайта ЦБ РФ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
UltrasRW, зачем бегать циклом по элементам, когда есть XPath и нужный элемент можно выбрать одним запросом, и дату ЦБР вполне себе понимает в формате ДД.ММ.ГГГГ
forest1333, собственно вот мой вариант функции
[vba]
Код
Function МетЦБР#(Optional Code% = 2, Optional dDate As Date, Optional sell% = 0)
       Dim d As Object: Set d = CreateObject("msxml.DOMDocument")
       dDate = IIf(dDate, dDate, Date): d.async = 0
       d.Load ("http://www.cbr.ru/scripts/xml_metall.asp?date_req1=" & dDate & "&date_req2=" & dDate)
       МетЦБР = CDbl(d.SelectSingleNode("*/Record[@Code='" & Code & "']").ChildNodes(Abs(sell)).Text)
       Set d = Nothing
End Function
[/vba]
у функции 3 необязательных атрибута
Первый: Код металла (1-золото,2-серебро,3-платина,4-палладий), если параметр не указан, то по умолчанию берется 2
Второй: дата в текстовом формате или ссылка на ячейку с датой в числовом формате. если параметр не указан, то по умолчанию берется текущая СИСТЕМНАЯ дата (дата, установленная в компьютере, может не совпадать с фактической) в качестве разделителей между числами дня, месяца и года может использоваться любой символ из " " , "/" , "." , "-" , "," , запись даты в формате "1 янв 14" и "1 января 2014" тоже корректно распознаются
По моему курсы на покупку и продажу у ЦБР одинаковые, но на всякий случай сделал третий атрибут: тип курса банка- 0-покупка, 1-продажа, если параметр не указан, то по умолчанию берется 0
формула
Код
=МетЦБР()
вернет текущий курс банка на покупку серебра.
К сообщению приложен файл: 4807263.xls (34.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Пятница, 10.10.2014, 13:11
 
Ответить
СообщениеUltrasRW, зачем бегать циклом по элементам, когда есть XPath и нужный элемент можно выбрать одним запросом, и дату ЦБР вполне себе понимает в формате ДД.ММ.ГГГГ
forest1333, собственно вот мой вариант функции
[vba]
Код
Function МетЦБР#(Optional Code% = 2, Optional dDate As Date, Optional sell% = 0)
       Dim d As Object: Set d = CreateObject("msxml.DOMDocument")
       dDate = IIf(dDate, dDate, Date): d.async = 0
       d.Load ("http://www.cbr.ru/scripts/xml_metall.asp?date_req1=" & dDate & "&date_req2=" & dDate)
       МетЦБР = CDbl(d.SelectSingleNode("*/Record[@Code='" & Code & "']").ChildNodes(Abs(sell)).Text)
       Set d = Nothing
End Function
[/vba]
у функции 3 необязательных атрибута
Первый: Код металла (1-золото,2-серебро,3-платина,4-палладий), если параметр не указан, то по умолчанию берется 2
Второй: дата в текстовом формате или ссылка на ячейку с датой в числовом формате. если параметр не указан, то по умолчанию берется текущая СИСТЕМНАЯ дата (дата, установленная в компьютере, может не совпадать с фактической) в качестве разделителей между числами дня, месяца и года может использоваться любой символ из " " , "/" , "." , "-" , "," , запись даты в формате "1 янв 14" и "1 января 2014" тоже корректно распознаются
По моему курсы на покупку и продажу у ЦБР одинаковые, но на всякий случай сделал третий атрибут: тип курса банка- 0-покупка, 1-продажа, если параметр не указан, то по умолчанию берется 0
формула
Код
=МетЦБР()
вернет текущий курс банка на покупку серебра.

Автор - krosav4ig
Дата добавления - 10.10.2014 в 12:57
krosav4ig Дата: Среда, 08.10.2014, 22:49 | Сообщение № 2118 | Тема: Данные с сайта ЕЦБ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
совсем забыл, нужно подключить библиотеку msxml. В редакторе VBA tools->references-> отметить галочкой Microsoft XML любой версии->OK


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 08.10.2014, 22:50
 
Ответить
Сообщениесовсем забыл, нужно подключить библиотеку msxml. В редакторе VBA tools->references-> отметить галочкой Microsoft XML любой версии->OK

Автор - krosav4ig
Дата добавления - 08.10.2014 в 22:49
krosav4ig Дата: Среда, 08.10.2014, 17:05 | Сообщение № 2119 | Тема: Данные с сайта ЕЦБ
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
в модуль код [vba]
Код
Function ЕЦБ#(ByVal Curr$)
     Dim d As New DOMDocument
     Set d = New DOMDocument
     d.async = 0: d.Load ("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml")
     ЕЦБ = Val(d.SelectSingleNode("//Cube[@currency='" & UCase(Curr) & "']").Attributes(1).Text)
     Set d = Nothing
End Function
[/vba]в ячейку формулу
Код
=ЕЦБ("NZD")


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 08.10.2014, 17:07
 
Ответить
Сообщениев модуль код [vba]
Код
Function ЕЦБ#(ByVal Curr$)
     Dim d As New DOMDocument
     Set d = New DOMDocument
     d.async = 0: d.Load ("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml")
     ЕЦБ = Val(d.SelectSingleNode("//Cube[@currency='" & UCase(Curr) & "']").Attributes(1).Text)
     Set d = Nothing
End Function
[/vba]в ячейку формулу
Код
=ЕЦБ("NZD")

Автор - krosav4ig
Дата добавления - 08.10.2014 в 17:05
krosav4ig Дата: Среда, 08.10.2014, 05:17 | Сообщение № 2120 | Тема: спортивная таблица
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а можно еще установить формат ячеек общий и переписать некоторые формулы, и будет все пучком :)
для AJ3
Код
=ЕСЛИ(AJ2+AL2;1+(AJ2>AL2);"")
К сообщению приложен файл: 6964848.xlsx (27.2 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеа можно еще установить формат ячеек общий и переписать некоторые формулы, и будет все пучком :)
для AJ3
Код
=ЕСЛИ(AJ2+AL2;1+(AJ2>AL2);"")

Автор - krosav4ig
Дата добавления - 08.10.2014 в 05:17
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!