У меня есть макрос Excel для анализа данных, извлеченных с веб-страницы. Я изучаю качество воды и запускаю сеть мониторинга. На этих объектах у меня есть автоматические пробоотборники воды, которые срабатывают во время штормов.Переработка существующего макроса в цикл for
Я использую этот макрос для вывода дескриптивных данных с нашего сайта. Он был первоначально настроен статически, создавая новый лист для каждого сайта (всего 9 сайтов), а код длинный и повторяющийся. Я хочу переписать его, используя цикл for, чтобы иметь относительно небольшой объем кода, который выполняется для каждого сайта, и возвращает ту же информацию в том же формате, который у меня уже установлен.
Существует несколько частей оригинального сценария, которые по существу жестко закодированы для каждого сайта, поскольку они имеют имя и номер сайта.
- Я хочу, чтобы номера и имена сайтов заменялись новым, каждый раз, когда цикл for проходит.
У меня есть веб-URL в коде, что одинаково для каждого сайта, за исключением номера сайта в конце.
- Как я могу сохранить это как URL-адрес, но заменять номер сайта во время каждой итерации цикла?
- Как определить свой список номеров и имен сайтов?
Старый макрос начинается с создания листа («sheet1»). Select ... и затем пробегает остальную часть кода. Следующий сайт жестко, как лист («Лист2»). Выберите и т.д.
- Я полагаю, мне нужно будет повторить это так, каждая итерация цикла создает следующий нумерованный лист в последовательности.
Ниже приведен пример кода, я работаю с:
Workbooks.Add
Worksheets.Add().Name = "Rivers Ridge Summary"
Worksheets.Add().Name = "Sheppard Data"
Worksheets.Add().Name = "Sheppard Summary"
Worksheets.Add().Name = "Lucas Creek Data"
Worksheets.Add().Name = "Lucas Creek Summary"
Worksheets.Add().Name = "Ramsgate Data"
Worksheets.Add().Name = "Ramsgate Summary"
Worksheets.Add().Name = "Professional Place Data"
Worksheets.Add().Name = "Professional Place Summary"
Sheets("Sheet1").Select
Sheets("Sheet1").Name = "Rivers Ridge Data"
Sheets("Rivers Ridge Data").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://waterdata.usgs.gov/va/nwis/uv?cb_72199=on&cb_63680=on&cb_99234=on&format=rdb&period=1&site_no=0204279245" _
, Destination:=Range("$A$1"))
.Name = _
"uv?cb_72199=on&cb_63680=on&cb_99234=on&format=rdb&period=1&site_no=0204279245"
... и т.д.. и т.д .. все остальное код здесь .. а затем на следующий сайт
Sheets("Sheppard Data").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://waterdata.usgs.gov/va/nwis/uv?cb_72199=on&cb_63680=on&cb_99234=on&format=rdb&period=1&site_no=0204289989" _
, Destination:=Range("$A$1"))
.Name = _
"uv?cb_72199=on&cb_63680=on&cb_99234=on&format=rdb&period=1&site_no=0204289989"
..followed всеми кода ... и так далее для каждого сайта ..
«реки Ridge Data "- это один сайт (Шеппард - другой), а« 0204279245 »- номер сайта. Я хочу, чтобы они переключались во время каждой итерации цикла.
Обратите внимание, если вам нужна дополнительная информация или образец того, над чем я работаю.
пожалуйста, вы можете разделить его на несколько пункта вместо одного? – manetsus
Вам нужно показать код, с которым вам нужна помощь. – Davesexcel
Вы можете запустить 'Для каждой петли' следующим образом:' Для каждого xSht In Sheets (Array («Sheet1», «Sheet2», ...)), тогда вы можете использовать 'xSht' в качестве замены для' листов («sheet ***») 'like' Sheets («Sheet ***»). Select' становится 'xSht.Select';) –