2010年10月19日 星期二

VB.net EXCEL 跨頁籤(Sheet)複製表格內容

建議將EXCEL以早期繫結( early binding)的方式來做引用
Dim xlsExcel As New Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet
Dim xlsRange As Excel.Range
xlsBook = xlsExcel.Workbooks.Open(My.Application.Info.DirectoryPath & "\file.xls")
xlsExcel.DisplayAlerts = False


為求處理上之效率,我們假設將已經有完備格式的Source頁籤,拷貝多份套入個別的數據。
假設要5份,分成複製套表5份,實際內容5份,共計10份。
複製後,將儲存內容的頁籤刪除
刪除頁籤時,別忘了頁籤若有內容,EXCEL會提醒,為避免程式無法遂行刪除作業,記得將 DisplayAlerts = False即可


For Each PP In DocNeedTelphoneInfo

'複製頁籤
xlsSheet = xlsExcel.Sheets("Source")
xlsSheet.Copy(xlsSheet)
xlsExcel.Sheets("Source (2)").Name = PP.Name & "A" '修改頁籤名稱

'跨頁籤拷貝資料內容
xlsSheet = CType(xlsBook.Worksheets(PP.Name), Excel.Worksheet)
'決定要拷貝的範圍
xlsRange = xlsSheet.Range("A6:O" & XlsCellCountList.Item(TargetI) + 6)
xlsRange.Copy()
xlsSheet = CType(xlsBook.Worksheets(PP.Name & "A"), Excel.Worksheet)
xlsRange = xlsSheet.Range("A6:O" & XlsCellCountList.Item(TargetI) + 6)
'貼上
xlsRange.PasteSpecial(Excel.XlPasteType.xlPasteAll, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, False, False)
'畫框線
xlsRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous
'解除之前的選取狀態
xlsRange = xlsSheet.Range("A6")
xlsRange.Select()


'刪除
xlsExcel.Sheets(PP.Name).delete()
'修改
'xlsExcel.Sheets(PP.Name & "A").Name = PP.Name '修改頁籤名稱
xlsExcel.Sheets(PP.Name & "A").Name = "d" & PP.Name '修改頁籤名稱

沒有留言:

張貼留言

追蹤者