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

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

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

Author24 — интернет-сервис помощи студентам
Снова добрый день)))
В этот раз заинтересовала задача транспонирования в 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2019, 13:10
Ответы с готовыми решениями:

Сохранение текущего листа с сохранением имени листа и присвоением новой книге имени текущего листа
Sub Save_as() With Application.FileDialog(msoFileDialogSaveAs) .InitialFileName =...

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

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

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

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

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

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
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
09.08.2019, 15:20 24
а где же имя файла? В вашем же сообщении было
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  [ТС] 25
С сохранением в документ с новым именем - понял.

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

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
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
09.08.2019, 15:56 26
ActiveWorkbook.Close SaveChanges:=True Читайте книги или в поисковике, только смотрите внимательно, буква s тут не нужна. Активной может быть одна книга, а не несколько. А про всё остальное здесь забудьте. Если есть два логических выражения и оба True, то a=b покажет, что True=True
ВБА для чайников
0
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 86
09.08.2019, 16:02  [ТС] 27
Ещё реализовал такую штуку, которая закрывает файл с изменениями и файл с макросами после проделывания

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
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
09.08.2019, 16:05 28
и ещё такой совет - все служебные слова в вба пишите с маленькой буквы, если напишете правильно, то редактор сам поставит заглавные где надо. Это будет признак правильного формального набора. Если бы набрали activeworkbooks маленьким, то так бы и осталось и был бы повод внимательно присмотреться.
1
09.08.2019, 16:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.08.2019, 16:05
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru