[/vba] в notepad++ установлены плагины Xml tools и xpatherizer 1 Открыл файл в 7zip, перешел в нем в папку \xl 2 Открыл workbok.xml в notepad++ (выделил файл, нажал F4), в открывшемся фале жму Ctrl+Alt+Shift+B и ищу лист с нужным именем, смотрю атрибут r:id Можно без Ctrl+Alt+Shift+B, искать через xpatherizer: нажал Ctrl+Shift+X, в поле XPath Search пишу [vba]
Код
//sheet//@name
[/vba] жму Execute и в панели Xpath Results выбираю нужный элемент. rId узнали, этот файл уже не нужен, его можно закрывать 3 открыл xl\_rels\workbook.xml.rels 4 Тут так же, как в предыдущем файле можно нажать Ctrl+Alt+Shift+B и искать Relationship с id = rid из предыдущего файла или через xpatherizer искать по xpath
Код
//*[@Id="rId1"]/@Target
, или вообще через Ctrl+F, не суть важно, нам нужен атрибут Target. Этот фал тоже можно закрывать 5 Открыл файл, соответствующий найденному значению в п.4 (в данном случае xl\worksheets\sheet1.xml). 6 Нажал Ctrl+Alt+Shift+B , Ctrl+Shift+X, в поле XPath Search пишу [vba]
Код
//conditionalFormatting//*[text()="F$21=1"]
[/vba] жму Execute и в панели Xpath Results выбираю нужный элемент. В строке выше выделившейся смотрю атрибут dxfId , из этого числа нужно вычесть 1, в данном случае получилось 85 7 Открыл xl\styles.xml, Нажал Ctrl+Alt+Shift+B , Ctrl+Shift+X, в поле XPath Search пишу [vba]
Код
//dxf[85]
[/vba] жму Execute и в панели Xpath Results выбираю нужный элемент. В выделившемся элементе заменил thin на thick, сохранил файл и закрыл Notepad++, вернулся в 7Zip, согласился на обновление файла в архиве
У меня в качестве редактора в 7zip настроен notepad++ x86, строка для запуска - [vba]
[/vba] в notepad++ установлены плагины Xml tools и xpatherizer 1 Открыл файл в 7zip, перешел в нем в папку \xl 2 Открыл workbok.xml в notepad++ (выделил файл, нажал F4), в открывшемся фале жму Ctrl+Alt+Shift+B и ищу лист с нужным именем, смотрю атрибут r:id Можно без Ctrl+Alt+Shift+B, искать через xpatherizer: нажал Ctrl+Shift+X, в поле XPath Search пишу [vba]
Код
//sheet//@name
[/vba] жму Execute и в панели Xpath Results выбираю нужный элемент. rId узнали, этот файл уже не нужен, его можно закрывать 3 открыл xl\_rels\workbook.xml.rels 4 Тут так же, как в предыдущем файле можно нажать Ctrl+Alt+Shift+B и искать Relationship с id = rid из предыдущего файла или через xpatherizer искать по xpath
Код
//*[@Id="rId1"]/@Target
, или вообще через Ctrl+F, не суть важно, нам нужен атрибут Target. Этот фал тоже можно закрывать 5 Открыл файл, соответствующий найденному значению в п.4 (в данном случае xl\worksheets\sheet1.xml). 6 Нажал Ctrl+Alt+Shift+B , Ctrl+Shift+X, в поле XPath Search пишу [vba]
Код
//conditionalFormatting//*[text()="F$21=1"]
[/vba] жму Execute и в панели Xpath Results выбираю нужный элемент. В строке выше выделившейся смотрю атрибут dxfId , из этого числа нужно вычесть 1, в данном случае получилось 85 7 Открыл xl\styles.xml, Нажал Ctrl+Alt+Shift+B , Ctrl+Shift+X, в поле XPath Search пишу [vba]
Код
//dxf[85]
[/vba] жму Execute и в панели Xpath Results выбираю нужный элемент. В выделившемся элементе заменил thin на thick, сохранил файл и закрыл Notepad++, вернулся в 7Zip, согласился на обновление файла в архиве
let Source = List.Buffer(List.Transform(Table.ToColumns(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content]),List.RemoveNulls)), fn = (n,k,optional i, optional j)=> let i = if i=null then 0 else i, j = if j=null then 0 else j, tbl = Table.FromRecords( List.TransformMany( {i..n-k+j}, each Source{_}, (a,b)=>[x=b]&(if j<k-1 then [y=@fn(n,k,a+1,j+1)] else []) ) ) in if j<k-1 then Table.ExpandTableColumn( tbl, "y", {"x"}&List.Transform({j+1..k-2}, each "x"&Text.From(_+1)), List.Transform({j+1..k-1}, each "x"&Text.From(_)) ) else tbl, ret = fn(List.Count(Source),4) in ret
let Source = List.Buffer(List.Transform(Table.ToColumns(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content]),List.RemoveNulls)), fn = (n,k,optional i, optional j)=> let i = if i=null then 0 else i, j = if j=null then 0 else j, tbl = Table.FromRecords( List.TransformMany( {i..n-k+j}, each Source{_}, (a,b)=>[x=b]&(if j<k-1 then [y=@fn(n,k,a+1,j+1)] else []) ) ) in if j<k-1 then Table.ExpandTableColumn( tbl, "y", {"x"}&List.Transform({j+1..k-2}, each "x"&Text.From(_+1)), List.Transform({j+1..k-1}, each "x"&Text.From(_)) ) else tbl, ret = fn(List.Count(Source),4) in ret
=Transpose(Query(ARRAYFORMULA(iferror(--substitute(REGEXREPLACE(IMPORTHTML("http://www.pogodaiklimat.ru/forecast/28698_7.htm","table",0)&"","(\d+)(\.)(\d+)\x0a.*$","$3/$1/"&year(now())),"+",""),)),"select Col1, Min(Col4),Max(Col4),Avg(Col4),Avg(Col7) group by Col1 label Col1 'Дата',Min(Col4) 'Минимальная температура', Avg(Col4) 'Средняя температура',Max(Col4) 'Максимальная температура',Avg(Col7) 'Среднее количество осадков' format Col1'dd.MM.YYYY'"))
[/vba] [vba]
Код
=ArrayFormula(Transpose(Query(ArrayFormula({Arrayformula(CEILING((Row(A1:Index(A:A,Rows(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3 ))))-1)/4,1)),iferror(--REGEXREPLACE(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3)&"","(\d{2})(\/)(\d{2})\/(\d{4})|[^\d\/:.]|.*\–","$3$2$1$2$4"),)}),"Select max(Col2),Min(Col5),Max(Col5),Avg(Col5),Avg(Col6) where Col1>0 group by Col1 label Max(Col2) 'Дата',Min(Col5) 'Минимальная температура', Avg(Col5) 'Средняя температура',Max(Col5) 'Максимальная температура', Avg(Col6) 'Среднее количество осадков' format Max(Col2) 'dd.MM.YYYY'")))
[/vba] [vba]
Код
=Transpose(Query(ArrayFormula({Int((Row(1:20)-1)/4)+Today(),(Array_Constrain(Split(Importxml("https://rp5.ru/Погода_в_Омске","(((//table[@id='forecastTable'])[1]/tr[.//*[contains(text(),'Температура')]]/td[starts-with(@class,'n ')])[1]/preceding-sibling::td)[last()]/following-sibling::td/div[@class='t_0']"),"+"),20,1))}),"Select Col1,Min(Col2),Max(Col2),Avg(Col2) group by Col1 label Col1 'Дата',Min(Col2) 'Минимальная температура', Avg(Col2) 'Средняя температура',Max(Col2) 'Максимальная температура' format Col1 'dd.MM.YYYY'"))
[/vba]
[vba]
Код
=Transpose(Query(ARRAYFORMULA(iferror(--substitute(REGEXREPLACE(IMPORTHTML("http://www.pogodaiklimat.ru/forecast/28698_7.htm","table",0)&"","(\d+)(\.)(\d+)\x0a.*$","$3/$1/"&year(now())),"+",""),)),"select Col1, Min(Col4),Max(Col4),Avg(Col4),Avg(Col7) group by Col1 label Col1 'Дата',Min(Col4) 'Минимальная температура', Avg(Col4) 'Средняя температура',Max(Col4) 'Максимальная температура',Avg(Col7) 'Среднее количество осадков' format Col1'dd.MM.YYYY'"))
[/vba] [vba]
Код
=ArrayFormula(Transpose(Query(ArrayFormula({Arrayformula(CEILING((Row(A1:Index(A:A,Rows(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3 ))))-1)/4,1)),iferror(--REGEXREPLACE(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3)&"","(\d{2})(\/)(\d{2})\/(\d{4})|[^\d\/:.]|.*\–","$3$2$1$2$4"),)}),"Select max(Col2),Min(Col5),Max(Col5),Avg(Col5),Avg(Col6) where Col1>0 group by Col1 label Max(Col2) 'Дата',Min(Col5) 'Минимальная температура', Avg(Col5) 'Средняя температура',Max(Col5) 'Максимальная температура', Avg(Col6) 'Среднее количество осадков' format Max(Col2) 'dd.MM.YYYY'")))
[/vba] [vba]
Код
=Transpose(Query(ArrayFormula({Int((Row(1:20)-1)/4)+Today(),(Array_Constrain(Split(Importxml("https://rp5.ru/Погода_в_Омске","(((//table[@id='forecastTable'])[1]/tr[.//*[contains(text(),'Температура')]]/td[starts-with(@class,'n ')])[1]/preceding-sibling::td)[last()]/following-sibling::td/div[@class='t_0']"),"+"),20,1))}),"Select Col1,Min(Col2),Max(Col2),Avg(Col2) group by Col1 label Col1 'Дата',Min(Col2) 'Минимальная температура', Avg(Col2) 'Средняя температура',Max(Col2) 'Максимальная температура' format Col1 'dd.MM.YYYY'"))
Function ПримечаниеТекст(Ячейка As Range, Текст As String) On Error Resume Next Ячейка.AddComment.Visible = False Ячейка.Comment.Text Текст End Function
[/vba]
Здравствуйте [vba]
Код
Function ПримечаниеТекст(Ячейка As Range, Текст As String) On Error Resume Next Ячейка.AddComment.Visible = False Ячейка.Comment.Text Текст End Function
Макросы в модулях листов и книги игнорируются, импортируются только стандартные модули, модули классов и модули форм Alt+ЕМБ нужно убедиться, что установлена галочка "Доверять доступ к программной модели VBA" При импорте модулей в VSCode они удаляются из файла. Чтобы вернуть их обратно нужно сохранить любой из импортированных модулей в VSCode. Или заполучить от разработчика пароль от vba проекта файла autoload.xlsm, лежащего в %homepath%\.vscode\extensions\local-smart.excel-live-server-1.0.0\excel-live-server и закомментировать удаление модулей. Контакты для связи с разработчиком можно посмотреть в VSCode в информации о расширении (Ctrl+Shit+X)
Макросы в модулях листов и книги игнорируются, импортируются только стандартные модули, модули классов и модули форм Alt+ЕМБ нужно убедиться, что установлена галочка "Доверять доступ к программной модели VBA" При импорте модулей в VSCode они удаляются из файла. Чтобы вернуть их обратно нужно сохранить любой из импортированных модулей в VSCode. Или заполучить от разработчика пароль от vba проекта файла autoload.xlsm, лежащего в %homepath%\.vscode\extensions\local-smart.excel-live-server-1.0.0\excel-live-server и закомментировать удаление модулей. Контакты для связи с разработчиком можно посмотреть в VSCode в информации о расширении (Ctrl+Shit+X)krosav4ig
Здравствуйте Расширение Excel Live Server for VBA для VSCode после установки нужно создать папку tmp\vba в папке расширения (%homepath%\.vscode\extensions\local-smart.excel-live-server-1.0.0\)
upd. Если достаточно редактирования кода без запуска макросов, то можно использовать Text Edit Anywhere
Здравствуйте Расширение Excel Live Server for VBA для VSCode после установки нужно создать папку tmp\vba в папке расширения (%homepath%\.vscode\extensions\local-smart.excel-live-server-1.0.0\)
upd. Если достаточно редактирования кода без запуска макросов, то можно использовать Text Edit Anywherekrosav4ig