VBA 发票数据解析

2019-08-01 14:27:19 浏览数 (1)

本小程序只适用于,解析TXT文件中保存的发票扫码结果数据!

活不多说!直接上源码:

代码语言:javascript复制
''******************************************************************************
''****************更多精彩内容请关注公众号:<VB小源码>***************************
''****************QQ群:344402874   *********************************************
''******************************************************************************
''------------------------------------------------------------------------------

Public C() As String  ''数组定义

Public RI As IRibbonUI  ''UI事件

Public RC As IRibbonControl  ''UI控制


''UI顶级事件
Sub app_load(Ribbon As IRibbonUI)

    On Error Resume Next
    
    RI = Ribbon
    
    Ribbon.ActivateTab ("tab_app")
    
    Application.StatusBar = "本程序由<巴西_prince>编写并发布!更多精彩内容请关注公众号:<VB小源码>"  ''状态栏

End Sub

(左右滑动查看完整代码)

代码语言:javascript复制

''发票数据解析
Sub FP_DATA(Control As IRibbonControl)

    On Error GoTo er
    
    Erase C  ''清空数组
    
    FP_CL Control ''清空数据
    
    Dim path As String  ''文件路径
    
    path = get_path  ''获取文件路径
    
    If path = "false" Then MsgBox "请选择TXT文本文件", vbInformation, "提示": Exit Sub  ''判断是否已经选取文件路径
    
    Dim str() As String  ''定义文本数组
    
    Open path For Input As #1  ''读取TXT文本
    
    str = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbLf)  ''取TXT文本每行数据
    
    Close 1  ''关闭TXT文件
    
    C = str ''赋值给数据C
    
    For I = 0 To UBound(str)  ''遍历数组
        
        Dim arr() As String, tmp As String
        
        tmp = str(I)  ''取数组中的元素
        
        If tmp <> "" Then  ''判断是否为空
        
            arr = Split(tmp, ",")  ''分割数组元素数据
            
            Dim J As Integer
            
            J = I   2
            
            With Sheets("工作区")  ''操作工作表
            
                .Range("A" & J).Value = J - 1 ''序号
            
                .Range("B" & J).Value = Format(arr(5), "@@@@-@@-@@")  ''开票日期
                
                .Range("C" & J).Value = arr(2) ''发票代码
                
                .Range("D" & J).Value = arr(3) ''发票号码
                
                .Range("E" & J).Value = arr(4) ''不含税金额
                
                .Range("G" & J).Value = "=E" & J & "*F" & J ''含税金额
                
                .Range("H" & J).Value = "=E" & J & "*(1 F" & J & ")" ''价税合计
            
            End With
        
        End If
    
    Next
    
    
    Exit Sub
    
er:  ''错误跳转
    
    MsgBox "发生错误啦!" & vbCrLf & Err.Description, vbCritical, "错误"
    
End Sub


''关于窗体
Sub FP_GY(Control As IRibbonControl)

    On Error Resume Next
    
    UserForm1.Show 1  ''显示关于窗体
    
End Sub



''获取文件路径
Function get_path() As String

    On Error Resume Next

    get_path = Application.GetOpenFilename("Text Files (*.txt), *.txt")  ''选取文件路径,取消返回false
    
End Function

(左右滑动查看完整代码)

代码语言:javascript复制

''填充税率
Sub FP_SL(Control As IRibbonControl)

    On Error Resume Next
    
    Dim sl As String
    
slh:
    
    sl = InputBox("请输入税率;" & vbCrLf & "如:16%", "税率输入")  ''输入税率
    
    If InStr(sl, "%") > 0 Then  ''判断格式
    
    Else
    
       MsgBox "输入格式不正确请重新输入", vbCritical, "警告"
    
       GoTo slh   ''格式不正确则跳转提示继续输入
    
    End If
    
    ''*******************************
     
    For I = 0 To UBound(C)  ''填充税率
        
        Dim tmp As String
        
        tmp = C(I)
        
        If tmp <> "" Then
        
            Dim J As Integer
                
            J = I   2
                
            With Sheets("工作区")
                
                .Range("F" & J).Value = Val(Split(sl, "%")(0)) / 100   ''计算税率
                
            End With
        End If
            
    Next
    
    
End Sub



''清空和设置单元格格式
Sub FP_CL(Control As IRibbonControl)

    With Sheets("工作区")
    
        .Range("A2:H1000").ClearContents  ''清空工作区
        
        .Columns("B:D").NumberFormatLocal = "@"  ''设置B到D列为文本格式
        
        .Columns("E:E").NumberFormatLocal = "0.00_);[红色](0.00)"  ''设置E列为数字格式病保留两位小数点
        
        .Columns("F:F").NumberFormatLocal = "0%"  ''设置F列为百分比格式
        
        .Columns("G:H").NumberFormatLocal = "0.00_);[红色](0.00)"   ''设置G到H列为数字格式病保留两位小数点
    
     End With
    
End Sub

(左右滑动查看完整代码)

代码语言:javascript复制
第一篇文章的vba工程代码为:vbxym

谢谢关注与支持!


0 人点赞