VB6到没有Excel的Xls

时间:2016-09-24 10:01:14

标签: excel vb6 dao

我必须将VB6应用程序中不同表单的几个Flexgrids中的数据传输到未安装excel的计算机中的.xls文件。 Openoffice,LibreOffice等安装在这些PC中。

我开发了一个通用程序,它将FlexGrid作为参数并将其数据传输到xls。此过程使用DAO。由于各种FlexGrids中的各个列包含各种数据类型,因此在过程中我将字段定义为类型" dbText"。

t.Fields.Append t.CreateField(pFlxGrd.TextMatrix(0, j), dbText)

从任何网格转移到xls工作正常。但是,问题是,对于包含数据的每个单元格,插入单引号以指示其Text类型的数据。

有没有办法删除或避免这些引用?由于数字数据将用于求和等,因此必须删除这些引号。

2 个答案:

答案 0 :(得分:0)

您可以使用Jet引擎,ODBC或accdb执行此操作。如果您使用的是64位系统,请确保从Windows \ syswow64 \ cmd中的32位cmd提示符运行它。我没有安装VB6所以这个解决方案只在vbscript中测试过,这非常相似。您只需将类型添加到dim语句中即可。

dim connExcel, connExcelStr, rsExcel, xlpath

' Get the parameter from the command line
xlpath = WScript.Arguments.Item(0)

' Create the connection
set connExcel = CreateObject("ADODB.Connection")

' Setup the connection string
' xlpath = "U:\JetExcel\data.xls"
connExcelStr = "Driver={Microsoft Excel Driver (*.xls)};"
connExcelStr = connExcelStr & "Dbq=" & xlpath & ";"
connExcelStr = connExcelStr & "FIRSTROWHASNAMES=1;"
connExcelStr = connExcelStr & "READONLY=FALSE;"
connExcelStr = connExcelStr & "CREATE_DB=""" & xlpath & """;"

' Create a workbook
WScript.echo connExcelStr
connExcel.Open connExcelStr

' Create a worksheet
sqlQuery = "create table [Sheet1] (ID Number, FirstName Text, LastName Text)"
WScript.echo sqlQuery
set rsExcel = connExcel.Execute(sqlQuery)

' Put data into the worksheet
sqlQuery = "insert into [Sheet1] (ID, FirstName, LastName) values"
sqlQuery = sqlQuery & "(1, 'Humpty', 'Dumpty')"
WScript.echo sqlQuery
set rsExcel = connExcel.Execute(sqlQuery)

' Close workbook
connExcel.Close
set connExcel = nothing

如果脚本名为xxx.vbs,则创建Excel工作表

cscript xxx.vbs test.xls

答案 1 :(得分:-2)

从一段时间后复制vbForums中显示的flexgrid(不带引号)的数据有一个更快的解决方案 - 这种方法的优势在于它们的工作速度非常快,与发送/携带数据单元相比细胞

Private Sub FlexToExcel()
Dim xlObject    As Excel.Application
Dim xlWB        As Excel.Workbook

Set xlObject = New Excel.Application 

'This Adds a new woorkbook, you could open the workbook from file also
Set xlWB = xlObject.Workbooks.Add 

Clipboard.Clear 'Clear the Clipboard
With MSFlexGrid1
    'Select Full Contents (You could also select partial content)
    .Col = 0               'From first column
    .Row = 0               'From first Row (header)
    .ColSel = .Cols - 1    'Select all columns
    .RowSel = .Rows - 1    'Select all rows
    Clipboard.SetText .Clip 'Send to Clipboard
End With

With xlObject.ActiveWorkbook.ActiveSheet
    .Range("A1").Select 'Select Cell A1 (will paste from here, to different cells)
    .Paste              'Paste clipboard contents
End With

' This makes Excel visible
xlObject.Visible = True
End Sub

有关详细信息,请参阅THIS链接。