エクセルVBAの初心者です。 大量のエクセルファイル(それぞれシート複数あり)をエクセルファイルの一部のシートのみをPDFにしたいと考えています。
エクセルVBAの初心者です。 大量のエクセルファイル(それぞれシート複数あり)をエクセルファイルの一部のシートのみをPDFにしたいと考えています。 そこで、PDF編集ソフトで一斉にPDFにする前段階として、それぞれのエクセルファイルを目的のシート1つのみにするため、以下のVBAを組みましたが、それぞれエクセルファイルが開かれているものの、エクセルのシートが目的のシート(申告書データ)一つになりません。 どのように修正すればよいかご教示願います。 記 Option Explicit Sub シート削除() Dim path, fso, file, files path = "C:¥Users¥ID¥Desktop¥集計¥一覧¥” Set fso = CreateObject("Scripting.FileSystemObject") Set files = fso. GetFolder(path).files For Each file In files Dim wb As Workbook Set wb = Workbooks.Open(file) Dim WS As Worksheet Dim Target As String Target = "申告書データ" For Each WS In Worksheets If WS. Name = Target Then Application DisplayAlerts = False WS.Delete Application DisplayAlerts = True Exit For End If Next WS Call wb. Close(SaveChanges: =False) Next file End Sub
Visual Basic・36閲覧
ベストアンサー
For Each WS In Worksheets In WorksheetsだとVBA書いているブックのワークシートが対象になります。 For Each WS In Wb.Worksheets これで開いてWbにセットしたブックのワークシートが対象になります。 If WS. Name = Target Then もしシート名が「申告書データ」なら、WSを削除。という動作になっていますが申告書データを消すのですか、残すのですか。 申告書データシートを残すのであれば If not WS.Name = Target Then (もしターゲットと違う場合は、削除)と思います。 if WS.Name <> Target Then でも同じ意味です。 あと、そもそもですがエクセルから直接PDF出力できますしVBA学習するなら少し調べたらサンプル出てくるので難易度も高くないですよ。 あなたの組んだその流れから応用で組めると思います。 For Eachの中でもしシート名がTargetと同じなら、PDFを出力する、という流れですね。
質問者からのお礼コメント
ありがとうございました。 やっと前に進めました。
お礼日時:6/24 22:11