Создать новую таблицу без форматирования

Создать новую таблицу без форматирования

У меня проблема с созданием таблицы из файла, который я загружаю с сервера/базы данных. Это старый файл .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

Связанный контент