プロが教える店舗&オフィスのセキュリティ対策術

フォルダ内に約800ぐらいのエクセルファイルがあり、複数のシートがあります。
※一つしかシートがない場合も、20以上ある場合もあります。

どのシートのG7セルには文字が入っています。

これを一つのファイルのシートに一覧化したいのですが、簡単に出来る方法はありませんでしょうか?

A 回答 (2件)

スクリプトファイルで一発です



--- readAllG7_fromExcel.wsf
<?XML version="1.0" standalone="yes" ?>
<package><job>
<object id="fso" progid="Scripting.FileSystemObject" />
<object id="excel" progid="Excel.Application"/>
<script language="JavaScript"><![CDATA[

function forEach(obj, proc) { for (var c = new Enumerator(obj); !c.atEnd(); c.moveNext()) proc(c.item()); }
var targetFolder = fso.getFolder('C:/どっか/800ぐらいのエクセルが入ったフォルダ');
var result = [];
forEach(targetFolder.files, function (file) {
if (!(/\.xlsx?$/.test(file.name))) return;
var book = excel.workbooks.open(file.path);
forEach(book.worksheets, function(sheet){
var s = sheet.range('G7').value;
result.push(s);
});
book.close();
});
excel.application.visible = true;
var reportBook = excel.workbooks.add();
var sheet = reportBook.activesheet;
for (var i=0; i<result.length; i++) sheet.cells(i+1,1).value = result[i];
// reportBook.saveAs('適当な名前');
// excel.application.quit();

]]></script></job></package>
    • good
    • 0
この回答へのお礼

ありがとうございます!
すごいです!

お礼日時:2015/06/20 23:44

800程度なら一つずつ開いて確認すれば2~3時間ほどで終わると思います。


知識がないなら力技。これ基本です。

自分ならCELL関数でファイル名とシート名を取得する。
CELL関数を入力するのは力技ってのは変わらない。
すべてのシートで使用していないセルに
 =CELL("filename”,A1)
を入力してこのセルに表示されるテキストをひたすらコピー、ペースト。
終わったら削除!跡形残さず撤収!
ファイルパスまで表示されて嫌だというなRIGHT関数などを使って文字列を整形するか、最後に置換で一気に消し去ればOK。
まあ、これでも1時間くらいは掛かるかな。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!