Selection.Tables.Count で 選択したエリアに表・テーブルがあるか?判断
Columns.Count で 列数
Columns(x).Width で 幅が取得できます
youtu.be
https://youtu.be/FeZvnfIHWZ0 ← 文字が小さい時はYouTubeで直接見てください。
目次
00:00 0.つかみで、列幅の表示VBAを走らせる
01:06 1.Selection.Tables.Count で 選択したエリアに表・テーブル数
02:49 2.Columns.Count で 列数
04:32 3.Columns(x).Width で 幅が取得できます
05:00 4.もちろん値をセットすれば列幅が変わります
Word 表の列幅 取得・変更 処理の参考となれば幸いです。
※Excelとのリンク貼り付けで列幅が狂った時、戻す処理をやろうとするが、
失敗したので、動画の後半、カットしました・・・・
0.つかみで、列幅の表示VBAを走らせる
1.Selection.Tables.Count で 選択したエリアに表・テーブル数
Selection.Tables.Count で選択されたテーブルの数がわかるので、
If Application.Selection.Tables.Count = 0 Then 'どこか選択されているかチェック
と、テーブルが選択エリアに入っているかチェックしました。
2.Columns.Count で 列数
Set objTABLE = Application.Selection.Tables.Item(1)
一番目のテーブルを変数に入れ、
For x = 1 To objTABLE.Columns.Count 'Columns.Countで列数分ループ
で、ループを回します。
3.Columns(x).Width で 幅が取得できます
あとは、単純に
Columns(x).Width で 幅が取得できます
Debug.Print x & "列目:" & objTABLE.Columns(x).Width
MsgBox x & "列目:" & objTABLE.Columns(x).Width
4.もちろん値をセットすれば列幅が変わります
For x = 1 To objTABLE.Columns.Count 'Columns.Countで列数分ループ objTABLE.Columns(x).Width = 100 '固定の列幅を試しにセットする Next x
で全ての列幅を100にしました。
使用したソースコード:
Option Explicit Sub 選択された表テーブルの列幅を表示する() 'Selection.Tables.Count で選択されたテーブルの数 If Application.Selection.Tables.Count = 0 Then 'どこか選択されているかチェック MsgBox "テーブル選択してね" Exit Sub End If Dim objTABLE As Word.Table '型宣言してみた Set objTABLE = Application.Selection.Tables.Item(1) '一番目しか調べないぉぃぉぃ Dim x As Integer '列数なので、x列、xにしてみた。いつもn番目のクセに・・・ For x = 1 To objTABLE.Columns.Count 'Columns.Countで列数分ループ objTABLE.Columns(x).Select '列選択、列幅取得時に無くてもいいのに、動画バエでいれてみた '.Columns(x).Width で 幅を取得できます。 Debug.Print x & "列目:" & objTABLE.Columns(x).Width MsgBox x & "列目:" & objTABLE.Columns(x).Width Next x MsgBox "お疲れ様です。終了しました" objTABLE.Select '最後に表(Table)を全選択。 'ぉぃぉぃ、↑間違ってDEL押したらどうすんだ、選択解除だろ普通・・・ End Sub Sub 選択された表テーブルの列幅を固定100にする() 'Selection.Tables.Count で選択されたテーブルの数 If Application.Selection.Tables.Count = 0 Then 'どこか選択されているかチェック MsgBox "テーブル選択してね" Exit Sub End If Dim objTABLE As Word.Table '型宣言してみた Set objTABLE = Application.Selection.Tables.Item(1) '一番目しかセットしない Dim x As Integer '列数なので、x列、xにしてみた。いつもn番目のクセに・・・ For x = 1 To objTABLE.Columns.Count 'Columns.Countで列数分ループ objTABLE.Columns(x).Width = 100 '固定の列幅を試しにセットする Next x MsgBox "お疲れ様です。終了しました" objTABLE.Select '最後に表(Table)を全選択。 'ぉぃぉぃ、↑間違ってDEL押したらどうすんだ、選択解除だろ普通・・・ End Sub
Word 表の列幅 取得・変更 処理の参考となれば幸いです。
※Excelとのリンク貼り付けで列幅が狂った時、戻す処理をやろうとするが、
失敗したので、動画の後半、カットしました・・・・