マクロの実行をいちいちファイルを開かずに行いたい場合には、どうすればよいのでしょうか。
フォルダの中に同じフォーマットのファイルが数十個から数百個あります。
作業内容は、ファイルの中の一部分を修正する、などです。フォルダ内の全てのファイルに同じ作業をします。
これを、下記のマクロでやっているのですが、今は、
ファイルを開く→下記の別ファイルで保存したマクロを実行し、修正を行う、を繰り返してやっています。
例えば、こんな作業をします。
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
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
今回のご質問で是非マスターしておいて欲しいのは,次の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
それから,ファイルを開かずにファイルの中身を操作する方法は全くありません。
ありがとうございました。
私はマクロは記録マクロで新規に作成し、その後でモジュールを開いて自分が出来る範囲で修正していました。
基礎からちゃんと勉強するべきですね。
No.2
- 回答日時:
ちょっと書き間違いがあったので訂正。
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
失礼しました。
No.3
- 回答日時:
ADODBやDAOで、ファイルに直接、中身を変更することは可能ですが、実際は、Excelのバイナリファイルを開いています。
オブジェクトを開きますから、オーバーヘッドは掛かります。ただ、こういうワザは掲示板では公開されません。さほど時間的に差がないものを、単にやり方だけにこだわる方法だからだと思うのです。>ActiveCell.Characters(1, 2).PhoneticCharacters = "ヘンコウ"
具体的には、PhoneticCharacters を外部から処理する方法は聞いたことがありません。
データではなく、Workbook の中のRangeオブジェクトに処理を掛けているのだから、ひとつひとつ開かなくては出来ません。また、一括で出来るような方法はありません。
単に、ループして開いて閉じてを繰り返すだけです。それに、シートもひとつならともかく、複数あるなら、今の段階で、人がどう想像するのかは自由でも、質問内容から、コードを書くことは難しいかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
-
4
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
7
vbsからのExcelマクロ呼び出しの際に保存ダイアログが表示されてしまう
その他(プログラミング・Web制作)
-
8
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
11
Application.Runエラー(1004)
Excel(エクセル)
-
12
DATE型変数を初期化する方法
Visual Basic(VBA)
-
13
VBscriptが起動しない?
Microsoft ASP
-
14
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
15
エクセルでファイルを開かずに文字を検索し、行を抽出したい
Excel(エクセル)
-
16
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
17
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
18
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
19
エクセル関数>参照ファイル名をセルから呼び出す
Excel(エクセル)
-
20
エクセルVBAでUserFormを起動した時
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシートの数を数えた...
-
EXCEL VBA 指定したファイルが...
-
エクセルマクロで不特定なファ...
-
エクセルのxls形式からxlsx形式...
-
vlookup関数の引数を変数で指定...
-
エクセルファイルをHTML化する...
-
ファイルの保存場所を変えたら...
-
【マクロ】読取専用のファイル...
-
VLookupで参照する範囲を変数で...
-
エクセル 複数ファイルの一括...
-
ファイル名を変更するマクロ
-
エクセル(マクロ)のファイル...
-
ファイルを開かずにマクロを実行
-
ACCESSのマクロを自動で実行さ...
-
vba dirにおけるフォルダ内にあ...
-
【Excel VBA】ファイル名が一...
-
ハイパーリンクの使用方法
-
Excelファイルがマクロを含むか...
-
vba初心者です。 質問です。 毎...
-
VBA EXCELファイル選択⇒指定セ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 指定したファイルが...
-
エクセルマクロで不特定なファ...
-
VBAでワークブックの名前を変数...
-
フォルダ内のexcelファイルを順...
-
エクセルのxls形式からxlsx形式...
-
エクセル 複数ファイルの一括...
-
エクセルのシートの数を数えた...
-
accessフォルダを移動したらフ...
-
vlookup関数の引数を変数で指定...
-
Accessのaccdbファイルを起動で...
-
ファイルを開かずにマクロを実行
-
【Excel VBA】ファイル名が一...
-
EXCELマクロを無効にして開く方法
-
エクセル(マクロ)のファイル...
-
ACCESS VBAでファイルを開くダ...
-
Excel VBA でファイルが開かれ...
-
ファイルの保存場所を変えたら...
-
フォルダ内のブック全部にパス...
-
vba初心者です。 質問です。 毎...
-
エクセルマクロ 異なるファイ...
おすすめ情報