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

Вход

Регистрация

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

 

= Мир MS Excel/Сохранение Веб-страницы - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Сохранение Веб-страницы
Abraham Дата: Пятница, 30.12.2016, 10:26 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Доброго времени суток!

Вопрос следующего плана, возможно кто то сталкивался с подобной ситуацией.

Есть 100 листов в документе формата xlsx. В каждом листе выбран определенный диапазон. Задача: сохранить каждый выбранный диапазон в каждом листе в отдельный документ Веб-страницы (проще говорю html код для заказчика). Сделать это можно выделяя каждый лист по отдельности, выбирая необходимый диапазон и сохранять. Но это очень долго, так как листов очень много. Возможно ли как нибудь одной командой сохранить каждый диапазон на каждом листе в отдельный файл блокнота с html-кодом? Единственное что я понял, можно сохранить все листы в один файл, объединив их. Но этот вариант не подходит.

Если кто нибудь знает как это технически можно провернуть буду очень признателен. И вообще возможно ли это?
 
Ответить
СообщениеДоброго времени суток!

Вопрос следующего плана, возможно кто то сталкивался с подобной ситуацией.

Есть 100 листов в документе формата xlsx. В каждом листе выбран определенный диапазон. Задача: сохранить каждый выбранный диапазон в каждом листе в отдельный документ Веб-страницы (проще говорю html код для заказчика). Сделать это можно выделяя каждый лист по отдельности, выбирая необходимый диапазон и сохранять. Но это очень долго, так как листов очень много. Возможно ли как нибудь одной командой сохранить каждый диапазон на каждом листе в отдельный файл блокнота с html-кодом? Единственное что я понял, можно сохранить все листы в один файл, объединив их. Но этот вариант не подходит.

Если кто нибудь знает как это технически можно провернуть буду очень признателен. И вообще возможно ли это?

Автор - Abraham
Дата добавления - 30.12.2016 в 10:26
bmv98rus Дата: Пятница, 30.12.2016, 11:05 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Abraham,

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


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеAbraham,

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

Автор - bmv98rus
Дата добавления - 30.12.2016 в 11:05
Abraham Дата: Пятница, 30.12.2016, 11:11 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
bmv98rus, да я понял, что через обычные команды это нереально. Проблема в том что я вовсе не соображаю в программировании, возможно кто то сталкивался с ситуацией и знает как писать код...
 
Ответить
Сообщениеbmv98rus, да я понял, что через обычные команды это нереально. Проблема в том что я вовсе не соображаю в программировании, возможно кто то сталкивался с ситуацией и знает как писать код...

Автор - Abraham
Дата добавления - 30.12.2016 в 11:11
bmv98rus Дата: Пятница, 30.12.2016, 11:22 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Abraham,
Не поверите, тут таких не мало, вопрос интересно им писать или нет. Так как окончательное решение не укладывается в совет "как сделать" , и требует разработки и методики работы (какие листы обрабатывать, что если не выделен диапазон ... куда сохранть и как именовать, как часто это надо делать и делать ли именно в Excel) и обрамления всего этого дополнительными провtрками и данными, то лучше обратится в ветку Работа/Фриланс. Непосредственно само сохранение одного листа- это менее 10 строк.

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


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Пятница, 30.12.2016, 11:29
 
Ответить
СообщениеAbraham,
Не поверите, тут таких не мало, вопрос интересно им писать или нет. Так как окончательное решение не укладывается в совет "как сделать" , и требует разработки и методики работы (какие листы обрабатывать, что если не выделен диапазон ... куда сохранть и как именовать, как часто это надо делать и делать ли именно в Excel) и обрамления всего этого дополнительными провtрками и данными, то лучше обратится в ветку Работа/Фриланс. Непосредственно само сохранение одного листа- это менее 10 строк.

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

Автор - bmv98rus
Дата добавления - 30.12.2016 в 11:22
Manyasha Дата: Пятница, 30.12.2016, 11:31 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
Abraham, здравствуйте, так пойдет?
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, "A1:D10", _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]
Вместо "A1:D10" - поставьте свой диапазон.
К сообщению приложен файл: 2434544.xlsm (17.1 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеAbraham, здравствуйте, так пойдет?
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, "A1:D10", _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]
Вместо "A1:D10" - поставьте свой диапазон.

Автор - Manyasha
Дата добавления - 30.12.2016 в 11:31
Abraham Дата: Пятница, 30.12.2016, 11:39 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Manyasha, Спасибо, огромное! Очень помогли сэкономить мне пару часов времени! :) :)

Теперь еще осталось понять как вписать макрос в свой документ, но с этим думаю Гугл поможет))


Сообщение отредактировал Abraham - Пятница, 30.12.2016, 11:40
 
Ответить
СообщениеManyasha, Спасибо, огромное! Очень помогли сэкономить мне пару часов времени! :) :)

Теперь еще осталось понять как вписать макрос в свой документ, но с этим думаю Гугл поможет))

Автор - Abraham
Дата добавления - 30.12.2016 в 11:39
Abraham Дата: Пятница, 30.12.2016, 20:51 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Manyasha, Все получилось, только один момент, как быть в случае, если диапазон на каждом листе разный? В данной вами функции на трех листах один диапазон, а у меня он отличается немного друг от друга....
 
Ответить
СообщениеManyasha, Все получилось, только один момент, как быть в случае, если диапазон на каждом листе разный? В данной вами функции на трех листах один диапазон, а у меня он отличается немного друг от друга....

Автор - Abraham
Дата добавления - 30.12.2016 в 20:51
bmv98rus Дата: Пятница, 30.12.2016, 22:27 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Abraham,

(какие листы обрабатывать, что если не выделен диапазон ...
Я именно об этом и думал. Я б порекомендовал вам выделить область на каждом листе, как область для печати. И использовать
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, sh.Range("Print_Area").address, _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Пятница, 30.12.2016, 22:28
 
Ответить
СообщениеAbraham,

(какие листы обрабатывать, что если не выделен диапазон ...
Я именно об этом и думал. Я б порекомендовал вам выделить область на каждом листе, как область для печати. И использовать
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, sh.Range("Print_Area").address, _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]

Автор - bmv98rus
Дата добавления - 30.12.2016 в 22:27
Abraham Дата: Пятница, 30.12.2016, 23:00 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
bmv98rus, у первых 50 листов один диапазон, у вторых 50 другой. получается всего 100 с двумя разными диапазонами.

При использовании вашего макроса пишет ошибку 104. либо он неполный и в нем не хватает каких либо элементов?


Сообщение отредактировал Abraham - Пятница, 30.12.2016, 23:02
 
Ответить
Сообщениеbmv98rus, у первых 50 листов один диапазон, у вторых 50 другой. получается всего 100 с двумя разными диапазонами.

При использовании вашего макроса пишет ошибку 104. либо он неполный и в нем не хватает каких либо элементов?

Автор - Abraham
Дата добавления - 30.12.2016 в 23:00
bmv98rus Дата: Суббота, 31.12.2016, 00:13 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Abraham,

ох уж эта локализация, Область_печати вместо Print_Area
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, sh.Range("Область_печати").address, _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]
Проверьте в диспетчере имен (ctrl+F3) что там, после определения области печати.

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

Если честно, то проще прямо в файле сделать. предварительно проверив.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Суббота, 31.12.2016, 00:14
 
Ответить
СообщениеAbraham,

ох уж эта локализация, Область_печати вместо Print_Area
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, sh.Range("Область_печати").address, _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]
Проверьте в диспетчере имен (ctrl+F3) что там, после определения области печати.

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

Если честно, то проще прямо в файле сделать. предварительно проверив.

Автор - bmv98rus
Дата добавления - 31.12.2016 в 00:13
Abraham Дата: Суббота, 31.12.2016, 00:23 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
bmv98rus, все равно не работает

Принцип таков как в примере, только количество листов не по 2, а по 50. Последовательность такая же (ну только диапазон больше соотвественно)
К сообщению приложен файл: 6954095.xlsm (9.2 Kb)
 
Ответить
Сообщениеbmv98rus, все равно не работает

Принцип таков как в примере, только количество листов не по 2, а по 50. Последовательность такая же (ну только диапазон больше соотвественно)

Автор - Abraham
Дата добавления - 31.12.2016 в 00:23
krosav4ig Дата: Суббота, 31.12.2016, 02:02 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
как быть в случае, если диапазон на каждом листе разный?

можно вот так
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, sh.UsedRange.address, _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]


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

можно вот так
[vba]
Код
Sub toWeb()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Sheets
        With ThisWorkbook.PublishObjects.Add(xlSourceRange, _
            ThisWorkbook.Path & "\" & sh.Name & ".htm", sh.Name, sh.UsedRange.address, _
            xlHtmlStatic, ThisWorkbook.Name & "_" & sh.Name, "")
            .Publish (True)
            .AutoRepublish = False
        End With
    Next sh
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 31.12.2016 в 02:02
bmv98rus Дата: Суббота, 31.12.2016, 09:47 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Abraham,

Скорее всего вы не определили области печати, что надо сделать для каждого листа и конечно это не так просто для 100 листов. Вариант toWebPrintAreas

Если нужно вывести все данные на листе и область не больше и не меньше, то ваиант от krosav4ig для вас. toWebUsedRange

Ну или проверять какой по счету обрабатываем лист и менять область, только при этом листы естесвенно должны идти в той последовательности в которой надо.

Собственно три варианта, рабочих в приложении,
К сообщению приложен файл: 2237522.xlsm (30.0 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Суббота, 31.12.2016, 13:55
 
Ответить
СообщениеAbraham,

Скорее всего вы не определили области печати, что надо сделать для каждого листа и конечно это не так просто для 100 листов. Вариант toWebPrintAreas

Если нужно вывести все данные на листе и область не больше и не меньше, то ваиант от krosav4ig для вас. toWebUsedRange

Ну или проверять какой по счету обрабатываем лист и менять область, только при этом листы естесвенно должны идти в той последовательности в которой надо.

Собственно три варианта, рабочих в приложении,

Автор - bmv98rus
Дата добавления - 31.12.2016 в 09:47
  • Страница 1 из 1
  • 1
Поиск:

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