Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

回复 加入收藏帖  复制
我要提问 帖子上移

关于Excel 导入的表中有空行,如何导入时按上条数据自动填充

yuayua 等级: 一星会员 积分:2 金币:80 来自:深圳Access交流中心 发表于:2021-01-11 18:23:08  
楼主

从其它软件导出一份销售明细,其中包含了主表与子明细表表,但是主表销售编号只显示一行,余下用空行来表示明细表属于哪个销售编号,现在想从主表选择部分字段,明细表选择部分字段导入到ACCESS的表中,同样就会出现空行,分别导入再合并,明细表又没有销售编号,在Excel 中手动填充的话几万条太费时间,请师傅们帮个忙想想指点下点击下载此附件,不胜感激!

 

access培训  诚聘access开发人员

    yuayua
      获得社区协助:请教问题(即发帖)20篇,其中获得解决的15篇;
      协助社区成员:协助他人(即回帖)12篇,其中被设为【最佳答案】的3篇;
      协助我们社区:发布技术文章2篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
Top

扫描下方工作人员的微信二维码加微信,邀您加入Access课堂微信群,进入一个技术交际圈:

网站工作人员微信

vious 等级:普通会员 积分:30 金币:0 来自:成都Access交流中心 发表于2021/1/11 19:52:39 
1楼 得分: 0

建议:

1.采用主、子表,主表导入A:Q列;子表导入A、R:X列;再采用外键查询即可;主表导入时判断R列是否有数据,无数据时表示主表导入完成。

2.只用一个表的话,循环中判断为空,即导入上面有数据的列即可;

以上均采用VBA实现



    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    vious
      获得社区协助:请教问题(即发帖)0篇,其中获得解决的0篇;
      协助社区成员:协助他人(即回帖)65篇,其中被设为【最佳答案】的12篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
西出阳关无故人 等级:版主★★★★★ 积分:703 金币:120 来自:安顺Access交流中心 发表于2021/1/12 15:16:08 
2楼 得分: 0

无论在excel端,还是在access端对数据进行处理(给每行都添加单据编号),都要用vba进行循环.貌似在excel端的代码更简单.

excel端代码

Private Sub CommandButton1_Click()
    Dim djbh
    For i = 3 To Me.UsedRange.Rows.Count
        If Cells(i, 1) <> "" Then
            djbh = Cells(i, 1)
        Else
            Cells(i, 1) = djbh
        End If
    Next i
End Sub

运行上述代码后,在access端进行导入.当然这种方式不适应经常经常从其他软件导出数据并导入access的情况.




    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    西出阳关无故人
      获得社区协助:请教问题(即发帖)19篇,其中获得解决的11篇;
      协助社区成员:协助他人(即回帖)958篇,其中被设为【最佳答案】的264篇;
      协助我们社区:发布技术文章3篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
西出阳关无故人 等级:版主★★★★★ 积分:703 金币:120 来自:安顺Access交流中心 发表于2021/1/12 16:05:48 
3楼 得分: 0

在access端处理也不难,点击下载此附件:

一个窗体,一个按钮(Command0):

Private Sub Command0_Click()
    Dim pName
    With Application.FileDialog(3)
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Excel 文件", "*.xls*"
      '  .Filters.Add "所有", "*.*"
        If .Show Then
            For Each pName In .SelectedItems
                inputData pName
            Next
        End If
    End With
End Sub


Function inputData(pName)
    Dim Conn As New ADODB.Connection
    Dim Rec As New ADODB.Recordset 'Excel表记录集
    Dim Rst As New ADODB.Recordset 'acc表记录集
    Dim i
    Dim DJBH    '单据编号
    Dim DJRQ
    Dim KHQC
    Dim JSR
    Dim SKRQ
    Dim rows As Long    'Excel的行数,条件是Excel表格不能有空行.
    Conn.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 8.0;imex=1';data source=" & pName
    Rec.Open "select * from [销售出库单$]", Conn, adOpenStatic, adLockReadOnly
    rows = Rec.RecordCount
    Rec.Close
    Set Rec = New ADODB.Recordset
    Rec.Open "select * from [销售出库单$a2:au" & rows + 1 & "]", Conn, adOpenStatic, adLockReadOnly

    Rst.Open "select * from 销售明细", CurrentProject.Connection, adOpenStatic, adLockPessimistic
    For i = 1 To Rec.RecordCount
        With Rst
            .AddNew
            If Rec("单据编号") <> "" Then
                DJBH = Rec("单据编号")
                DJRQ = Rec("单据日期")
                KHQC = Rec("客户全称")
                JSR = Rec("经手人")
                SKRQ = Rec("收款日期")
            End If
            .Fields("单据编号") = DJBH
            .Fields("单据日期") = DJRQ
            .Fields("客户全称") = KHQC
            .Fields("经手人") = JSR
            .Fields("收款日期") = SKRQ
            .Fields("商品编号") = Rec("商品编号")
            .Fields("商品名称") = Rec("商品名称")
            .Fields("商品规格") = Rec("商品规格")
            .Fields("批号") = Rec("批号")
            .Fields("数量") = Rec("数量")
            .Fields("含税单价") = Rec("含税单价")
            .Fields("含税金额") = Rec("含税金额")
            .Update
        End With
        Rec.MoveNext
    Next i
    Rec.Close
    Rst.Close
    DoCmd.OpenTable "销售明细"
End Function




    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    西出阳关无故人
      获得社区协助:请教问题(即发帖)19篇,其中获得解决的11篇;
      协助社区成员:协助他人(即回帖)958篇,其中被设为【最佳答案】的264篇;
      协助我们社区:发布技术文章3篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
胡大威 等级:普通会员 积分:0 金币:0 来自:驻马店Access交流中心 发表于2021/1/13 21:59:11 
4楼 得分: 0
我觉得吧,这个还是把EXCEL做为连接表导入ACCESS后,然后用追加查询新增数据比较方便,写代码太麻烦。追加查询的时候加一个条件,限制为空值的时候不导入就行了。

    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    胡大威
      获得社区协助:请教问题(即发帖)10篇,其中获得解决的8篇;
      协助社区成员:协助他人(即回帖)2篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
总记录:4篇  页次:1/1 9 1 :
您还没有在Access软件网登录不能回复帖子
  • 你没有登录,请点击后面链接登录:登录
  • 如果你没有注册,请点击后面链接注册:注册,注册完成后,请再次访问本页功能。