Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


38518 / 76738 ←次へ | 前へ→

【43355】シートがあればコピーする方法
質問  成田  - 06/10/11(水) 12:11 -

引用なし
パスワード
   初めまして。成田と申します。

現在、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 を使用しない方法をとりたいと考えています。(ファイルの保存に失敗した場合などに困るので・・)

お手数をおかけいたしますが、よろしくお願いします。

0 hits

【43355】シートがあればコピーする方法 成田 06/10/11(水) 12:11 質問
【43356】Re:シートがあればコピーする方法 ハチ 06/10/11(水) 12:40 回答
【43377】Re:シートがあればコピーする方法 成田 06/10/12(木) 11:57 お礼
【43378】Re:シートがあればコピーする方法 成田 06/10/12(木) 11:59 発言

38518 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free