書式設定なしで新しいテーブルを作成する

書式設定なしで新しいテーブルを作成する

サーバー/データベースからダウンロードしたファイルからテーブルを作成するときに問題が発生します。これは古い .xls ファイルです。そのファイルには、67 列と任意の数の行 (データの量によって異なります) のリストがあります。リストを選択してそこからテーブルを作成すると、書式設定が適用され、リストの既定の書式設定が変更されます。 に移動してDisign > Table Stylesクリックしましたclearが、適用されているすべての書式設定がクリアされず、新しい列の幅が維持されます。

テーブルを作成するとき、または適用される可能性のあるその他の書式設定を行うときに、列の幅が変更されないようにする必要があります。これにより、ファイルがめちゃくちゃになり、後で使用するときに役に立たなくなります。書式設定を適用せずにテーブルを作成する必要があります。Windows 7/64 ビットで Excel 2016/1808/32 ビットを使用しています。

ありがとう xD

答え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

使い方:

  • プレスALT+F11VB エディターを開きます。
  • コピーペーストこの規約は標準モジュールシート付き。
  • マクロを実行し、変換したいデータ範囲を選択します。テーブル、できるだけ早く入力ボックスが表示されます。
  • 終了わかりました
  • 選択したデータ範囲が次のように変換されましたテーブルフォーマットなし(テーブルデザインコマンドを使用して確認)。

注意

上記のコードは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

関連情報