ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: fclyjzyk

plxmm[求助]求代码:如何把vfp中的.dbf数据格式保存为.xls格式

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-22 11:11 | 显示全部楼层
QUOTE:
以下是引用qee用在2006-6-13 16:49:07的发言:

还有,你的机器上装没装VFP.
看看数据源驱动里有没有Microsoft  FoxPro VFP Driver(*.dbf)

我刚下载了一个vfp6.0,不用安装就能使用的那种,不知道可不可以。

请问在哪里能看到数据源驱动呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-22 11:52 | 显示全部楼层

可以运行了,只是运行后提示文件不存在,真是冤枉,怎么会不存在呢?

我的文件名是“*200505.dbf”,*代表2到3个文字

提示如下:

        

QUOTE:

运行时错误'-2147217865(80040e37)';

         [Microsoft][ODBC Visual FoxPro Driver] File 'xx.dbf' does not exist.

[此贴子已经被作者于2006-6-22 12:42:57编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-22 12:26 | 显示全部楼层

谁知道代码中的"select * from xx"是什么意思?   xx是什么?

刚才查看了一下帮助文件,应当属于Source参数吧,帮助文件太难懂了,不知道为什么要写成"select * from xx"

[此贴子已经被作者于2006-6-22 12:37:07编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-22 13:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
把 "select * from xx" 中的 xx 改为你的数据库中的表名称。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-22 13:11 | 显示全部楼层
plxmm:太感谢你了,真不知说什么感谢的话好。如果将来有缘分的话,我一定请你吃饭……

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-22 13:21 | 显示全部楼层
能不能把源代码再完善一下,实现批量读取.dbf文件并另存为相同文件名的.xls文件呢?

TA的精华主题

TA的得分主题

发表于 2006-6-22 13:44 | 显示全部楼层

偶的机子没法运行与ADO相关的程序。建议参看帮助中的:

FileSearch 对象,做相关的循环处理来实现。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-22 15:48 | 显示全部楼层

由于本人功力有限,找不到合适的代码,还望高人指教。

试写代码如下(错误),请有心人改正:

'*****************************************************************

Sub a()
Dim nm As String
Set fs = Application.FileSearch
With fs
    .LookIn = "D:\ls"
    .FileType = msoFileTypeAllFiles
    If .Execute > 0 Then
        MsgBox "There were " & .FoundFiles.Count & _
            " file(s) found."
        For j = 1 To .FoundFiles.Count
       
        nm = .FoundFiles(j)
            
        Call b(nm)
       
        ActiveWorkbook.SaveAs Filename:=nm, FileFormat:=xlExcel7
       
        ActiveWorkbook.Close
                
        Next j
    Else
        MsgBox "There were no files found."
    End If
End With

End Sub

'*******************************************************************

Sub b(ByVal s As String)  '估计此处错误
Dim i%
Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset
cnn.Open "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=d:\ls;"
rst.Open "select * from s", cnn, adOpenStatic, adLockReadOnly      '想用变量s表示文件名
Cells.Clear
For i = 0 To rst.Fields.Count - 1
Cells(1, i + 1) = rst.Fields(i).Name
Next i
Cells(2, 1).CopyFromRecordset rst
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
End Sub

[此贴子已经被作者于2006-6-22 16:30:29编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-22 17:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-22 23:21 | 显示全部楼层

U9TCh9lc.rar (24.32 KB, 下载次数: 104)


Sub DBF_NEWXLS()
    Dim oConndbf, oConnxls, oResult, strSQL$, sName$
    Set oConndbf = CreateObject("ADODB.Connection")
    Set oConnxls = CreateObject("ADODB.Connection")
   
    '打开选取文件对话框,将选取的各文件全路径名存于 Filename 数组中
    Filename = Application.GetOpenFilename("dbase Files (*.dbf), " & _
                    "*.dbf", , "请选取文件", , MultiSelect:=True)
    If Not IsArray(Filename) Then Exit Sub      '如果未选取文件,则退出程序
   
    On Error Resume Next   '关闭错误开关,以跳过“已有相同文件夹存在”的错误提示
    MkDir ThisWorkbook.Path & "\Excel文件"
    On Error GoTo 0        '打开错误开关
    For Each fn In Filename
        sName = Dir(fn)
        oConndbf.Open "Driver={Microsoft Visual FoxPro Driver};" & _
                        "SourceType=DBF;SourceDB=" & Left(fn, Len(fn) - Len(sName) - 1)
        strSQL = "Select * from " & sName
        Set oResult = oConndbf.Execute(strSQL)
        Cells.Clear
        For col = 1 To oResult.fields.Count     '以上结果不包含字段名,故需循环产生
           Cells(1, col) = oResult.fields(col - 1).Name
        Next
        [a2].CopyFromRecordset oResult
       
        '产生新文件
        oConnxls.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;" & _
                        "Data Source=" & ThisWorkbook.FullName
        strSQL = "SELECT * INTO [Sheet1] IN '" & ThisWorkbook.Path & "\Excel文件\" & _
                    Left(sName, Len(sName) - 4) & ".xls' 'Excel 8.0;' FROM [临时表$]"
        Set oResult = oConnxls.Execute(strSQL)
        oConndbf.Close: oConnxls.Close
    Next
    Set oConndbf = Nothing: Set oConnxls = Nothing
    MsgBox "文件已产生在“Excel文件”文件夹下"
End Sub

EHT53oTv.rar

23.77 KB, 下载次数: 81

plxmm[求助]求代码:如何把vfp中的.dbf数据格式保存为.xls格式

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-12 01:47 , Processed in 0.046132 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表