Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/63: Рейтинг темы: голосов - 63, средняя оценка - 4.95
1 / 1 / 0
Регистрация: 27.07.2011
Сообщений: 37

Выбор данных, выгружаемых из Excel в Word в зависимости от выбранного периода

30.08.2011, 12:40. Показов 12644. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите, пожалуйста, со следующей заморочкой:
У меня осуществляется выгругрузка в ворд определённых таблиц их экселя.
Ворд – имеющийся документ с расставленными закладками.
Эксель – сформированные таблицы с индивидуальными именами.

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

Необходимо делать выгрузку таблиц в зависимости от выбранного периода.
Как видно из примера, таблицы разных периодов имеют отличие в названиях только в одной цифре.
Проблема: не могу сделать так, чтоб при выборе периода происходил выбор нужных таблиц. Т.е. при выборе из списка «1 квартал», выбирались таблицы «Продажи1» и «Выручка1», при выборе из списка «2 квартал», выбирались таблицы «Продажи2» и «Выручка2», и т.д.

П.с. на цифры и оформление таблиц не смотрите, всё нарисовано от балды только для описания данного вопроса.
Вложения
Тип файла: docx Пример.docx (9.9 Кб, 191 просмотров)
Тип файла: xls Пример.xls (42.0 Кб, 213 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.08.2011, 12:40
Ответы с готовыми решениями:

Вычисление введенных данных пользователя в зависимости от выбранного RadioButton
Программа делает вычисления введенных данных пользователя. Пользователь вносит свои данные в форму Edit1,Edit2.... и т.д Нажимает...

Word + Excel, Импорт данных из Excel в шаблон Word с условиями
Здравствуйте! Помогите, пожалуйста. Есть файл Word с расставленными закладками-метками и файл Excel с несколькими листами. С помощью...

Delphi 7 Загрузка данных в ComboBox2 в зависимости от выбранного значения в ComboBox1
Добрый день. Прошу у вас помощи, не могу понять, в голове каша, толком найти ничего не получается. Нужно реализовать загрузку данных в...

48
1 / 1 / 0
Регистрация: 27.07.2011
Сообщений: 37
20.01.2012, 17:07  [ТС]
Студворк — интернет-сервис помощи студентам
Busine2012, там повторяется запуск диалога 2 раза.
в 32 строке и в 63 происходит присваивание нового пути переменной.
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
20.01.2012, 17:09
Makarona,
а сколько пользователь файлов выбирает в диалоговом окне?
0
1 / 1 / 0
Регистрация: 27.07.2011
Сообщений: 37
20.01.2012, 17:19  [ТС]
Busine2012, каждый раз по одному.

Добавлено через 8 минут
Хм, а зачем я тогда цикл при выборке использовала, раз у меня каждый раз только один документ выбирается???
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
20.01.2012, 17:19
Вот образец, на основе его сделайте под себя.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Процедура2()
    Const strClass As String = "LINK Excel.Sheet.8 "
    Dim strNewPath As String
    'Вот эту часть у себя посмотрите в коде поля:
    'поставьте текстовый курсор на поле - Shift + F9.
    Const strSheet As String = "Лист1!R1C1"
    Const strParameters As String = " \a \t \* MERGEFORMAT"
    With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
        'Чтобы можно было выбрать только один файл.
        .AllowMultiSelect = False
        .Show
        'С помощью Replace делаем нужный синтаксис адреса, т.к. в коде поля слэша 2.
         strNewPath = Replace(.SelectedItems(1), "\", "\\")
    End With
    'Chr(34) - это кавычка, Chr(32) - это пробел.
    ActiveDocument.Fields(1).Code.Text = strClass & Chr(34) & _
        strNewPath & Chr(34) & Chr(32) & Chr(34) & strSheet & Chr(34) & strParameters
    ActiveDocument.Fields(1).Update
End Sub
1
1 / 1 / 0
Регистрация: 27.07.2011
Сообщений: 37
20.01.2012, 17:30  [ТС]
Busine2012, ага, получается, что диапазон, который нужно обновить вручную прописывается в каждом коде?

Const strSheet As String = "Лист1!R1C1"

а можно пойти другим путём?:
найти в LINK позицию " \a а после неё всё заменить на " \a \t \* MERGEFORMAT" , это реально?
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
20.01.2012, 18:04
Вот так по-простому можно добавить слово MERGEFORMAT.
Visual Basic
1
2
3
4
5
6
7
8
9
Sub Процедура1()
    'Если в коде поля нет слова MERGEFROMAT, то добавляем его.
    'С помощью LCase переводим весь текст в строчные буквы,
    'т.к. сравнение идёт с учётом регистра и не известно, что у нас там с регистрами.
    If InStr(LCase(ActiveDocument.Fields(1).Code.Text), LCase("MERGEFORMAT")) = 0 Then
        ActiveDocument.Fields(1).Code.Text = _
            ActiveDocument.Fields(1).Code.Text & "\* MERGEFORMAT "
    End If
End Sub

Вот так можно заменить, как вы хотели в #45:
Visual Basic
1
2
3
4
5
6
7
8
Sub Процедура1()
    Dim lngStart As Long
    Dim lngEnd As Long
    Const strParameters As String = "\a \t \* MERGEFORMAT "
    lngStart = InStr(ActiveDocument.Fields(1).Code.Text, "\a")
    lngEnd = ActiveDocument.Fields(1).Code.End
    ActiveDocument.Range(Start:=lngStart, End:=lngEnd).Text = strParameters
End Sub
2
1 / 1 / 0
Регистрация: 27.07.2011
Сообщений: 37
23.01.2012, 11:47  [ТС]
Busine2012, могли бы подсказать следующее:

насколько я понимаю, то эта строка присваивает lngStart весь текст до символов \а
lngStart = InStr(ActiveDocument.Fields(1).Code.Text , "\a")


а как сделать, чтоб ей присваивались все символы после какого-то знака?

Добавлено через 13 минут
Вроде сама нашла: через mid
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
23.01.2012, 14:06
В сообщении #46 во втором коде ошибка. Вот этот код используйте:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Процедура1()
    Dim lngStart1 As Long
    Dim lngStart2 As Long
    Dim lngEnd As Long
    Const strParameters As String = "\a \t \* MERGEFORMAT "
    lngStart1 = ActiveDocument.Fields(1).Code.Start
    lngStart2 = InStr(ActiveDocument.Fields(1).Code.Text, "\a")
    lngEnd = ActiveDocument.Fields(1).Code.End
    ActiveDocument.Range(Start:=lngStart1 + lngStart2 - 1, End:=lngEnd).Text = strParameters
End Sub
0
1 / 1 / 0
Регистрация: 27.07.2011
Сообщений: 37
08.02.2012, 15:15  [ТС]
Может кто-нибудь знает, как решить следующий вопрос: из Excel данные попадают в Word, но перед каждой таблицей вставляется перенос на следующую строку, так сказать, пустая строка. Её можно удалить, но при обновлении данных, она опять вставляется.
Можно ли как-нибудь сделать, чтоб эта строка не вставлялась или удалялась впоследствии?
заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2012, 15:15

Запрос на выборку данных из разных таблиц БД в зависимости от выбранного языка на сайте
Доброго времени суток. Делаю свой первый сайт в качестве учебного примера. Подключила БД, вывела товары, все хорошо. Вот дошла до этапа...

Калькулятор. Сложение внутри выбранного периода
Подскажите как сложить числа в выбранном периоде, например: есть значения : 1 = 20 2 = 30 3 = 40 4 = 67 5 = 65 6 = 4

Выгрузка с форматированием: задать диапазон выгружаемых данных
Ребят столкнулся с проблемой! Нужна ваша помощь. И так в программе, что прилагаю есть файл "Акт ТМЦ.xltx" в него необходимо...

Выбор листа в Excel в зависимости от даты
Добрый день. Просьба помочь. в VBA совсем не силен. Необходимо выбрать необходимый лист в зависимости от числа даты. В Ексель файле...

Добавление срок в таблицу Word при заполнении документа Word из данных Excel
Всем привет! Я новичок в этом деле и нужна помощь. Есть таблица Excel с данными на основании которого заполняется документ Word по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
49
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru