[[20190801174829]] 『ファイル操作のマクロで、ポップアップを開かない』(猫熊) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ファイル操作のマクロで、ポップアップを開かないように実行する』(猫熊)

フォルダ内のすべてのExcelブックについて、「報告書」という名前のシートを新規ブックにコピーというマクロ(https://www.moug.net/tech/exvba/0060003.html)を使わせてもらってます。素晴らしいのですが、これだとソースのファイルを開いては閉じていく度に、ポップアップ・ウィンドウがその(更新された)ファイルを保存するかを聞いてきます。そこで、保存しないを毎回クリックする必要があります。これを自動的に保存しないでソース・ファイルを閉じていくようにできないでしょうか?

ウェブからの抜粋コードを少しだけ改良するだけでいいのです、シートのコピーを自動で実行する全く新しいコードでもかまいません。わかる方、お願いします。

Sub Sample()

    Dim sFile As String
    Dim sWB As Workbook, dWB As Workbook
    Dim dSheetCount As Long
    Dim i As Long
    Const SOURCE_DIR As String = "C:\Data\Source\"
    Const DEST_FILE As String = "C:\Data\AllReports.xls"

    Application.ScreenUpdating = False

    '指定したフォルダ内にあるブックのファイル名を取得
    sFile = Dir(SOURCE_DIR & "*.xls")

    'フォルダ内にブックがなければ終了
    If sFile = "" Then Exit Sub

    '集約用ブックを作成
    Set dWB = Workbooks.Add

    '集約用ブック作成時のシート数を取得
    dSheetCount = dWB.Worksheets.Count

    Do
        'コピー元のブックを開く
        Set sWB = Workbooks.Open(Filename:=SOURCE_DIR & sFile)

        'コピー元の「報告書」シートを集約用ブックにコピー
        sWB.Worksheets("報告書").Copy After:=dWB.Worksheets(dSheetCount)

        'シート名をセルA1の値に変更
        ActiveSheet.Name = Range("A1").Value

        'コピー元ファイルを閉じる
        sWB.Close

        '次のブックのファイル名を取得
        sFile = Dir()
    Loop While sFile <> ""

    '集約用ブック作成時にあったシートを削除
    Application.DisplayAlerts = False
    For i = dSheetCount To 1 Step -1
        dWB.Worksheets(i).Delete
    Next i
    Application.DisplayAlerts = True

    '集約用ブックを保存して閉じる
    dWB.SaveAs Filename:=DEST_FILE
    dWB.Close

    Application.ScreenUpdating = False
End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


リンクが壊れていたので、こちらが正解 https://www.moug.net/tech/exvba/0060003.html
(猫熊) 2019/08/01(木) 18:06

 sWB.Close
 を
 sWB.Close SaveChanges:= False
(seiya) 2019/08/01(木) 18:10

seiyaさん。こんなに簡単なんですね。できました。
まだ慣れていないので、簡単すぎる質問ですみませんでした。
(猫熊) 2019/08/02(金) 21:56

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.