フォルダ内のすべてのワークブックからすべてのシートを取り込むマクロを開発しようとしています。その後、/保存プロンプトを表示せず、それを閉じ渡っ IEExcel VBAワークシートがワークブックにコピーされる前にワークシートが存在するかどうかをチェックします。
Folder
|---Summary Sheet.xlsm
|---Sheet 1 date1.xlsx
|---Sheet 2 date2.xlsx
etc.
マクロがコピーし、それを、ワークブックを開き、細胞外の日付へのシートの名前を変更します。名前のチェックを正しく組み込むことができないようです。私は見てきました
Test or check if sheet exists
Excel VBA If WorkSheet("wsName") Exists
しかし、コンセプトを正しく翻訳する経験がありません。
これまでのコードです。今実行すると、私は彼らが各シートを毎回チェックしていなかったということでした上記の回答に直面した問題
sheetToFind = ThisWorkbook.Sheets(1)
Sub ConslidateWorkbooks()
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Dim sheetToFind As String
Dim sheetExists As Boolean
Application.ScreenUpdating = False
Application.DisplayAlerts = False
FolderPath = Environ("userprofile") & "\Folder\"
Filename = Dir(FolderPath & "*.xlsx")
Do While Filename <> ""
Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
sheetExists = False
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Name = Sheet.Range("C4")
sheetToFind = ThisWorkbook.Sheets(1)
If sheetToFind = Sheet.Name Then
sheetExists = True
End If
If sheetExists = False Then
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Workbooks(Filename).Close False
Filename = Dir()
End If
Next Sheet
Loop
Application.ScreenUpdating = True
End Sub
'ThisWorkbook.Sheets(1)'はオブジェクトであり、 'Set'が必要です。 => 'Set sheetToFind = ThisWorkbook.Sheets(1)' ...だけでなく、 'sheetToFind = Sheet.Name'も' sheetToFind'はそのように比較できないオブジェクトです... 'sheetToFind.Name = Sheet。名前は 'そこにトリックを行う必要があります;) –
申し訳ありません私は完全に理解していません。 'Do .. sheetToFind.Name = Sheet.Name For Each Sheet ....'私は無効な修飾子エラーを受け取ります。何かを残したり、間違った場所に置いたりしましたか?名前を変更したシートを比較するためにすべてのシート名を検索できますか? – Mashical
'sheetToFind = ThisWorkbook.Sheets(1)'を 'sheetToFind = ThisWorkbook.Sheets(1).Name'に変更して、それがあなたがしたいことをしているかどうかを確認してください –