Access交流中心

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

子窗体查询结果导出Excel,Excel中有一列的数据是通过前两列计算得出的求如何操作

血染疆场  发表于:2017-10-13 22:14:58  
复制

已完成代码如下,access中一个窗体查询结束后通过一个按钮导出Excel,Excel中的K列是数字格式,表示时间长度,单位是月,L列表示一个日期,格式是中日期,M列的数据access表中没有,希望通过代码向Excel中的M列导入一个公式,L列的日期加上K列的月数得到的结果是一个日期或者数字.
Private Sub 汇总到押品移交台账_Click()
    Dim rs As DAO.Recordset
    Dim objxls As Object
    Dim N As Long
    Dim strCode As String
    Dim lngTSales As Long
    Dim lngTSTock As Long
If IsNull(Me.贷款品种) Then
    Set rs = CurrentDb.OpenRecordset("SELECT 总查询.* FROM 总查询 ORDER BY 总查询.序号;")
Else
    Set rs = CurrentDb.OpenRecordset("SELECT 总查询.* FROM 总查询 WHERE (((总查询.[品种-贷款品种]) = '" & Me.贷款品种 & "')) ORDER BY 总查询.序号;")
End If
rs.MoveFirst
N = 5
Set objxls = CreateObject("excel.Application")
objxls.Workbooks.Add
objxls.Visible = True
With objxls.Sheets("Sheet1")
    .Range("AE1:AF1").MergeCells = True
    .Range("A1:A2,B1:B2,C1:C2,D1:D2,E1:E2,F1:F2,G1:G2,H1:H2,I1:I2,J1:J2 ,K1:K2 , L1: L2 , M1: M2 , N1: N2 , O1: O2 , P1: P2 , Q1: Q2 , R1: R2 , S1: S2,T1:T2,U1:U2,V1:V2,W1:W2,X1:X2,Y1:Y2,Z1:Z2,AA1:AA2,AB1:AB2,AC1:AC2,AD1:AD2,AG1:AG2,AH1:AH2,AI1:AI2").MergeCells = True
    .Range("A1,J1,K1,S1,T1").ColumnWidth = 5
    .Range("B1,C1,D1,E1,G1,H1,I1,L1,M1,N1,O1,P1,Q1,U1,V1,W1,X1,Y1,Z1,AA1,AB1,AC1,AD1,AG1,AH1,AI1").ColumnWidth = 10
    .Range("F1,R1").ColumnWidth = 25
    .Range("AE1:AF1").ColumnWidth = 10
    .Range("A1") = "序号"
    .Range("B1") = "二级机构名称"
    .Range("C1") = "机构名称"
    .Range("D1") = "产品名称"
    .Range("E1") = "楼盘或项目名称"
    .Range("F1") = "贷款项目号"
    .Range("G1") = "借款人"
    .Range("H1") = "客户号"
    .Range("I1") = "贷款账号"
    .Range("J1") = "合同金额"
    .Range("K1") = "贷款期限"
    .Range("L1") = "贷款发放日"
    .Range("M1") = "贷款到期日"
    .Range("N1") = "贷款余额"
    .Range("O1") = "担保人"
    .Range("P1") = "担保合同号"
    .Range("Q1") = "押品名称"
    .Range("R1") = "押品地址"
    .Range("S1") = "押品面积"
    .Range("T1") = "押品权利价值"
    .Range("U1") = "押品状态"
    .Range("V1") = "备案登记编号"
    .Range("W1") = "房产证编号"
    .Range("X1") = "他项权证编号"
    .Range("Y1") = "承保公司"
    .Range("Z1") = "保费金额"
    .Range("AA1") = "保单号码"
    .Range("AB1") = "移交押品管理岗日期"
    .Range("AC1") = "移交档案管理部门日期"
    .Range("AD1") = "退换押品日期"
    .Range("AE1") = "变更日期"
    .Range("AF1") = "变更说明"
    .Range("AG1") = "备注"
    .Range("AH1") = "经办人"
    .Range("AI1") = "复核"
    .Range("AE1:AF1") = "押品变更记录"
    With .Range("A1:AI2")
      .Font.Bold = True   '设为粗体
      .HorizontalAlignment = xlCenter
      .VerticalAlignment = xlCenter
      .Borders.LineStyle = xlContinuous
    End With
    Do While rs.EOF = False
        .Range("A" & N) = rs("序号")
        .Range("B" & N) = rs("支行-所属支行")
        .Range("D" & N) = rs("品种-贷款品种")
        .Range("E" & N) = rs("开发商")
        .Range("F" & N) = rs("项目号")
        .Range("G" & N) = rs("借款人")
        .Range("H" & N) = rs("客户号")
        .Range("I" & N) = rs("贷款账号")
        .Range("J" & N) = rs("金额-借款金额(万元)")
        .Range("K" & N) = rs("期限-借款期限(月)")
        .Range("L" & N).NumberFormatLocal = "yyyymmdd"
        .Range("L" & N) = rs("放款日期")
        .Range("R" & N) = rs("押品地址")
        .Range("S" & N) = rs("面积-押品面积(m2)")
        .Range("T" & N) = rs("总价-交易总价")
        .Range("W" & N) = rs("房产证号")
        .Range("X" & N) = rs("他项号")
         rs.MoveNext
        N = N + 1
    \Loop
With .Range("A3:AI" & N - 1)
       .Borders.LineStyle = xlContinuous
      End With
End With
objxls.ActiveWorkbook.SaveAs FileName:=CurrentProject.Path & "\" & Me.年度 & "" & Me.所属支行 & " " & Me.贷款品种 & "押品移交台帐.xls"
Set objxls = Nothing
End Sub


拜谢大神

 

Top
仙来 发表于:2017-10-15 07:36:10
  1. 1, Set rs = CurrentDb.OpenRecordset("SELECT 总查询.*,dateadd("m",[表中间隔月],[表中的日期])as 表达日期 FROM 总查询 WHERE (((总查询.[品种-贷款品种]) = '" & Me.贷款品种 & "')) ORDER BY 总查询.序号;")
  2.  2, .Range("M" & N) = rs("表达日期")


血染疆场 发表于:2017-10-15 18:03:12
运行报错啊老师,就在dateadd函数那里,说语法错误

仙来 发表于:2017-10-17 12:12:45

On Error GoTo err
Dim rs As DAO.Recordset
Dim objxls As Object
Dim N As Long
 Dim strWhere As String  '定义条件字符串
 Dim sql As String
  strWhere = ""    '设定初始值-空字符串
 If Not IsNull(Me.Text) Then
   strWhere = strWhere & "([贷款品种] like '*" & Me.Text & "*') AND "
    End If
  If Not IsNull(Me.Text2) Then
   strWhere = strWhere & "([所属支行] like '*" & Me.Text2 & "*') AND "
    End If
  '如果输入了条件,那么strWhere的最后肯定有" AND ",这是我们不需要的,
    '要用LEFT函数截掉这5个字符。
    If Len(strWhere) > 0 Then
        '有输入条件
        strWhere = Left(strWhere, Len(strWhere) - 5)
       
    End If
  sql = "SELECT 总表.*,dateadd('m',NZ([借款期限]),[操作日期]) as 到期日 FROM 总表 " _
        & "WHERE(" & strWhere & ")"
 If IsNull(Me.Text) And IsNull(Me.Text2) Then

Set rs = CurrentDb.OpenRecordset("SELECT 总表.*,dateadd('m',NZ([借款期限]),[操作日期]) as 到期日 FROM 总表 ORDER BY 总表.操作日期;")
Else
Set rs = CurrentDb.OpenRecordset(sql)
End If
rs.MoveFirst
N = 5
Set objxls = CreateObject("excel.Application")
objxls.Workbooks.Add
objxls.Visible = True

With objxls.Sheets("Sheet1")
    .Range("A1:A4,B1:B4,C1:C4,D1:D4,E1:F2,E3:E4,F3:F4,G1:G4,H1:H4,I1:I4").MergeCells = True
    .Range("E1").ColumnWidth = 4
    .Range("a1,B1,F1,I1,H1").ColumnWidth = 14
    .Range("C1,G1").ColumnWidth = 8
    .Range("D1,E1:F1").ColumnWidth = 18
    .Range("A1") = "序号"
    .Range("B1") = "二级机构名称 "
    .Range("C1") = "机构名称"
    .Range("D1") = "贷款项目号"
     .Range("E1:F1") = "押品变更纪录"
     .Range("E3") = " 变更日期"
     .Range("F3") = " 变更说明"
      .Range("G1") = " 备注"
  
      .Range("H1") = "借款期限(月)"
      .Range("I1") = " 到期日"
    With .Range("A1:I4")
      .Font.Bold = True   '设为粗体
      .HorizontalAlignment = -4108
      .VerticalAlignment = -4108
      .Borders.LineStyle = xlContinuous
      .Font.Color = -16776961
      .Font.Name = "华文隶书"
      .Font.Size = 12

    End With
'    Do While rs.EOF = False
    Do While Not rs.EOF
        .Range("A" & N) = rs("操作日期")
        .Range("A" & N).NumberFormatLocal = "yyyy-m-d"
        .Range("B" & N) = rs("贷款品种")
        .Range("C" & N) = rs("所属支行")
        .Range("D" & N) = rs("所属柜员")
        .Range("E" & N) = rs("放款日期")
        .Range("F" & N) = rs("项目号")
        .Range("G" & N) = rs("批注")
         .Range("H" & N) = rs("借款期限")
          .Range("H" & N).NumberFormatLocal = "0_);(0)"
       
        .Range("I" & N) = rs("到期日")
         .Range("I" & N).NumberFormatLocal = "yyyy-m-d"
         rs.MoveNext
        N = N + 1

    Loop
  
    With .Range("A5:I" & N - 1)
       .Borders.LineStyle = xlContinuous

    End With
End With
objxls.ActiveWorkbook.SaveAs FileName:=CurrentProject.Path & "\导出测试" & Format(Date, "YYYY-MM-DD") & ".xls"
Set objxls = Nothing
err: Exit Sub

经测试成功。

但表设计字段不能有(),比喻:借款期限 ,可以在标题中:借款期限(月)



血染疆场 发表于:2017-10-17 18:09:36



总记录:4篇  页次:1/1 9 1 :