タグ: VBA

【Word VBA】テキストの書き換え方法

Excelでセル指定をして内容を書き換えるWord版みたいな感じです。
WordのVBAって記事自体少なくて苦労したので備忘録用に。

Excelであれば、セルの値書き換えは比較的簡単に行えると思いますが、
Wordは場所の指定が出来ない?ので、そんなときの方法をご紹介です。

 

■作ったもの
「Commnad Button」を押したときにテキストを書き換えます。

 

■かんたん解説(画面上のオブジェクトとかについて)
Word内のテキストを書き換え、挿入を行う為には、
「テキスト コンテンツ コントロール」というものを使用します。

「■作ったもの」にある「テスト1」、「テスト2」も通常のテキストではなく、
「テキスト コンテンツ コントロール」の中に入っているテキストになります。
※「test1」、「test2」は、このコントロールのタイトル情報になります。

 

■サンプルコード

 

■かんたん解説(サンプルコードについて)
3行目:変数定義、コンテンツ コントロールを扱うときはコレみたいです。
5行目:Word文書内の各コンテンツ コントロールに対して繰り返し処理を行う。
7行目:コンテンツ コントロールのタイトルが「test1」のとき、「テキスト1」に書き換える。

コードについての解説は間違ってるかもしれません、、
もっといいコードの書き方もあると思うので、参考程度にお願いします。

【VBA】新規または既存のファイルをひらく

1.新規のエクセルファイルを立ち上げる
2.既存のエクセルファイルを開かせる
3.既存のエクセルファイルを開かせる(パスワード付き)
4.読み取り専用で開かせる

 


1.サンプルコード(新規エクセルファイル)

これで新規のブックが起動します。(ファイルとしては存在せず、メモリ上だけにあるみたい?)

保存まで行わせたい場合は以下。
「C:\Users\Documents」に「sample.xlsx」ファイルを作成します。

 

 


2.サンプルコード(通常のエクセルファイル)

サンプルと呼ぶのもおこがましいですが、”C:\新しいフォルダ”配下にある
Sample_Books.xlsxという名前のエクセルファイルを開くよというものです。

 

 


3.サンプルコード(パスワード付きエクセルファイル)

エクセルファイルに「TEST」というパスワードが掛かっていた場合、
2のようなコードとすると、パスワード入力画面で処理が止まります。

入力画面を表示させずにファイルを開くためには、
サンプルのようにパスワードを定義する必要があります。

 

 


4.サンプルコード(読み取り専用)

このようにすると、ファイルを読み取り専用で開いてくれます。

【VBA】文字列の中間を抜粋する方法

Left関数、Right関数を使った両サイドの抜粋は結構あるのですが、
中間だけの抜き出しが調べても見つけられなかったので。

 

例えば、こんな感じに抜粋したいときは以下の手順になると思います。

1.アンダーバー(_)までの文字数を調べる。
2.mid関数でアンダーバー以前をカットする。
3.ドット(.)までの文字数を調べる。
4.left関数で名前までを引き抜く。

 

■サンプルコード

 

★ちょこっと解説

・各変数時点での値
A → 12345_田中一郎.xlsx
B → 6
C → 田中一郎.xlsx
D → 5
E → 田中一郎

 

・各関数について
InStr → 特定文字の検索が行えます。(左から何文字目にあるか。)
       =InStr(”元の文字列”,”検索したい文字列”)

Mid → 文字列の途中を抜き出す。
         =Mid(”元の文字列”,”何文字目から取り出すか”,”何文字取り出すか”)

Left → 左から指定文字数目までを取り出す。
        =Left(”元の文字列”,”取り出したい文字数”)

【Excel VBA】命令、使い方

※気が向いたときに更新予定です。

命令 簡単に使い方(使用例)
Dim 関数定義。
使用例:「Dim a」
実行結果:関数「a」の定義
Cells 特定セルの指定。
使用例:「Cells(2,3)」
実行結果:2行目3列目のセルが指定できる
Interior.Color 背景色の設定。
使用例:「Cells(2,3).Interior.Color = RGB(255, 192,128)」
実行結果:2行目3列目のセルの背景色をオレンジにする。
CInt、CLng 文字列を数値型に変換。
使用例:CInt(“&HFF”)
実行結果:数値「255」に変換される。

【Excel VBA】16進数から背景色の設定

今回はVBAで16進数からRGB値を算出し、
それに対応した背景色を設定する方法について(以下参考)

マクロは以下のコピペで動くと思います。(A2に16進数が入力されていることが前提)

■5行目
 →関数「R」「G」「B」を定義する。

■7行目
 →まず、Mid関数で「A2」セルの下2桁を抽出します。
  その後、頭に「&H」を付け、「&HAF」の文字列にする。
  CInt関数で数値型に変換を行うと「&HAF」→「175」になり、
  Rの値が算出できます。(8、9行目も同様なイメージ)

■11行目
 →7、8、9行目で出した値を
  「C2」、「D2」、「E2」の各セルへ格納

■15行目
 →Interior.Colorにて「F2」の色を
  RGB値に対応した色で塗りつぶします。

 

※補足(RGB値の設定箇所について)

背景色が設定されているセルにフォーカスを当てた状態で
塗りつぶしアイコンから「その他の色(M)」で以下の画面