VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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


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

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -