fbpx

Vbscript hmi report xuất file Excell báo cáo

69 / 100

1- Tổng quan

Source mẫu của Siemens hỗ trợ khá chi tiết, giúp bạn dễ dàng thiết lập việc xuất dữ liệu ra file Excell hay đọc dữ liệu từ file Excell vào

Tất nhiên vbscript chỉ hỗ trợ với 1 số dòng HMI cấp cao của Siemens như các dòng Comfort, Unified… các dòng Basic thì không hỗ trợ.

Việc thiết lập giao diện và tagname thì mình sẻ không bàn thêm vì khi tìm tới đây bạn đã quá rành việc đó, mình chỉ giải thích thêm một chút về đoạn code để cùng hiểu rõ hơn:

Dưới dây là code áp dụng cho màn hình HMI Siemens môi trường Window CE, code cho máy tính cơ bản giống vậy, chỉ khác về khai báo 1 số chức năng do môi trường Win11 nó khác, nên bạn đừng hỏi tại sao code này load về chạy trên máy tính không được nhé.

2- Code Write:

Sub Write_data()
‘KHAI BÁO BIẾN
‘Dim thì hiển nhiên là để khai báo biến trong VBS rùi
Dim fo
Dim path
Dim mode
Dim delimiter
Dim gap
Const NEU=0

‘KHỞI TẠO GIÁ TRỊ
mode=8 ‘Mode này gồm: 1 = ForReading (mở file chỉ cho phép đọc, không thể ghi)
                                        ‘ 2 = ForWriting (mở file chỉ cho phép ghi xuống, xóa và ghi lại toàn bộ file, không thể đọc)
                                        ‘ 8 = Append (mở file cho phép ghi xuống tiếp ở dòng cuối file, không thể đọc)

‘CHỌN THƯ MỤC LƯU FILE
If SmartTags(“bExtension”) =0 Then
path =”\Storage Card SD\datafile.txt” ‘chọn lưu dạng txt vào thẻ nhớ, bạn có thể chọn file định dạng .txt hay .csv hay .xls
delimiter=vbTab ‘ký tự tab để tạo khoảng cách khi ghi
gap=vbTab
Else
path =”\Storage Card USB\datafile.csv” ‘ chọn lưu dạng csv vào USB, bạn có thể chọn file định dạng .txt hay .csv hay .xls
delimiter=”;” ‘ ký tự ; để tạo khoảng cách dữ liệu khi ghi
gap=””
End If

‘ Khi lỗi xảy ra ở đâu sẻ chuyển đến câu lệnh ngay sau câu lệnh mà lỗi xảy ra và quá trình thực thi tiếp tục
On Error Resume Next

‘Đây là cấu trúc gọi trình quản lý file mà WinCE hỗ trợ
Set fo= CreateObject(“FileCtl.File”)

‘Nếu lỗi xảy ra khi gọi trình quản lý file sẻ xuất ra Alarm bằng lệnh ShowSystemAlarm mô tả lỗi, và thoát khỏi Sub vbs này.
If Err.Number<> 0 Then
ShowSystemAlarm “Error # ” & CStr(Err.Number)& ” “& Err.Description
Err.Clear
Exit Sub
End If

‘Nếu gọi trình quản lý file thành công và không lỗi thì tiến hành mở file theo link file là path, mode là chế độ mở đã quy định ở trên
fo.open path,mode

‘Nếu lỗi xảy ra khi mở file thì sẻ xuất ra Alarm bằng lệnh ShowSystemAlarm mô tả lỗi, và thoát khỏi Sub vbs này.
If Err.Number<> 0 Then
ShowSystemAlarm “Error # ” & CStr(Err.Number)& ” “& Err.Description
Err.Clear
Exit Sub
End If

‘Kiểm tra xem nếu file mở là trống thì sẻ ghi dòng đầu tiên của file
If fo.LOF = NEU Then
fo.LinePrint(“Date” & gap & gap & delimiter & “Material” & delimiter & “Presure” & delimiter & “Temperature” & delimiter)
End If

‘Ghi dữ liệu vào file
fo.LinePrint(Now & delimiter & SmartTags(“szMaterial”) & gap & delimiter & SmartTags(“iPressure”) & delimiter & SmartTags(“iTemperature”) & delimiter)

‘Đóng file và hoàn tất việc ghi dữ liệu
fo.Close

‘Nhả đối tượng quản lý file ra để có thể sử dụng ở Vbs khác
Set fo = Nothing

ShowSystemAlarm “Storage of data was successful!” ‘ Thông báo hoàn tất quá trình xuất dữ liệu ra
End Sub

3- Code Đọc dữ liệu từ file lên Read

Sub Read_Data()
‘KHAI BÁO BIẾN
‘Dim thì hiển nhiên là để khai báo biến trong VBS rùi
Dim fo
Dim path
Dim mode
Dim delimiter
Dim data
Dim splitdata

‘KHỞI TẠO GIÁ TRỊ
mode=1 ‘Mode này gồm: 1 = ForReading (mở file chỉ cho phép đọc, không thể ghi)
                                        ‘ 2 = ForWriting (mở file chỉ cho phép ghi xuống, xóa và ghi lại toàn bộ file, không thể đọc)
                                       ‘ 8 = Append (mở file cho phép ghi xuống tiếp ở dòng cuối file, không thể đọc)

‘CHỌN THƯ MỤC LƯU FILE
If SmartTags(“bExtension”) =0 Then
path =”\Storage Card SD\datafile.txt” ‘chọn file lưu dạng txt ở thẻ nhớ
delimiter=vbTab ‘ký tự tab để xác định khoảng cách giá trị đọc
Else
path =”\Storage Card USB\datafile.csv” ‘ chọn file lưu dạng csv ở USB
delimiter=”;” ‘ký tự ; để xác định khoảng cách giá trị đọc
End If

‘Khi lỗi xảy ra ở đâu sẻ chuyển đến câu lệnh ngay sau câu lệnh mà lỗi xảy ra và quá trình thực thi tiếp tục
On Error Resume Next

‘Đây là cấu trúc gọi trình quản lý file mà WinCE hỗ trợ
Set fo= CreateObject(“FileCtl.File”)

‘Nếu lỗi xảy ra khi gọi trình quản lý file sẻ xuất ra Alarm bằng lệnh ShowSystemAlarm mô tả lỗi, và thoát khỏi Sub vbs này.
If Err.Number<> 0 Then
ShowSystemAlarm “Error # ” & CStr(Err.Number)& ” “& Err.Description
Err.Clear
Exit Sub
End If

‘Nếu gọi trình quản lý file thành công và không lỗi thì tiến hành mở file theo link file là path, mode là chế độ mở đã quy định ở trên
fo.open path,mode

‘Nếu lỗi xảy ra khi mở file thì sẻ xuất ra Alarm bằng lệnh ShowSystemAlarm mô tả lỗi, và thoát khỏi Sub vbs này.
If Err.Number<> 0 Then
ShowSystemAlarm “Error # ” & CStr(Err.Number)& ” “& Err.Description
Err.Clear
Exit Sub
End If

‘Đọc dữ liệu từ file
While fo.EOF = False
data=fo.LineInputString
Wend

‘Gán dữ liệu đọc được vào tags hmi
data=Replace(data,vbTab & vbTab,delimiter)
splitdata=Split(data,delimiter)
SmartTags(“szDate”)=splitdata(0)
SmartTags(“szString_1”)= splitdata(1)
SmartTags(“iValue_1”)=splitdata(2)
SmartTags(“iValue_2”)=splitdata(3)

‘Đóng file
fo.Close

‘Nhả đối tượng quản lý file ra để có thể sử dụng ở Vbs khác
Set fo = Nothing

ShowSystemAlarm “Reading of data was successful!”‘ Thông báo hoàn tất quá trình đọc dữ liệu
End Sub

hmi

4- DOWNLOAD CODE MẪU

DOWNLOAD SOURCE FILE WITH TIA V15.1

 408 total views

Leave a Reply

Your email address will not be published. Required fields are marked *

0378029298

DMCA.com Protection Status