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

Транспонирование листа

08.08.2019, 13:10. Показов 5523. Ответов 27

Студворк — интернет-сервис помощи студентам
Снова добрый день)))
В этот раз заинтересовала задача транспонирования в Excel с помощью макроса. На разных форумах много разных кодов. Например:

Visual Basic
1
2
3
4
5
6
7
Sub TRP()
    Workbooks.Add xlWBATWorksheet
    ActiveSheet.Name = "Ваше_Имя_Листа"
    ThisWorkbook.Sheets("Таблица").Range("A4:AH5003").Copy
    ActiveSheet.[A1].PasteSpecial Transpose:=True
    ActiveWorkbook.SaveAs "Ваше_Имя_Книги.xlsx"
End Sub
Люди транспонируют какой-то определенный диапазон ячеек. Моя же проблема состоит в том, что я заранее не знаю, сколько у меня будет столбцов. Строчек же всегда будет 266. Как обойти эту проблему? Задумывался, чтобы заранее посчитать количество столбцов. Но как-то эта идея меня не особо обрадовала.
Заранее спасибо за любой ответ)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.08.2019, 13:10
Ответы с готовыми решениями:

Сохранение текущего листа с сохранением имени листа и присвоением новой книге имени текущего листа
Sub Save_as() With Application.FileDialog(msoFileDialogSaveAs) .InitialFileName = ThisWorkbook.Path & "\" & "new book name"...

Запуск макроса (написанного для актив. нужного листа) с др. листа (сложно)
Подскажите пожалуйста, есть большие макросы которые работают на активном листе, существует какой-то способ не прописывая везде нужный лист...

Сохранение листа книги в файле - проблема с защитой листа и привязкой макросов
С толкнулся с такой проблемой при сохранении листа в файле вот код который сохраняет лист в файле Sub red_row() ...

27
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 86
09.08.2019, 14:54  [ТС]
Студворк — интернет-сервис помощи студентам
Может быть просто в конце добавить:

Visual Basic
1
    ThisWorkbook.SaveAs (ThisWorkbook.Path & ".xlsx")
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
09.08.2019, 14:58
уж которому человеку пишу, не надо мне столько плюсиков по одной, ещё и небольшой, теме, перед коллегами неудобно
0
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 86
09.08.2019, 15:04  [ТС]
Прописал такую штуку:

Visual Basic
1
2
3
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\NewFile.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=True, AccessMode:=xlNoChange, ConflictResolution:=False
    Application.DisplayAlerts = True
В итоге у меня пересохраняется пустой документ с макросами, а не тот, в котором добавился транспонированный лист

За плюсики извините, больше не буду))
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
09.08.2019, 15:20
а где же имя файла? В вашем же сообщении было
Visual Basic
1
ActiveWorkbook.SaveAs "C:\Users\ND\Desktop\test\DataNew.xlsx"
подобное и напишите

Добавлено через 13 минут
ThisWorkBook это не та книга, про которую вы думаете, это книга с макросом - Макросы.xlsm, а там вторая страница действительно пустая, всё правильно делает.
может простенько написать Activeworkbook.Save, или Workbooks("NewFile.xlsx").Save активной книгой после записи транспонирования является NewFile. Думать же надо перед тем как писать код. Книжки читайте и хэлпы.
0
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 86
09.08.2019, 15:51  [ТС]
С сохранением в документ с новым именем - понял.

Когда пытаюсь сохранить просто изменения в этом документе:

Visual Basic
1
    ActiveWorkbooks.Close SaveChanges:=True
то выдаёт ошибку:

Visual Basic
1
2
3
Run-time error '424':
 
OBJECT REQUIRED
При просмотре переменных, путём наведения везде всё хорошо, но для строки сохранения пишет, что
Visual Basic
1
2
SaveChanges=Empty
True=True
Что это вообще значит? Как тут вообще быть?

Добавлено через 6 минут
Не подскажете хорошую книжку под макросы? Сильно углубляться в VB не хочется, а поверхностно пытаюсь сейчас изучить))

Добавлено через 22 минуты
Нашёл выход:

Visual Basic
1
2
3
4
5
6
        Application.DisplayAlerts = False
        For Each w In Application.Workbooks
        w.Save
        Next w
        Application.Quit
        Application.DisplayAlerts = True
Только тут он все активные книги сохраняет.
Такой цикл работает, а для одной книги не работает((
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
09.08.2019, 15:56
ActiveWorkbook.Close SaveChanges:=True Читайте книги или в поисковике, только смотрите внимательно, буква s тут не нужна. Активной может быть одна книга, а не несколько. А про всё остальное здесь забудьте. Если есть два логических выражения и оба True, то a=b покажет, что True=True
ВБА для чайников
0
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 86
09.08.2019, 16:02  [ТС]
Ещё реализовал такую штуку, которая закрывает файл с изменениями и файл с макросами после проделывания

Visual Basic
1
2
3
4
5
        Application.DisplayAlerts = False
        Workbooks("NewFile.xlsx").Save
        Application.DisplayAlerts = True
        Workbooks("NewFile.xlsx").Close
        Workbooks("Макросы.xlsm").Close
Добавлено через 1 минуту
Спасибо большое, очень сильно помогли)))
Теперь начал немного разбираться что к чему)
Обязательно найду и почитаю такую книжку)))
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
09.08.2019, 16:05
и ещё такой совет - все служебные слова в вба пишите с маленькой буквы, если напишете правильно, то редактор сам поставит заглавные где надо. Это будет признак правильного формального набора. Если бы набрали activeworkbooks маленьким, то так бы и осталось и был бы повод внимательно присмотреться.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.08.2019, 16:05

В ячейке B2 второго листа вывести значение ячейки A1 первого листа
Необходимо чтобы, например, в ячейке B2 второго листа автомотически вводилось значение ячейки A1 первого листа.

Макрос создания нового листа (заданного формата) с переносом данных с другого листа
Добрый день, формунчане! Большая просьба с созданием макроса. Необходимо разработать документ, который бы позволял создавать...

Макрос на создание листа и перенос данных с предыдущего листа
Помогите пожалуйста, мне нужен макрос на создание листа и перенос данных с предыдущего листа. Есть лист, на нем есть данные, они...

Заполнение 2 листа данными из 3-го листа при событии на 1-м листе
Уважаемые форумчане, добрый вечер! Бьюсь челом и молю о помощи с решением задачи! Задача очень интересная, но для моих знаний в...

В столбец 3-го листа вставить формулу суммы столбцов 1-го и 2-го листа
Найдите, пожалуйста, ошибку. Нужно сложить столбец А первого листа и столбец А второго листа. Записать в столбец А третьего листа. For...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение 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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru