Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2009, 23:53   #1
Legame
Пользователь
 
Регистрация: 03.02.2008
Сообщений: 32
По умолчанию макрос обновления данных из интернета

добрый вечер,

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

Необходимо реализовать макрос обновления курсов валют(доллар США, евро) при открытии книги в определенную ячейку выбранную изначально на главном листе. а также помимо этого дополнительная кнопка - по результатам действий которой будет обновлен курс валют.

прикладываю файл:
rates.xls
в файле постарался максимально возможно описать требуемую реализацию...

если не трудно - помогите, плиз!!!
Вложения
Тип файла: rar rates.rar (2.5 Кб, 58 просмотров)
Legame вне форума Ответить с цитированием
Старый 16.02.2009, 08:15   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение.
Вложения
Тип файла: rar rates_2.rar (9.3 Кб, 113 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 16.02.2009, 10:44   #3
Legame
Пользователь
 
Регистрация: 03.02.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Посмотрите вложение.

SAS, добрый день
спасибо Вам за рещение этой задачи.


есть еще маленькие просьбы, поможете?
1. вы не могли бы объяснить действие этого набора функций и параметров
Sheets("rates").[B3] = CDbl(Split([F3], " ")(0)): Sheets("rates").[B4] = CDbl(Split([F5], " ")(0))

2. каким образом и где найти форму кнопки (в редакторе она почему не отображается)

3. при попытке обновить курсы - если отсутствует подключение к интернету, то выводить соответствующее сообщение об этом

Последний раз редактировалось Legame; 16.02.2009 в 10:51.
Legame вне форума Ответить с цитированием
Старый 16.02.2009, 11:36   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. При создании Web-запроса, создается временный новый лист, в который вставляются требуемые данные. После этой процедуры, в ячейке "F3" этого листа, получим значение курса доллара. В этой же ячейке, через пробел будет (может) присутствовать слово "down" или "up" и еще через один пробел цифра - на сколько упал (поднялся) доллар. Строка кода
Код:
Sheets("rates").[B3] = CDbl(Split([F3], " ")(0))
означает: в ячейку "B3" листа "rates" поместить преобразованное в тип "Double" значение первого (по умолчанию нулевого) элемента массива, полученного из значения ячейки "F3" активного (в данном случае - временно созданного) листа, где каждый элемент массива - фрагмент текста, разделенного пробелом. Т.е. фрагмент текста ячейки "F3" до первого пробела. Аналогично для евро: ячейки "B4" листа "rates" и "F5" временного листа.
2. В приложении используется элемент управления "Кнопка" из панели инструментов "Элементы управления". Откройте эту панель, войдите в "Режим конструктора" и получите доступ к свойствам этого элемента (это в Excel 2003).
3. Ваше пожелание
Цитата:
при попытке обновить курсы - если отсутствует подключение к интернету, то выводить соответствующее сообщение об этом
реализовано в следующем вложении.
Вложения
Тип файла: rar rates_3.rar (11.4 Кб, 114 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 16.02.2009, 14:30   #5
Legame
Пользователь
 
Регистрация: 03.02.2008
Сообщений: 32
По умолчанию спасибо

Огромное спасибо Вам, SSAS888 !!!
Legame вне форума Ответить с цитированием
Старый 17.06.2009, 12:42   #6
yuretsnsk
 
Регистрация: 15.06.2009
Сообщений: 5
По умолчанию

а сложно ли будет написать макрос для обновления курса в зависимости от даты?
т.е. в одной ячейке вручную ставится дата, а в двух других курсы на эту дату (доллар и евро)
yuretsnsk вне форума Ответить с цитированием
Старый 19.06.2009, 06:47   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении.
Вложения
Тип файла: rar rates_date.rar (9.0 Кб, 106 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.06.2009, 12:19   #8
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Я и не знал о таких возможностях Excel !!!
Попробовал применить к своей задаче - ничего не получилось. Создается новый лист, но пустой. Подскажите как сделать.
Для примера выкладываю часть исходных данных, которые я получаю в сети и часть своей сводной таблицы.
Необходимо из п.1 скопировать значение "Показаний" в F4, F5, F6 (взависимости от времени), из п.3 - в F8, F9, F10 и т.д.
Вложения
Тип файла: rar расчет.rar (34.7 Кб, 28 просмотров)
hamlook вне форума Ответить с цитированием
Старый 22.06.2009, 11:55   #9
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Ну все таки у меня что то получилось...
Возникло две проблемы:
1. Когда создается временный лист, ему дается имя "Лист1". Я действие макроса прописал относительно этого имени. Но если запустить макрос заново - создается "Лист2" и выходит ошибка. Приходится перезапускать файл.
Где нужно прописать создание временного листа с определенным именем?
2. При закрытии файла выходит сообщение такого рода

Как от него избавится? Безопасность стоит на низком уровне.
Изображения
Тип файла: jpg Безымянный.jpg (11.7 Кб, 272 просмотров)
hamlook вне форума Ответить с цитированием
Старый 23.06.2009, 05:41   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Где нужно прописать создание временного листа с определенным именем?
Создать новый лист и присвоить ему имя можно так:
Код:
Sheets.Add.Name = "Имя_листа"
Но тогда нужно либо проверять, не существует ли уже лист с этим именем, либо, т.к. лист временный, то перед созданием листа, можно безусловно его удалять, при этом отключив обработчик ошибок (на случай, если лист не существует) и всплывающие предупреждения Excel. Т.е. так:
Код:
Application.DisplayAlerts = False
On Error Resume Next: Sheets("Имя_листа").Delete: On Error GoTo 0
Sheets.Add.Name = "Имя_листа"
Но я считаю, что это все ни к чему. Т.к. вновь созданный лист всегда становится активным, то имя можно не задавать, а обращаться к созданному листу как ActiveSheet. При этом, необходимо следить за тем, чтобы в процедуре не происходило активации другого листа.

Цитата:
При закрытии файла выходит сообщение такого рода...
Как от него избавится? Безопасность стоит на низком уровне.
В "Сервис - Параметры - Безопасность" снимите флажок опции "Удалять личные сведения из свойств файла при сохранении". А так же, на всякий случай, первой строкой кода вставьте "Application.DisplayAlerts = False".
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
импорт данных из интернета peq Microsoft Office Excel 7 30.04.2010 09:12
Помогите плиз правильно написать макрос обновления данных из разных файлов Legame Microsoft Office Excel 10 10.09.2009 10:39
Импорт данных с интернета в таблицу Ренатик Microsoft Office Access 0 20.05.2009 02:03
Импорт данных с интернета в Accesse Ренатик Помощь студентам 0 03.05.2009 22:50
Макрос для обновления формул вручную только в одном листе Neo007 Microsoft Office Excel 7 26.09.2008 18:17