我有密码
> lc_nmfp = GETFILE() IF LEN(ALLTRIM(lc_nmfp)) < 1 then
> MESSAGEBOX("ôàéë íå âûáðàí") RETURN endif ln_w =
> GETWORDCOUNT(lc_nmfp,"\") lc_nmf = GETWORDNUM(lc_nmfp,ln_w,"\") lc_f =
> GETWORDNUM(lc_nmf,1,".") lc_p = "" ln_i = 1 DO while ln_i < ln_w
> lc_p = ALLTRIM(lc_p)+ALLTRIM(GETWORDNUM(lc_nmfp,ln_i,"\"))+"\" ln_i
> = ln_i+1 ENDDO
>
> CREATE CURSOR tmp(H Char(12), N char(2)) CREATE CURSOR
> xlsfile(AccountName CHAR(20), TrafficSourceCommunicationName CHAR(20),
> CommunicationScheduledFor CHAR(20), CommunicationStartDate CHAR(20),
> CommunicationTemplate CHAR(20), Fromv CHAR(12), Tov CHAR(12),
> MessageId CHAR(45), SendAt CHAR(35), CountryPrefix CHAR(2),
> CountryName CHAR(16), NetworkName CHAR(21), PurchasePrice CHAR(2),
> Statusv CHAR(25), Reason CHAR(25), Action CHAR(25), ErrorGroup
> CHAR(25), ErrorName CHAR(80), DoneAt CHAR(15), Textv CHAR(254),
> MessagesCount CHAR(2), ServiceName CHAR(16), UserName CHAR(19), SeenAt
> CHAR(19), Clicks CHAR(19), PairedMessageId CHAR(19), DataPayload
> CHAR(19))
>
> IMPORT FROM lc_p+lc_f+".xls" TYPE XL8 SHEET SData
>
> SELECT H, N FROM viber_exp WHERE VAL(N) = 1
>
>
>
>
>
> oleObject=CREATEOBJECT('EXCEL.Application')
> oleObject.application.Visible= .T.
>
>
> nRow=0
>
> SCAN nRow=nRow+1 oleObject.Cells(nRow,1).Value=viber_exp.H
>
>
> oleObject.Cells(nRow,2).Value=viber_exp.N
>
> ENDSCAN
这是我的密码。在"oleObject.Cells(nRow,1).Value=viber_exp.H“行中,它返回错误:"OLE错误未知COM状态代码”,我做错了什么?
发布于 2022-05-10 14:18:53
你还没有提供任何细胞。尝试在oleObject.Workbooks.Add()之后添加CreateObject()。除了修复此错误外,这不是将数据传输到Excel的方法(.Value =.)。
相反,请使用CopyFromRecordSet或QueryTables.Add -(搜索为您处理此问题的VFP2Excel函数)。
也是从..。XL8也是不应该使用的。检查一下https://foxite.com/archives/0000153776.htm,它有点老了,现在您可以将CursorAdapter与OleDb或ODBC一起使用。ie:
Local loAccess As CursorAdapter,;
oConn As ADODB.Connection,;
oRS As ADODB.Recordset, ;
oException As Exception, ;
cConnString As String, ;
lcSheetName
lcDataSource = 'c:\myFoler\MyFile.xlsx'
lcSheetName = 'Sheet1'
cConnString = ;
'Provider=Microsoft.ACE.OLEDB.12.0;' + ;
'Data Source=' + m.lcDataSource + ';' + ;
'Extended Properties="Excel 12.0;HDR=Yes;IMEX=0"'
* Handle connections - insert connection code
Try
oConn = Createobject('ADODB.Connection')
oConn.Open(cConnString)
oRS = Createobject("ADODB.Recordset")
*!* oRS.Datasource.CursorLocation = 3 &&adUseClient
*!* oRS.Datasource.LockType = 3 &&adLockOptimistic
oRS.ActiveConnection = oConn
oCA=Createobject("CursorAdapter")
oCA.DataSourceType = "ADO"
oCA.FetchAsNeeded = .F.
oCA.Datasource = oRS
oCA.MapBinary = .T.
oCA.MapVarchar = .T.
oCA.Alias = "SampleData"
oCA.SelectCmd = "SELECT * FROM ["+m.lcSheetName+"$]"
If !oCA.CursorFill()
Local array laError[5]
Aerror(laError)
Messagebox(laError[2])
Else
Browse Normal
Endif
Catch To oException
* Replace with exception handling code here
Messagebox(oException.Message)
Endtry
https://stackoverflow.com/questions/72112628
复制相似问题