tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル SheetやBookのコピー後の処理
投稿日: 2009/07/01(Wed) 13:53
投稿者ケイ
度々申し訳ございませんが質問させてください。
SheetやBookをコピーした後の処理についてご教示お願い致します。

<抜粋>
 If Len(RetShtName) = 0 Then
   '同名Sheetがなければ「原紙」と言うSheetを同一Book内にコピーする
   xlBook.Worksheets("原紙").Copy after:=xlBook.Worksheets("原紙")
   'コピーして出来た新しいSheetのSheet名を変更する
   xlBook.ActiveSheet.Name = TgtShtName

   '★質問1:出来たSheetを現在は「xlBook.ActiveSheet」で指定して
        Sheet名を変更してるのですが、コピーして出来た新Sheetを
        確実に指定するにはどうすればいいのでしょうか?
        (コピーして出来た新sheetが必ずActiveではないかも
         しれないと懸念しています。)

 Else
   '同名シートがあれば、別ブックにコピーする。
   xlBook.Worksheets(RetShtName).Copy
   'コピーして出来た新ブックをPathとファイル名を指定して保存
   xlApp.ActiveWorkbook.SaveAs FileName:="C:\重複〜ExcelTextControl.xls"

   '★質問2:質問1と同等の質問なのですが、出来たBookを現在は
        「xlApp.ActiveWorkbook」で指定して保存場所とファイル名を指定して
        保存してるのですが、
        コピーして出来た新Bookを確実に指定するにはどうすればいいので
        しょうか?
        (これもまた、コピーして出来た新Bookが必ずActiveではないかも
         しれないと懸念しています。)

      (以下省略〜詳しくは下の全記述を参照ください)

尚、このプログラムとは無関係な他のExcelBookも複数開いている場合を想定したいです。


Option Explicit
Private TgtShtName As String
Private RetShtName As String
-----------------------
Private Sub Form_Load()
'参照設定:Microsoft Excel 11.0 Object Library

Dim xlApp   As Excel.Application
Dim xlBook  As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim ObjSht  As Excel.Worksheet
Dim n As Integer

    TgtShtName = "MySheet"
    
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("C:\ExcelTextControl.xls")
    Set xlSheet = xlBook.Worksheets(1)
        
        xlApp.Visible = True
        
        For n = 1 To xlBook.Worksheets.Count
          If xlBook.Worksheets(n).Name = TgtShtName Then
            RetShtName = xlBook.Worksheets(n).Name
            Exit For
          End If
        Next
        
        If Len(RetShtName) = 0 Then
            '同名Sheetがなければ「原紙」と言うSheetを同一Book内にコピーする
            xlBook.Worksheets("原紙").Copy after:=xlBook.Worksheets("原紙")
            'コピーして出来た新しいSheet(原紙)のSheet名を変更する
            xlBook.ActiveSheet.Name = TgtShtName
        Else
            '同名シートがあれば、別ブックにコピーする。
            xlBook.Worksheets(RetShtName).Copy
            'コピーして出来た新ブックをPathとファイル名を指定して保存
            xlApp.ActiveWorkbook.SaveAs FileName:="C:\重複〜ExcelTextControl.xls"
            '重複してたシートを削除
            xlBook.Worksheets(RetShtName).Delete
            '上書き保存
            xlBook.Save
            '終了
            End
         End If
        
    Set xlSheet = Nothing
    xlBook.Close
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing
End Sub

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。