○第35回目 エクセルのファイルを分析する
本当は、こんなだいそれたことはできません、ということでおしまいです。
それでは面白くないので、話を発展させます。
われわれの業務では、エクセルのシート数がかなり多くなります。
そして夏休みです。
この二つのことから連想することは、……
それは、引継ぎです。
そのためにエクセルの内容を説明しなければなりません。100%は無理ですが、少なくとも鳥瞰図的なものは必要ではないでしょうか。
ということで、試行錯誤的にそんなような気にさせるものを作ることに、チャレンジしましょう。これも定式化できないものなので、いいところをとってください。
シートは何枚あって、シートとシートの関係はどうなっているのか。
新しいシートを一枚作ります。
そこに全シートのシート名を一覧表を作ります。
同じようなグループはまとめ、二重罫線で囲みます。
見た目アウトライン表記のように、シート名をずらして階層化させます。
シート名の右側に必要なコメントを書きます。また、図で矢印でつながりを表してもいいですね。
これは、到底今の力では出来ません。
それである程度省略してマクロでは、
1.全シートのシート名を一覧表を作ります。
2.見た目アウトライン表記のように、シート名をずらして階層化させます。そのためずらす数(ここでは列数とする)を設定します。
途中で色々な作業が入るので、これは別々のマクロとなります。
ということだけにします。
ということでかなり簡単になりました。
取極めをしておきましょう。
シート名一覧を作るシートは手動で作りますが、D5からシート名を下に向かって書き込みます。シート番号も必要なので、D列がシート番号、F列がシート名になります。
(E列はあとで使うので、ずらしています)
メインの処理は次の通りとなります。
lr005 = 5: lc004 = 4 '後での修正が楽なように定数は変数化して持つ
Cells(lr005-2,lc004+1) = ActiveWorkbook.Name 'ブック名
For i = 1 To Sheets.Count 'シートの数だけ繰り返す。グラフを含める
Cells(lr005+i-1,lc004) = i 'シート番号をセルへ記入する
Cells(lr005+i-1,lc004+2) = Sheets(i).Name 'シート名をセルへ記入する
Next
(注)シート数は、"Sheets.Count"に入っています。
Sheets.CountのかわりにWorksheets.Countをつかうと、グラフは含まりません。
これで1.はおしまいですが、さびしいのでリンクを張ってみます。
Cells(lr005+i-1,lc004+2).select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
Sheets(i).Name & "!A1", TextToDisplay:=Sheets(i).Name
を、nextの前に入れてください。
2.アウトライン表記的に列下げをする。各シート名ごとに、下げる列数を入力します。E列に入れます。これは手動です。
マクロの中で1単位ごとの移動列数を入れます。
列下げ数値の範囲を設定してからマクロを動かします。
列下げ数値がはいっている座標がわからないので、座標の取得から入ります。
・座標の取得
AAA = Selection.Address
p1 = InStr(AAA, ":")
AAA1 = Left(AAA, p1 - 1)
AAA9 = Mid(AAA, p1 + 1)
retu1 = Range(AAA1).Column
gyo1 = Range(AAA1).Row
retu9 = Range(AAA9).Column 'retu1と同じはず
gyo9 = Range(AAA9).Row
・挿入するセルの基本単位の入力
tan_i = InputBox("挿入するセルの基本単位を入れてください。通常は1 ", , 1)
・セルの挿入
For i = gyo1 To gyo9
kaisuu = Cells(i, retu1) * tan_i
If kaisuu <> 0 Then
For j = 1 To kaisuu
Cells(i, retu1 + 1).Select
Selection.Insert Shift:=xlToRight
Next j
End If
Next i
これも、これでおしまい。簡単すぎましたね。
これも簡単すぎましたので、おまけです。
まずはアイデアのみですが、各シートのA1にそのシートの説明を必ずコメントで記入することを指示するのです。そしてこのコメントを取得して、これも表示するというのはどうでしょうか。横に長くなりますね。折り返して表示で行の高さをフリーにしておくと行が高くなってうまくはいるかもしれません。その分縦長になりますけどね。
また、コメントを作るという面では、コメントをテキストエディタでつくっておき、クリップボード経由で自動的に各シートのA1に貼り付けるというのも考えられます。これは一旦どこかにクリップボードの内容を貼り付けてからでないと出来ません。現時点ではクリップボードの内容を直接変数値に入れるやり方がわかりませんので。
コメントの貼り付けと列ずらしの処理の前後関係は悩みますね。列ずらしをしてから、コメントを貼り付けるという順番がよろしいようですね。ということは別マクロとなりますね。
ということで続きは次回へ。

0 件のコメント:
コメントを投稿