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

タイトル [Excel]行をコピーして挿入
投稿日: 2005/01/19(Wed) 16:51
投稿者ひろぼ
[OSのVer]:WindowsXP    [VBのVer]:VB.NET 
はじめまして。
既存のEXCELシートにデータを出力する処理を書いています。
EXCELのプロセスが残ってしまう問題をこちらのサンプルを参考にして処理しました。
しかし、データ数が1ページより多い場合に「必要ページ分の行をコピーして挿入する」ようにしてい
ます。
この処理を行った場合、プロセスが残ってしまいます。
xlsRangeの設定の仕方が間違っているような気がするのですが、わかりません。
ご教授ください。

'必要ページ分の行をコピーして挿入する関数
Private Sub pCopyPaste(ByVal xlsSheet As Excel.Worksheet, _
            ByRef iStart As Integer, _        'コピー元の開始行
            ByRef iEnd As Integer, _        'コピー元の終了行
            ByVal i1PageCnt As Integer, _        '1ページ分の行数
            ByVal iCount As Integer)        '何ページ分コピーしたいか

Dim xlsCells As Excel.Range
    xlsCells = xlsSheet.Cells
    Dim xlsRange As Excel.Range = xlsSheet.Rows
    xlsRange(iStart & ":" & iEnd).Copy()
    xlsRange(iEnd + 1 & ":" & iEnd + i1PageCnt * iCount).Select()
    xlsRange(iEnd + 1 & ":" & iEnd + i1PageCnt * iCount).PasteSpecial
(Excel.XlPasteType.xlPasteAll)
    '改ページを設定しなおす処理
    xlsCells.PageBreak = Excel.XlPageBreak.xlPageBreakNone
    xlsRange(iEnd + 1).PageBreak = Excel.XlPageBreak.xlPageBreakManual
    xlsRange(iEnd / 2 + 1).PageBreak = Excel.XlPageBreak.xlPageBreakManual
    For intLoop = 1 To iCount
        xlsRange((iEnd + i1PageCnt * intLoop) + 1).PageBreak =
Excel.XlPageBreak.xlPageBreakManual
        xlsRange((iEnd + i1PageCnt * intLoop) / 2 + 1).PageBreak =
Excel.XlPageBreak.xlPageBreakManual
    Next
    xlsSheet.Select()
    MRComObject(xlsCells)            'xlsRange の開放
    MRComObject(xlsRange)            'xlsSheet の開放
End Sub

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

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