機房管理系統——vb與excel連結2,機房管理系統excel
由於我之前找的文檔讓我以為在建立表裡面走了很大的誤區,所以當時我直接就在學生管理系統的檔案夾裡建了張表,運行時候直接開啟這樣表就行了。但是這裡面還是存在著很大的誤區。
後來我看了周坤的部落格感覺他比My Code最佳化了好多。我代碼裡面的好多問題都在他這裡面得到解決。(ORZ!!!我做了一下午,忽然有種白做的感覺。)
“匯出為excel”這個按鈕大體就是點擊按鈕便建立一張表,然後把myflexgrid寫到表格裡面。
先看一下My Code的問題:
|
Set xlApp = CreateObject("Excel.Application") '建立EXCEL應用類 |
|
xlApp.Visible = True '設定EXCEL可見 |
1. |
Set xlBook = xlApp.Workbooks.Open(App.Path & "\建立 Microsoft Excel 工作表.xls") '開啟EXCEL活頁簿 |
|
Set xlSheet = xlBook.Worksheets(1) '開啟EXCEL工作表 |
|
xlSheet.Activate '啟用工作表 |
2. |
xlSheet.Cells(1, 1) = myflexgrid.TextMatrix(0, 0)……'給單元格1行駛列賦值………… |
|
xlBook.RunAutoMacros (xlAutoOpen) '運行EXCEL中的啟動宏 |
- 之前我已經定義了,而我這行代碼是開啟已有的活頁簿,但是,add這個方法就是建立一個新活頁簿。新活頁簿將成為當前表的活動活頁簿。(我之前一直以為add是新增內容的意思)
- 這行代碼我只能控製表的第一行第一列,如果顯示幾十行怎麼辦?通過看系統裡面代碼可以用迴圈來完成。
下面看一下我今天看到的代碼:
Dim xlsAppAs Excel.Application '定義Excel程式
DimxlsBook As Excel.Workbook '定義活頁簿
DimxlsSheet As Excel.Worksheet '定義工作表
|
Dim i As Long |
|
Dim j As Long |
SetxlsApp = CreateObject("Excel.Application") '建立應用程式
Set xlsBook = xlsApp.Workbooks.Add |
建立一個新活頁簿。新活頁簿將成為當前表的活動活頁簿。 |
SetxlsSheet = xlsBook.Worksheets(1) '設定應用表
With xlsApp
.Rows(1).Font.Bold = True |
如何在設定excel中的字型進行設定 |
End With
'把myflexgrid.Rows的內容寫入到電子錶格中
For i = 0 To myflexgrid.Rows - 1 |
很好的利用了迴圈語句 |
For j = 0 To myflexgrid.Rows - 1 |
|
xlsSheet.Cells(i + 1, j + 1) = "'" & myflexgrid.Rows.TextMatrix(i, j) |
’通過我上面寫的可以明顯的總結出這個規律 |
Next j
Next i
xlsApp.Visible = True '顯示電子錶格
'xlsSheet.PrintOut preview:=True '進入預覽列印頁面
' xlsBook.SaveAs App.Path & "\Test.xls" '儲存路徑和檔案名稱 |
要是點一下就出現一張表這樣也太麻煩了,而且檔案名稱字還是一樣的。所以我覺得這段代碼有點多餘。 |
SetxlsApp = Nothing '釋放控制權
這樣做出來的效果比我做的好得多。
拓展:(excel更多操作)
1)顯示當前視窗:
2)更改Excel標題列:
ExcelID.Caption:=' |
應用程式調用MicrosoftExcel'; |
3)添加新活頁簿:
4)開啟已存在的活頁簿:
|
ExcelID.WorkBooks.Open('C:\Excel\Demo.xls'); |
5)設定第2個工作表為使用中工作表:
ExcelID.WorkSheets[2].Activate; |
或ExcelID.WorkSheets['Sheet2'].Activate; |
6)給單元格賦值:
|
ExcelID.Cells[1,4].Value:='第一行第四列'; |
7)設定指定列的寬度(單位:字元個數),以第一列為5例:
|
ExcelID.ActiveSheet.Columns[1].ColumnsWidth:=5; |
8)設定指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例:
|
ExcelID.ActiveSheet.Rows[2].RowHeight:=1/0.035;//1厘米 |
9)在第8行之前插入分頁符:
|
ExcelID.WorkSheets[1].Rows[8].PageBreak:=1; |
10)在第8列之前刪除分頁符:
|
ExcelID.ActiveSheet.Columns[4].PageBreak:=0; |
11)指定邊框線寬度:
|
ExcelID.ActiveSheet.Range['B3:D4'].Borders[2].Weight:=3; 1-左 2-右 3-頂4-底 5-斜(\) 6-斜(/) |
12)清除第一行第四列單元格公式:
|
ExcelID.ActiveSheet.Cells[1,4].ClearContents; |
13)設定第一行字型屬性:
|
ExcelID.ActiveSheet.Rows[1].Font.Name:='隸書'; |
|
ExcelID.ActiveSheet.Rows[1].Font.Color =clBlue; |
|
ExcelID.ActiveSheet.Rows[1].Font.Bold :=True; |
|
ExcelID.ActiveSheet.Rows[1].Font.UnderLine:=True; |
vb讀取一個excel的資料,然後複製到另一個excel2裡,並把excel2的名稱按照時間儲存具體,見補充
on error resume next
'開啟錯誤捕捉,出現錯誤,進入下一行
dim myapp as object
dim wk1 as object,wk2 as object
set myapp=CreateObject("Excel.Application")
myapp.enableevents=false
'取消EXCEL程式響應事件
myapp.calculation=-4135
'取消公式自動更新
myapp.visible=false
‘取消EXCEL程式顯示
set wk1=myapp.workbooks.open("E:\REPORT.XLS",,1)
'唯讀開啟對應的表格
if wk1 is nothing then
msgbox "開啟工作表出現錯誤!" & chr(10) & err.description
exit sub
'如果開啟工作薄錯誤,則退出程式
endif
err.clear
set wk2=myapp.workbooks.add
’新增空白工作薄
wk1.sheets("sheet1").cells.copy
’複製內容
wk2.sheets("sheet1").range("a1").PasteSpecial -4163 'xlpastevalues
'首先先粘貼資料內容
wk2.sheets("sheet1").range("a1").PasteSpecia -4122 ' xlpasteformats
‘再粘貼儲存格格式
wk2.saveas "D:\" & format(now(),"YYYYMMDDHH") & ".xls"
’儲存工作表
wk2.close 0
wk1.close 0
set wk2=nothing
set wk1=nothing
set myapp=nothing
'關閉工作薄,釋放對象
excel中用VB代碼從sheet1複製內容到sheet2
沒有具體的說明,我只能自己舉個例子自己答了:
Sheet1 A列尋找資料值>5的儲存格(假設只有一個),並複製到sheet2中B1儲存格。
Dim i As Long
For i = 1 To Sheets("Sheet1").[A65535].End(xlUp).Row
If Sheets("Sheet1").Cells(i,1) > 5 Then
Sheets("Sheet2").Cells(1,2) = Sheets("Sheet1").Cells(i,1)
End If
Next i
Sheets("Sheet1").[A65535].End(xlUp).Row用來擷取A列不為空白的最大行數。