VBでのエクセルのワークシートのコピーの仕方
◇-?VBでのエクセルのワークシートのコピーの仕方-RX-8改-10/30-09:49(155)-No.427466
▲このページのトップに戻る
427466 | VBでのエクセルのワークシートのコピーの仕方 | RX-8改 | 2007/10/30-09:49 |
メーカー名:DELL デル OS名:WindowsXp HomeEdition パソコン名:LATITUDE D520 -- 自分は、現在VBで、エクセルを操作するプログラムを作っているのですが、 VBでエクセルのワークシートをコピーする操作がうまくいきません。 プログラムは下記のようになっています。 <プログラム内容> Dim i1 As Integer Dim b1 As Boolean Dim s1 As String Dim s2 As String Dim xlBook As Object Dim obj As Object Dim WrkNam As String ' エクセルファイルを開く Set xlBook = GetObject(CurDir + "\テスト用.xls") ' ワークブックウィンドウを可視にする xlBook.Windows(1).Visible = True ' エクセルアプリを表示する 'xlBook.application.Visible = True …(あ) ' 更新するワークシート名を作成 WrkNam = "テスト用シート" ' 更新するワークシートの存在チェック b1 = False For Each obj In xlBook.worksheets If obj.Name = WrkNam Then s1 = "あったよ!ワークシート" b1 = True End If Next If b1 = False Then ' 更新するワークシートが存在しなければ xlBook.worksheets(xlBook.worksheets.Count).Copy After:=xlBook.worksheets(xlBook.worksheets.Count) …(い) xlBook.worksheets(xlBook.worksheets.Count).Name = WrkNam s1 = "なかったよ!ワークシート" End If ' 更新するワークシートをアクティブにする xlBook.worksheets(WrkNam).Activate ' テスト用のメッセージ表示 xlBook.worksheets(WrkNam).cells(1, 1).Value = s1 ' ファイルを保存 xlBook.Save ' 終了メッセージ表示 Text1.Text = "処理終了!" 処理の内容は、既存のエクセルファイルを開き、 その中から、【テスト用シート】という名前のワークシートを検索します。 ワークシートがあれば、そのワークシートに『あったよ!ワークシート』と 表示し、なければ、既存のワークシートの最後のワークシートを最後尾に コピーすることで、新規にワークシートを作成して、名前を【テスト用シート】と し、『なかったよ!ワークシート』と表示します。 このときの問題点が、【テスト用シート】ワークシートが存在せず、 ワークシートをコピーする際の処理です。 プログラム中(あ)の部分の注釈を外して、エクセルアプリを 表示させていると、ワークシートのコピー処理はうまく動くのですが、 注釈文として、エクセルアプリを表示させていない状態だと、 プログラム中(い)の部分でエラーが発生するのです。 自分としては、エクセルを表示していても、いなくても、 ワークシートのコピーができるようにしたいのですが、 どのようにすれば良いでしょうか? |
何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり
参考 | 回数 | 投稿日時 | 何か一言 |
---|