ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11310|回复: 4

[求助] 将EXCEL导入到ACCESS中出现字段F1不存在问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-8-11 23:42 | 显示全部楼层 |阅读模式
本帖最后由 liangguoqiang 于 2014-8-13 13:39 编辑

最近学习ACCESS,在导入EXCEL数据时,出现字段F1不存在,无法导入的错误。本人是用VBA编写程序的,导入的EXCEL见附件:
本人想吧EXCEL中的A2:A5,B3:E5导入到ACCESS表中,同时A2与A5作为字段名称,自己写得代码如下:
Private Sub Command1_Click()

    Dim fileNumber As Long
    Dim File_Name As String
    Dim i As Long
    Dim j As Long
    Dim m As Long
    Dim xlApp As New Excel.Application
    Dim xlBook As Excel.Workbook

    Set dOpen = Application.FileDialog(1)
    With dOpen
        .Filters.Clear
        .Filters.Add "MML files", "*.xlsm,*.xlsx"
        .Show
    End With

    If dOpen.SelectedItems.Count > 0 Then
    MsgBox "你选择导入" & dOpen.SelectedItems.Count & "个数据文件"
    For fileNumber = 1 To dOpen.SelectedItems.Count
    File_Name = dOpen.SelectedItems(fileNumber)
    Set xlBook = xlApp.Workbooks.Open(File_Name)
    Text3.Value = "正在导入,请稍等。。。。"
        For i = 1 To xlBook.Sheets.Count
            sheetname = xlBook.Sheets(i).Name
            If sheetname <> "高中" And sheetname <> "Index" Then
                If sheetname = "ENBFunctionTDD" Then
                j = xlBook.Application.CountA(xlBook.Sheets(i).Range("C:C"))
                m = 12
                y = Split(xlBook.Sheets(i).Cells(1, m).Address, "$")(1)
                DoCmd.TransferSpreadsheet acImport, 8, sheetname, File_Name, True, sheetname & "!B1:" & y & "1"
                DoCmd.TransferSpreadsheet acImport, 8, sheetname, File_Name, False, sheetname & "!B3:" & y & j
                Else
                j = xlBook.Application.CountA(xlBook.Sheets(i).Range("C:C"))
                m = xlBook.Application.CountA(xlBook.Sheets(i).Range("2:2"))
                y = Split(xlBook.Sheets(i).Cells(1, m).Address, "$")(1)
                DoCmd.TransferSpreadsheet acImport, 8, sheetname, File_Name, True, sheetname & "!B1:" & y & "1"
                DoCmd.TransferSpreadsheet acImport, 8, sheetname, File_Name, False, sheetname & "!B3:" & y & j
                End If
            End If
        Next   
    xlApp.Quit
    Set xlApp = Nothing
    Next
    End If

End Sub



当运行到DoCmd.TransferSpreadsheet acImport, 8, sheetname, File_Name, False, sheetname & "!B3:" & y & j   就出现F1不存在错误啦。。
原来刚开始的时候两段导入的代码都如下:
DoCmd.TransferSpreadsheet acImport, 8, sheetname, File_Name, False , sheetname & "!B1:" & y & "1"
DoCmd.TransferSpreadsheet acImport, 8, sheetname, File_Name, False, sheetname & "!B3:" & y & j

这样可以导入成功的,但是字段名称都是F1和F2之类的,,我做交叉查询不方便,后来发现修改那个FALSE为TRUE可以把第一行作为字段名称,改了之后又发现F1不存在错误。。无语了。。请求各位大侠帮忙。谢了。


text.rar

5.92 KB, 下载次数: 26

导入EXCEL文件

text(acess).zip

25.22 KB, 下载次数: 19

ACCESS文件

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-12 18:09 | 显示全部楼层
我等了一天一夜了。。怎么还没有高手帮忙啊?

TA的精华主题

TA的得分主题

发表于 2014-8-12 20:59 | 显示全部楼层
我也等一天了。在等你什么时候能把ACCESS文件放进去。你能不能把相关附件都打包圆了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-13 13:42 | 显示全部楼层
两个文件都上传啦。。高手们帮忙看看。。谢谢。。

TA的精华主题

TA的得分主题

发表于 2014-8-13 21:33 | 显示全部楼层
首先呢,你要理解那个False和True的意思,那个位置的参数是指,所选区域也就是你所先择的range区域,比如选中了5列6行,从B2:F7,作为数据源时,是否把这个所选择的区域第一行作为字段名称,如果你选的是true就表示,你第一行(即B2:F2)是字段名称,记录从第二行(即B3:F3)开始,一共只剩下5条记录了,当你设成False时,你的记录就是6行(即B2:F7),但是,系统会自动给你设一个字段名称,从第一列开始是F1、F2。。类推,所以你设成false时就出现提示说F1字段找不到,所以在你的例子中,要把出错的那句false改成True,并且第二行,要与第一行的Range是一样的,否则就会出错
希望你能明白。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 00:40 , Processed in 0.036177 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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