タイトル | : SheetやBookのコピー後の処理 |
記事No | : 13790 |
投稿日 | : 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
|