三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

Word VBA 表の列幅 Columns.Countで列数 Columns(x).Widthで幅

f:id:ken3memo:20220406095940j:plain
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とのリンク貼り付けで列幅が狂った時、戻す処理をやろうとするが、
 失敗したので、動画の後半、カットしました・・・・

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)