投稿時間:2003/05/14(Wed) 15:56 投稿者名:aoiyuki
Eメール:
URL :
タイトル:EXCELの行の削除方法(すでに他のEXCELが立ち上がっている場合)
はじめまして。aoiyukiと申します。 VBのヘルプやここの過去掲示板を見てもわからないことがありましたので、 ご存知の方がいらっしゃれば教えてください。
環境:Win98SE VB6.0(SP5) EXCEL2000(SP2) 処理概要:VBよりEXCELのテンプレートを開き、SQLSERVERより取得した データを表示し、空白行を削除する。
下記に実際のPRGの抜粋を掲載しますが、他のEXCELが立ち上がっていない 状態では、問題のDelete部分もきちんと動作します。 ただ、他のEXCELデータが立ち上がっていると、うまくDeleteができません。 ちなみに変数(LoActiveSheet)を使わずに、実際のパスで指定してもだめ でした。 何か他のところに問題があるのでしょうか? どうかよろしくお願いします。
Dim LsXLSFile As String 'ファイル名 Dim LsSQL As String Dim LrRec As Recordset Dim LuExcel As Excel.Application Dim LoActiveBook As Workbook '対象ブック Dim LoActiveSheet As Worksheet '対象シート Dim LlRow As Long
'エクセルアプリケーション起動 On Error Resume Next Set LuExcel = GetObject(, "Excel.Application") If Err <> 0 Then Set LuExcel = CreateObject("Excel.Application") End If Err.Clear
LsSQL = "" LsSQL = "EXEC P_DL85 " Set LrRec = PF_OpenResultset(LsSQL) If LrRec Is Nothing Then Exit Function End If
'EXCELファイル名 LsXLSFile = MCs_XLSPath & "\" & MCsXLSFile 'データ出力 With LuExcel 'テンプレートオープン .Workbooks.Open App.Path & "\" & "DL85.xlt" Set LoActiveBook = .ActiveWorkbook
'対象シートオープン LoActiveBook.Worksheets("MEISAI").Select Set LoActiveSheet = .ActiveSheet '★ここでSQLSERVERより取得したデータをEXCELに表示していますが長いので割愛★
'出力行以下のレイアウト設定を削除 LoActiveSheet.Range(Cells(LlRow, 1), Cells(1000, 30)).Delete ←問題の部分 'ファイル保存 .Application.DisplayAlerts = False '上書き確認ダイアログは表示しない LoActiveBook.Activate .ActiveWorkbook.SaveAs FileName:=LsXLSFile .Application.DisplayAlerts = True 'エクセルアプリケーションクローズ On Error GoTo Err_Handle LoActiveBook.Close Set LoActiveSheet = Nothing Set LoActiveBook = Nothing Set LuExcel = Nothing '既にEXCELが起動していた場合はそのままとする If .Workbooks.Count > 0 Then .Visible = True .Application.WindowState = xlMinimized Else .Application.Quit End If End With
|