Excel方眼紙のデータを「ぶっこ抜く」方法 -その1
http://blog.goo.ne.jp/xmldtp/e/938b64d4d6bd0134a55b932555281fec
の続きです。
もう一度おさらいすりと、ぶっこ抜く方法は、
1.雛形をコピーし、「マクロの記録」を実行、
入力エリアに文字を入れて、マクロを保存、
入力エリアを確認します。
2.データぶっこ抜きシートを作成し、
ファイル名
データ
シートを作成
3.上記2で作成したシートに、1のマクロを
もとに、「データぶっこ抜き」マクロを
作成します。
4.Excel方眼紙で作ったデータを1フォルダ
にあつめて、2のシートの「ファイル名」に
書きます
5.上記3で作ったマクロを実行!
|
でした。今1が終わりました。今度は、2からです。
■2.データぶっこ抜きシートを作成
新たに「データぶっこ抜きシート」を作成します。
ここでは、「データ収集.xls」というファイルを作成します。
そうしたら、「ファイル名」と「データ」というシート名で、
シートを作成してください(本当は自由にシート名をつけられるのですが、
あとのマクロ作成のために、こうします)
■3.データぶっこ抜きマクロ作成
「ツール」→「マクロ」→「Visual Basic Editor」を選んで、
VBEを開きます。

そうしたら、左側のプロジェクトを右クリックして「挿入」→「標準モジュール」
を選ぶと、Module1という標準モジュールができます。

そうしたら、Module1の中に、以下のように記入してください。
Sub dataget()
Dim b As Workbook
Dim t As Workbook
Set t = ActiveWorkbook
gyo = 2
Do While (t.Sheets("ファイル名").Cells(gyo, 3) <> "")
Set b = Workbooks.Open(Sheets("ファイル名").Cells(gyo, 3))
'ここに、データぶっこぬきマクロが入ります
b.Close
gyo = gyo + 1
Loop
End Sub
|
何も考えず、このまま、コピペでOKです。
つぎに、前回の1で作成したマクロを書き入れるのですが、
単純なコピーではだめです。以下のように書き入れます。
(1)セル結合の場合
Range("M7:AU8").FormulaR1C1 = "あ"
のようなカタチだと思います。このときは、
t.Sheets("データ").Cells(gyo, 2) = b.Sheets("Sheet1").Range("M7:AU8").FormulaR1C1
となるように、左辺に、
(あ)t.Sheets("データ").Cells(gyo, 書き出す列番号)を付け加え
(い)右辺は、b.Sheets("集計するExcel方眼紙のシート名").を前に書いて
(う)Range("M7:AU8").FormulaR1C1部分を書き加える
(2)図形にテキストを入れた場合
ActiveSheet.Shapes("Text Box 2").TextFrame.Characters.Text = "う"
のようなカタチだと思います。
このとき、
t.Sheets("データ").Cells(gyo, 4) = b.Sheets("Sheet1").Shapes("Text Box 2").TextFrame.Characters.Text
となるように、左辺に、
(あ)t.Sheets("データ").Cells(gyo, 書き出す列番号)を付け加え
(い)右辺は、
ActiveSheetの代わりにb.Sheets("集計するExcel方眼紙のシート名").を前に書いて
(う)Shapes("Text Box 2").TextFrame.Characters.Text
部分を書き加える
結果として、Excelマクロは、こんなふうになります。
Sub dataget()
Dim b As Workbook
Dim t As Workbook
Set t = ActiveWorkbook
gyo = 2
Do While (t.Sheets("ファイル名").Cells(gyo, 3) <> "")
Set b = Workbooks.Open(Sheets("ファイル名").Cells(gyo, 3))
'ここに、データぶっこぬきマクロが入ります
t.Sheets("データ").Cells(gyo, 2) = b.Sheets("Sheet1").Range("M7:AU8").FormulaR1C1
t.Sheets("データ").Cells(gyo, 3) = b.Sheets("Sheet1").Range("M9:AU10").FormulaR1C1
t.Sheets("データ").Cells(gyo, 4) = b.Sheets("Sheet1").Shapes("Text Box 2").TextFrame.Characters.Text
t.Sheets("データ").Cells(gyo, 5) = b.Sheets("Sheet1").Shapes("Text Box 5").TextFrame.Characters.Text
b.Close
gyo = gyo + 1
Loop
End Sub
|
左辺、"t.Sheets("データ").Cells(gyo," の後、数字を1つづつ上げていく(例だと、2,3,4,5と上がっている)のを、忘れないでくださいね!
ここまでの操作で、こんな風になります。

これで、
・フロッピーの形をしたアイコンをクリックして保存し、
・右上Xをクリックして、VBEを終了させてください
■4.Excel方眼紙データをあつめ、「ファイル名」シートに書く
まず、回答してもらったデータを、どこかのフォルダにまとめます。

なかんじ。
そしたら、2で作ったシート(ここではデータ収集.xls)を開いて

のように、2行目から
1列目に、まとめたフォルダのパス(すべて同じのはず)
2列目に、集計するExcelファイル名
3列目は、2行目に
=A2 & "\" & B2
とかいて、コピーすると、ファイルのパスができるはず(ここをマクロでは使う)
■5.実行!
「データ収集.xls」が開いている状態で
「データ」→「マクロ」→「マクロ」

を選択。出てきたダイアログで

dataget
(=データ収集のときに作ったマクロ)を選択して
「実行」(=「実行」ボタンをクリック)
そうすると、実行して、その後「データ」シートをみると

なかんじでできている。
あ~、書き方悪くて、複雑そうに見えるかもしれないけど、
マクロのソースは基本的にコピペと一部の決まった書き換えなので
そんなに複雑じゃない。やってみるとわかると思う。
この逆操作で、Excel方眼紙にデータがセットできたり、
4のファイル名をもっと簡単に作成する(バッチコマンドのDIRの結果をテキストに書いて)
など、いろいろ説明したいことはあるが、
今回は長すぎてしまうので、ここできります。