• ベストアンサー

フォルダ内ブックの数式を全て値に変換するマクロ?

「フォーマット」というフォルダの中に、 001.xlsx~200.xlsxまで連番のエクセルファイルが入っています。 各ブックの中には「確認用」という統一した名称のシートが1枚だけ入っており、 全て書式は一緒です。 それぞれ別のブックを参照する数式が入っているのですが、 ファイル単体で各所にメールで送るため、数式を全て値に変換したいのです。 「確認用」シートを全選択(ctrl+Aと同じ意味)コピーして値で貼りつけて保存して閉じるという動作を フォルダ内の全ファイルに対して一括で行うために効率良い方法はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

No1です。以下のように修正します。 修正前 Workbooks.open fPass & buf 修正後 Workbooks.open Filename:=fPass & buf, UpdateLinks:=0

tanapyondai
質問者

お礼

ありがとうございます! 途中止まらずにすべてのファイルに適用できました。 非常に助かりました。

その他の回答 (1)

回答No.1

フォルダはマクロ記載のブックと同一フォルダにあると仮定します。 Sub Sample() Dim buf As String Dim fPass as String fPass=Thisworkbook.pass & "\フォーマット\" buf = Dir(fPass & "*.xls") Do While Len(buf) > 0 Workbooks.open fPass & buf Worksheets("確認用").Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Workbooks(buf).save Workbooks(buf).close buf = Dir() Loop End Sub

tanapyondai
質問者

お礼

ありがとうございます。 .pass → .path と直していいですよね? ほぼやりたい事は実現しました。 しかし、標準モジュールに貼りつけてマクロを実行すると 「このブックには、ほかのデータソースへのリンクが含まれています。」 と聞かれてしまうので毎回「更新しない」をクリックしないと先に進みません。 ここを省略する事はできないでしょうか?

関連するQ&A