欢迎投稿

今日深度:

机房管理系统——vb与excel链接2,机房管理系统

机房管理系统——vb与excel链接2,机房管理系统excel


    由于我之前找的文档让我以为在创建表里面走了很大的误区,所以当时我直接就在学生管理系统的文件夹里建了张表,运行时候直接打开这样表就行了。但是这里面还是存在着很大的误区。

     后来我看了周坤的博客感觉他比我的代码优化了好多。我代码里面的好多问题都在他这里面得到解决。(ORZ!!!我做了一下午,忽然有种白做的感觉。)

“导出为excel”这个按钮大体就是点击按钮便创建一张表,然后把myflexgrid写到表格里面。

先看一下我的代码的问题:

 

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列不为空的最大行数。
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2631.html NewsArticle 机房管理系统——vb与excel链接2,机房管理系统excel 由于我之前找的文档让我以为在创建表里面走了很大的误区,所以当时我直接就在学生管理系统的文件夹里建了张表,运行时候直接...
评论暂时关闭