![Создать новую таблицу без форматирования](https://rvso.com/image/1585782/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C%20%D0%BD%D0%BE%D0%B2%D1%83%D1%8E%20%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%83%20%D0%B1%D0%B5%D0%B7%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F.png)
У меня проблема с созданием таблицы из файла, который я загружаю с сервера/базы данных. Это старый файл .xls. В этом файле есть список с 67 столбцами и произвольным количеством строк (зависит от объема данных). Когда я выбираю список и создаю из него таблицу, применяется форматирование, которое изменяет форматирование списка по умолчанию. Я перехожу Disign > Table Styles
и нажимаю, clear
но это не очищает все примененное форматирование; новая ширина столбца остается.
Мне нужно, чтобы ширина столбца не менялась при создании таблицы или любом другом форматировании, которое может быть применено. Это действительно портит мои файлы и делает их бесполезными для дальнейшего использования. Мне нужно создать таблицу без применения форматирования. Я использую Excel 2016/1808/32bit на Windows 7/64bit.
Спасибо хD
решение1
Этот VBA (макрос) поможет вам создать ТАБЛИЦУ без кнопок «Формат» и «Фильтр».
Sub TableWithoutStryle()
Dim Trange As Range
Dim Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Sheet1")
Set Trange = Application.InputBox(Prompt:= _
"Please select a range,,", _
Title:="Create Table", Type:=8)
Ws.ListObjects.Add(xlSrcRange, Trange, , xlYes).Name = "NewTable1"
Ws.ListObjects("NewTable1").TableStyle = ""
Ws.ListObjects("NewTable1").ShowAutoFilterDropDown = False
End Sub
Как это работает:
- НажиматьАЛЬТ+Ф11чтобы открыть редактор VB.
- Копировать&Вставитьэтот Кодекс какСтандартный модульс Листом.
- Запустите макрос и выберите нужный диапазон данных, в который вы хотите преобразовать.СТОЛ, как толькоПоле вводапоявляется.
- Завершить сХорошо
- Вы найдете выбранный диапазон данных, который теперь преобразован вСТОЛбез какого-либо формата (проверьте с помощью команды «Конструктор таблиц»).
Примечание.
Приведенный выше код Sheet & Table name
можно редактировать.
решение2
Я добавил код для захвата ширины столбцов и ее восстановления после вставки таблицы:
Sub TableWithoutStryle()
Dim Trange As Range
Dim Ws As Worksheet
Dim ColWidth()
Set Ws = ActiveSheet
Set Trange = Selection
NumCols = Trange.Columns.Count
ReDim ColWidth(NumCols)
For i = 1 To NumCols
ColWidth(i) = Trange(1, i).ColumnWidth
Next i
Ws.ListObjects.Add(xlSrcRange, Trange, , xlYes).Name = "NewTable1"
Ws.ListObjects("NewTable1").TableStyle = ""
Ws.ListObjects("NewTable1").ShowAutoFilterDropDown = False
For i = 1 To NumCols
Trange(1, i).ColumnWidth = ColWidth(i)
Next i
End Sub