EXCEL报表制作方法之一 点击:1000 | 回复:5



成功在于每天

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 49回
  • 年度积分:1
  • 历史总积分:106
  • 注册:2015年11月07日
发表于:2016-02-14 15:41:21
楼主

1、采用DDE把需要的实时数据加入EXCEL表格

2、把EXCEL表格的内容整点写入ACCESS,作为报表数据库

代码如下:

Dim cnn As New ADODB.Connection

    Dim rs As New ADODB.Recordset

    Dim myPath As String

    Dim myTable As String

    Dim SQL As String

    myPath = ThisWorkbook.Path & "\test.accdb"

    myTable = "表1"

    On Error GoTo errmsg

    cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & myPath '连接数据库

    

    '生成数据库不存在记录的SQL语句

    SQL = "select a.* from [Excel 12.0;Database=" & ActiveWorkbook.FullName & "].[Sheet1$" & Range("a1").CurrentRegion.Address(0, 0) _

        & "] a left join " & myTable & " b on a.时间=b.时间 where b.时间 is null"

    Set rs = New ADODB.Recordset

    rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic

    

    '插入数据库不存在记录

    If rs.RecordCount > 0 Then '如果工作表中含有数据库不存在记录

        SQL = "insert into " & myTable & " " & SQL '插入新记录SQL语句

        cnn.Execute SQL

        

   

    '关闭连接释放内存

    rs.Close

    cnn.Close

    Set rs = Nothing

    Set cnn = Nothing

    Exit Sub

errmsg:

    MsgBox Err.Description, , "错误报告"

3、制作EXCEL查询模板,在WINCC打开此EXCEL即可。

查询代码:

Private Sub CommandButton1_Click()

Dim conn As Object

Dim Sql$

Dim qp1, qp2

 

Rows("6:21").Select

Selection.ClearContents

   

Set conn = CreateObject("ADODB.Connection")

conn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;imex=1';data source=" & ThisWorkbook.FullName

qp1 = Format(DTPicker1.value, "yyyy-mm-dd" & " " & Format(DTPicker2.value, "HH:mm:ss"))

qp2 = Format(DTPicker3.value, "yyyy-mm-dd" & " " & Format(DTPicker4.value, "HH:mm:ss"))

 

Sql = "SELECT * FROM  form  WHERE ID BETWEEN # " & CDate(qp1) & " # AND #" & CDate(qp2) & " #"

Set conn = CreateObject("adodb.connection")

With conn

 .Provider = "microsoft.ACE.oledb.12.0"

  .ConnectionString = "Data Source =d:\a.mdb"

   .Open

   End With

 

 Sheet1.[a6].CopyFromRecordset conn.Execute(Sql)

  conn.Close

  Set conn = Nothing

End Sub





成功在于每天

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 49回
  • 年度积分:1
  • 历史总积分:106
  • 注册:2015年11月07日
发表于:2016-02-14 15:43:15
1楼

这个方法的好处就是:

如果你能把组态软件的实时数据交互到EXCEL,那么就能做成EXCEL报表。

zfking1990

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:509
  • 注册:2012年2月04日
发表于:2018-05-11 12:26:17
2楼
能不能教教我!万分感激!

朴哥学工控

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 156回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2019年2月26日
发表于:2019-03-29 16:06:42
3楼

能不能教教我!万分感激!

lin5979

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1783回
  • 年度积分:0
  • 历史总积分:148
  • 注册:2003年9月12日
发表于:2019-07-18 15:12:14
4楼

能不能教教我!万分感激!

fengge11

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 254回
  • 年度积分:0
  • 历史总积分:177
  • 注册:2013年12月25日
发表于:2023-07-26 18:59:32
5楼

牛皮啊



热门招聘
相关主题

官方公众号

智造工程师