注册 登录
编程论坛 VB6论坛

VB创建带模板的EXCEL

cc2191015 发布于 2015-05-08 16:50, 3002 次点击
怎么样创建带模板的EXCEL下面的程序从网上搜的不能用:
Private Sub Command1_Click()
    Dim strTemplateFile         As String
    Dim strFileName             As String
    Dim FSO                     As New FileSystemObject
    Dim excelApp                As Excel.Application
    Dim excelBook               As Excel.Workbook
    Dim excelSheet              As Excel.Worksheet
    Dim lngLineNo               As Long
    Dim i                       As Long
   
    On Error GoTo ErrHandle


    strTemplateFile = App.Path & gStrXlt & "\21.xls"
    If FSO.FileExists(strTemplateFile) Then
        MsgBox "模板文件不存在", vbCritical, Me.Caption
        Exit Sub
    End If
   
    strFileName = App.Path & gStrOther & "\新文件名" & Format(Date, "YYYYMMDD") & ".xls"
     
    If FSO.FileExists(strFileName) Then
        FSO.DeleteFile strFileName
    End If
   
    Set excelApp = CreateObject("Excel.Application")
    Set excelBook = excelApp.Workbooks.Open(strTemplateFile)
    Set excelSheet = excelBook.Worksheets(1)
   
   
    excelApp.Visible = False
    excelApp.DisplayAlerts = False         '禁止Excel提示
    excelApp.Columns("A:L").NumberFormatLocal = "@"  '设置成文本格式
   
   
    With prg
        .Max = lvData.ListItems.Count
        .Min = 0
        .Value = 0
    End With
    lngLineNo = 4        '从第四行开始写
    For i = 1 To lvData.ListItems.Count
        excelSheet.Cells(lngLineNo, 1) = lvData.ListItems(i).SubItems(1)
        excelSheet.Cells(lngLineNo, 2) = lvData.ListItems(i).SubItems(2)
        excelSheet.Cells(lngLineNo, 3) = lvData.ListItems(i).SubItems(3)
        excelSheet.Cells(lngLineNo, 4) = lvData.ListItems(i).SubItems(4)
        excelSheet.Cells(lngLineNo, 5) = lvData.ListItems(i).SubItems(5)
        lngLineNo = lngLineNo + 1
        If prg.Value < prg.Max Then
            prg.Value = prg.Value + 1
        End If
        DoEvents
    Next
    prg.Value = prg.Max
   
    With excelSheet
        .Range(.Cells(1, 1), Cells(lvData.ListItems.Count + 3, 5)).Borders.LineStyle = xlContinuous
        .Range(.Cells(1, 1), Cells(lvData.ListItems.Count + 3, 5)).Font.Size = 9
    End With
   
    excelBook.Saved = True
    excelBook.SaveAs strFileName
    '关闭Excel进程
    excelBook.Close
    excelApp.Quit
   
    Set excelBook = Nothing
    Set excelApp = Nothing
   
    MsgBox "导出完毕!" & vbCrLf & "文件路径:" & strFileName, vbInformation, Me.Caption


    On Error GoTo 0
    Exit Sub
ErrHandle:
    Call gErrList("frmFenQiQiShuRpt.cmdExport_Click", Err.Description, Err.Number, True)
End Sub
7 回复
#2
风吹过b2015-05-08 17:02
App.Path & gStrXlt & "\21.xls"

自己做一个模板吧。

这个模板,就是 除下要填的数据外,其他部分统统先做好,然后保存到这个目录,这个文件名就可以了。

程序的流程:打开这个文件,然后填充数据,然后别存为 目录文件。
#3
cc21910152015-05-08 17:05
回复 2楼 风吹过b
建立模板 就是新建个EXCEL放在这个文件下吗?试了 不能用
#4
wube2015-05-08 17:41
以下是引用cc2191015在2015-5-8 17:05:27的发言:

建立模板 就是新建个EXCEL放在这个文件下吗?试了 不能用


模板 = *.xlt
#5
cc21910152015-05-09 08:43
回复 4楼 wube
哥,还是不能用呢,是不是这个程序有什么问题?
#6
cc21910152015-05-09 09:03
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#7
风吹过b2015-05-09 21:44
很强大。
程序里,明明写的是   App.Path & gStrXlt & "\21.xls"
你干嘛要用 xlt (EXCel 模板文件)。

app.path 工程所在的目录。
gStrXlt  你自己检查一个这个变量里是什么,内容应该是 以 \ 开头,然后再几个字母。
21.xls   模板的文件名。不要想到什么 EXCEL 模板文件以 XLT 结尾。就使用标准的 XLS 结尾的文件就可以了。这个模板是相对这个程序来说的,不是相对 EXCEL 来说的。
#8
wube2015-05-11 12:43
Load *.xlt 存成 *.xls

Set xlBook = xlApp.Workbooks.Open(App.Path & "\" & "123.xlt")
...
...
xlBook.SaveAs App.Path & "\" & "123.XLS"
1