2007年9月8日土曜日

第40回目 エクセルのファイルを分析する(その4-3)

○第40回目 エクセルのファイルを分析する(その4-3)

 今回は計算式を文字化するということです。
 範囲を指定しておいてからマクロを動かします。
 今回は座標の取得は不要です。

 第26回の時のものを利用します。
Sub a50Table_Clear01()
 '範囲を指定して実行する。
  Dim CCC As Object
  For Each CCC In Selection
  If CCC.HasFormula <> True Then
  CCC.ClearContents 'クリア
  End If
  Next
 End Sub

 if文とクリアのところを変えればいいのです。
  If CCC.HasFormula = True Then
  CCC = "xxx" & CCC.Formula
  End If
 となります。
 実行後、操作によりCtrl+cでコピーして、テキストに貼り付けて下さい。
 わかるともいますが、同じ行のセルはタブで結ばれていて行が変わると改行になるのです。そういう形式でエクセルのデータはテキストに貼り付けられます。
 また、ここでのfor文の中の動きですが、横に動いていき、行が終われば下の行に行くという動きをします。

 反対も必要です。
 メインの処理は、
Dim CCC As Object
For Each CCC In Selection
Selection.Replace What:="xxx", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next
 となります(簡単にいうと、"xxx"を削除するという処理)。

 質問です。
 横見出しにかかるもの(前回)と計算式にかかるもの(今回)とではマクロの複雑度が違います。
 横見出しも計算式と同様な操作で出来ないのでしょうか(列記号の付加は無視します)。
 なかなか面白い質問だと思います。

0 件のコメント: