機房管理系統——vb與excel連結2,機房管理系統excel

來源:互聯網
上載者:User

機房管理系統——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中的啟動宏

  1. 之前我已經定義了,而我這行代碼是開啟已有的活頁簿,但是,add這個方法就是建立一個新活頁簿。新活頁簿將成為當前表的活動活頁簿。(我之前一直以為add是新增內容的意思)
  2. 這行代碼我只能控製表的第一行第一列,如果顯示幾十行怎麼辦?通過看系統裡面代碼可以用迴圈來完成。

 

下面看一下我今天看到的代碼:

 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)顯示當前視窗: 

  

ExcelID.Visible:=True; 

2)更改Excel標題列: 

             ExcelID.Caption:='

應用程式調用MicrosoftExcel'; 

3)添加新活頁簿: 

 

 ExcelID.WorkBooks.Add; 

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列不為空白的最大行數。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.