首页 > 解决方案 > 使用 For 循环选择 Access 中的特定字段并将它们粘贴到 Excel

问题描述

我制作了一个特定的访问表单,其中包含许多具有相同名称的字段,只有末尾的数字发生了变化。我有名为“Code1”、“Code2”、“Code3”等的字段。我想将表单视图中的字段粘贴到 Excel 单元格。大约有150个字段,我不想一一添加。

我制作了一个打开 Excel 模板的按钮,并制作了一个 For 循环,但我被卡住了。这是这样的想法:

Set MyXL = CreateObject("Excel.Application")

        With MyXL

        .Application.Visible = True
        .Workbooks.Open "F:\0. Main\01.Templates\Order.xltx"


        Dim broj As Variant
        broj = UCase(ID)

        Dim Kod As Variant
        Dim Tip As Variant
        Dim Kolic As Variant

        For i = 1 To 30

   -------> Kod = Code(i).Value
            .Worksheets("Sheet1").Cells(11 + i, 2).Value = Kod

   -------> Tip = Type(i).Value
            .Worksheets("Sheet1").Cells(11 + i, 3).Value = Tip

   -------> Tip = Qty(i).Value
            .Worksheets("Sheet1").Cells(11 + i, 3).Value = Kolic

        Next i

我不知道如何在 For 循环中包含 FieldName + (number)

标签: excelvbams-access

解决方案


请检查是否可以将整个记录集直接粘贴到 Excel 的范围内(将根据需要从 L2 开始覆盖):

.Worksheets("Sheet1").Cells(12, 2).CopyFromRecordset

如果这可行,您可能需要在粘贴之前清除范围:

.Worksheets("Sheet1").Range("L2:N100000").ClearContent

如果这没有帮助,您可能希望循环访问 Access 中的记录集,例如:

Set rs = CurrentDb.OpenRecordset("WhatEver", dbOpenDynaset)
If Not (rs.BOF And rs.EOF) Then
    rs.MoveFirst
    i = 1
    Do
        ... = rs.Fields("Code" & i).Value
        ...
        rs.MoveNext
        i = i + 1
    Loop Until i > 30 ' or Until rs.EOF
End If

推荐阅读