|
初めまして。成田と申します。
現在、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 を使用しない方法をとりたいと考えています。(ファイルの保存に失敗した場合などに困るので・・)
お手数をおかけいたしますが、よろしくお願いします。
|
|