アプリ版:「スタンプのみでお礼する」機能のリリースについて

一つのフォルダーに50個のエクセルファイルがあります。
各ファイルにはAとBのシートがあります。

50個エクセルファイルのBのシートをCのシートの内容に一括で変更し、シート名はBのままにします。
VBAをはじめて使おうと試みています。

cシートは別のフォルダに保存しています。

下記のコードでいいでしょうか?
また保存するときはどうしたらいいのでしょうか?
VBAはどのエクセルファイルからコードを入力すればいいでしょうか?50個のファイルのうちの一つですか?




Sub ReplaceBSheetContentWithTemplateC()

' 必要な情報の設定
Dim FolderPath As String: FolderPath = "C:\YourFolderPath\"' あなたのフォルダのパスを変更してください
Dim TemplatePath As String: TemplatePath = "C:\YourTemplatePath\TemplateFile.xlsx"' テンプレートファイルのパスを変更してください

' 他の変数の定義
Dim FileName As String
Dim TemplateWb As Workbook
Dim TargetWb As Workbook

' テンプレートファイルを開く
Set TemplateWb = Workbooks.Open(TemplatePath)

' フォルダ内の最初のExcelファイルの名前を取得
FileName = Dir(FolderPath &"*.xls*")

' フォルダ内のすべてのExcelファイルをループで処理
Do While FileName <>""' ファイルを開く
Set TargetWb = Workbooks.Open(FolderPath &FileName)

' Bシートの内容をクリア
TargetWb.Sheets("B").Cells.Clear

' テンプレートのCシートの内容をBシートにコピー
TemplateWb.Sheets("C").Cells.Copy Destination:=TargetWb.Sheets("B").Cells

' ファイルを保存して閉じる
TargetWb.Close SaveChanges:=True

' 次のファイルの名前を取得
FileName = Dir

Loop

' テンプレートファイルを閉じる
TemplateWb.Close SaveChanges:=False

End Sub

A 回答 (2件)

Excelファイルのバックアップをとった上で、2,3のExcelファイルに対して実行して、問題がなければ、50個に対して行う。


バグのないプログラムを初めから作るのは難しい。
    • good
    • 0

こんにちは



>下記のコードでいいでしょうか?
なさりたいことが正確にはわかりかねますが、ざっと見る限り、ご提示のコードで動作すると思います。(テストはしていません)
質問する前に、テスト用のデータを作成して実行してみれば、お望みの通りかどうかはわかるのではないでしょうか?


>また保存するときはどうしたらいいのでしょうか?
保存していますよ?
>' ファイルを保存して閉じる
>TargetWb.Close SaveChanges:=True


>VBAはどのエクセルファイルからコードを入力すればいいでしょうか?
実行用のブックを作成して、そこに記述しておくのが確実だと思います。
    • good
    • 0

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

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


このQ&Aを見た人がよく見るQ&A