| 
    
     |  | 初めまして。成田と申します。 
 現在、Excel の VBA を使って、
 Aというシートを新規のブックにコピー
 Bという名前のシートがあれば、Aをコピーしたブックにコピー
 Cという名前のシートがあれば、Aをコピーしたブックにコピー
 D(以下同上)
 最後に、新規のブックをある場所に保存。
 という動作をさせたいと考えています。
 
 いろいろと調べてみて、次のようなVBAを組めばよいことは分かりました。
 
 Dim WSName As Worksheet
 Sheets("A").Select
 Sheets("A").Copy
 Set WSName = Worksheets("B")
 Workbooks(myfile).Activate
 If Not WSName Is Nothing Then
 Sheets(WSName).Select
 Sheets(WSName).Copy before:=Workbooks("Book1").Sheets(1)
 End If
 Set WSName = Worksheets("C")
 Workbooks(myfile).Activate
 If Not WSName Is Nothing Then
 Sheets(WSName).Select
 Sheets(WSName).Copy before:=Workbooks("Book1").Sheets(1)
 End If
 Set WSName = Worksheets("D")
 Workbooks(myfile).Activate
 If Not WSName Is Nothing Then
 Sheets(WSName).Select
 Sheets(WSName).Copy before:=Workbooks("Book1").Sheets(1)
 End If
 
 Workbooks("book1").Activate
 Sheets("A").Activate
 ChDir "\\192.168.1.1\share"
 ActiveWorkbook.SaveAs Filename:="filename", _
 FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
 ReadOnlyRecommended:=False, CreateBackup:=False
 ActiveWorkbook.Save
 
 しかしながら、B というシートが存在しない場合などには、「インデックスが有効範囲にありません」というメッセージがでて失敗してしまいます。
 そのため、On Error Resume Next を入れたところ、Book1 が作られなくなってしまいました。(何かおかしいと思うのですけれども)
 
 必ず存在する1つのシートを新しいブックにコピーし、その後はシートが存在すれば同じブックにコピーする方法について、ご教示いただけませんでしょうか。
 また、できれば、On Error Resume Next を使用しない方法をとりたいと考えています。(ファイルの保存に失敗した場合などに困るので・・)
 
 お手数をおかけいたしますが、よろしくお願いします。
 
 |  |