タイトル : [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 |