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

「フォーマット」というフォルダの中に、
001.xlsx~200.xlsxまで連番のエクセルファイルが入っています。
各ブックの中には「確認用」という統一した名称のシートが1枚だけ入っており、
全て書式は一緒です。

それぞれ別のブックを参照する数式が入っているのですが、
ファイル単体で各所にメールで送るため、数式を全て値に変換したいのです。

「確認用」シートを全選択(ctrl+Aと同じ意味)コピーして値で貼りつけて保存して閉じるという動作を
フォルダ内の全ファイルに対して一括で行うために効率良い方法はありますでしょうか?

A 回答 (2件)

No1です。

以下のように修正します。

修正前 Workbooks.open fPass & buf
修正後 Workbooks.open Filename:=fPass & buf, UpdateLinks:=0
    • good
    • 3
この回答へのお礼

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

お礼日時:2014/10/24 14:13

フォルダはマクロ記載のブックと同一フォルダにあると仮定します。



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
    • good
    • 0
この回答へのお礼

ありがとうございます。

.pass → .path と直していいですよね?


ほぼやりたい事は実現しました。

しかし、標準モジュールに貼りつけてマクロを実行すると

「このブックには、ほかのデータソースへのリンクが含まれています。」

と聞かれてしまうので毎回「更新しない」をクリックしないと先に進みません。
ここを省略する事はできないでしょうか?

お礼日時:2014/10/23 17:45

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

このQ&Aを見た人はこんなQ&Aも見ています