- 締切済み
ファイルを開かずにマクロを実行
マクロの実行をいちいちファイルを開かずに行いたい場合には、どうすればよいのでしょうか。 フォルダの中に同じフォーマットのファイルが数十個から数百個あります。 作業内容は、ファイルの中の一部分を修正する、などです。フォルダ内の全てのファイルに同じ作業をします。 これを、下記のマクロでやっているのですが、今は、 ファイルを開く→下記の別ファイルで保存したマクロを実行し、修正を行う、を繰り返してやっています。 例えば、こんな作業をします。 Range("B2").Select ActiveCell.FormulaR1C1 = "変更しました" ActiveCell.Characters(1, 2).PhoneticCharacters = "ヘンコウ" Range("D11").Select Sheets("修正").Select Range("A1").Select ActiveCell.FormulaR1C1 = "変更しました" ActiveCell.Characters(1, 2).PhoneticCharacters = "ヘンコウ" Range("A6:B10").Select Selection.ClearContents End Sub これだと、1ファイルずつ作業をしないといけないので、出来ればフォルダ内にあるエクセルファイルに対し一括で処理できるようにマクロを実行させたいです。 おそらく上記コードに、前後何かをつけたせばいいのだと思いますが、それが分かりません。これが分かれば、色々応用がきくと思うので教えていただけませんか。 どうぞ宜しくお願い致します。 Office2003
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
ADODBやDAOで、ファイルに直接、中身を変更することは可能ですが、実際は、Excelのバイナリファイルを開いています。オブジェクトを開きますから、オーバーヘッドは掛かります。ただ、こういうワザは掲示板では公開されません。さほど時間的に差がないものを、単にやり方だけにこだわる方法だからだと思うのです。 >ActiveCell.Characters(1, 2).PhoneticCharacters = "ヘンコウ" 具体的には、PhoneticCharacters を外部から処理する方法は聞いたことがありません。 データではなく、Workbook の中のRangeオブジェクトに処理を掛けているのだから、ひとつひとつ開かなくては出来ません。また、一括で出来るような方法はありません。 単に、ループして開いて閉じてを繰り返すだけです。それに、シートもひとつならともかく、複数あるなら、今の段階で、人がどう想像するのかは自由でも、質問内容から、コードを書くことは難しいかと思います。
- keithin
- ベストアンサー率66% (5278/7941)
ちょっと書き間違いがあったので訂正。 sub sample1() dim w as workbook dim s as string dim myPath as string application.screenupdating = false mypath = "c:\test\" s = dir(mypath & "*.xls") do until s = "" set w = workbooks.open(filename:=mypath & s) w.worksheets("不明").range("B2").value = "変更しました" w.worksheets("不明").range("B2").characters(1,2).phoneticcharacters = "ヘンコウ" w.worksheets("修正").range("A1").value = "変更しました" w.worksheets("修正").range("A1").characters(1,2).phoneticcharacters = "ヘンコウ" w.worksheets("修正").range("A6:B10").clearcontents w.close savechanges:=true s = dir() loop application.screenupdating = true end sub 失礼しました。
- keithin
- ベストアンサー率66% (5278/7941)
今回のご質問で是非マスターしておいて欲しいのは,次の3点です。 1.あるフォルダの中のファイルを順繰り調べるマクロ 及び,ファイルを開く・保存する・閉じるマクロ 2.マクロで「変数」を使う方法 3.select・selection・activeなんたらを使わないマクロを書けるようになること sub sample1() dim w as workbook dim s as string dim myPath as string application.screenupdating = false mypath = "c:\test\" s = dir(mypath & "*.xls") do until s = "" set w = workbooks.open(filename:=s) w.worksheets("不明").range("B2").value = "変更しました" w.worksheets("不明").range("B2").characters(1,2).phoneticcharacters = "ヘンコウ" w.worksheets("修正").range("A1").value = "変更しました" w.worksheets("修正").range("B2").characters(1,2).phoneticcharacters = "ヘンコウ" w.worksheets("修正").range("A6:B10").clearcontents w.close savechanges:=true s = dir() loop application.screenupdating = true end sub それから,ファイルを開かずにファイルの中身を操作する方法は全くありません。
お礼
ありがとうございました。 私はマクロは記録マクロで新規に作成し、その後でモジュールを開いて自分が出来る範囲で修正していました。 基礎からちゃんと勉強するべきですね。