Excel VBA - 使用VBA创建新的格式化工作簿

Rez*_*nor 1 excel vba excel-vba

我正在尝试编写程序的最后一部分,我需要从Access文档中提取数据并将其打印到新的工作簿中.

首先,我将采用产品供应商的名称并创建一个包含每个供应商名称的工作表,然后我想循环遍历每个工作表并打印订购的每个供应商的产品.

我真的很想知道如何打开一个新工作簿并打印我的信息.

Bar*_*nka 6

由于我之前的答案被删除(被认为是"不足"),我必须提供更好的答案.

如果要从Access到Excel输出数据,则必须执行以下步骤:

  1. 创建(或打开)新工作簿
  2. 阅读您的数据
  3. 将数据写入工作簿
  4. 格式化工作簿中的数据

我将专注于数据输出,并保留格式(数据部分是复杂的...格式化很容易)

首先,您需要在Access文件中启用Excel对象:"工具"菜单>"参考".找到Microsoft Excel 12.0对象库并激活该复选框.现在您的服务中有完整的Excel库:-)

现在是数据处理的时候了.我将假设你需要创建一个新的工作簿:

public sub createExcelFile()
    dim XL as Excel.Application, WB as Excel.Workbook, WKS as Excel.Worksheet
    dim db as DAO.database, rec as DAO.recordset, f as DAO.field
    dim i as integer, j as integer

    ' Prepare your Excel stuff
    Set XL = new Excel.Application
    XL.Visible = True
    Set WB = XL.Workbooks.Add 
    WB.Activate
    Set WKS = WB.ActiveSheet ' Default: The first sheet in the newly created book

    ' Read your data here
    set db = currentdb()
    set rec = db.openrecordset("tblSampleData")

    ' A simple table that will show the data from rec
    ' i and j will be the coordiantes of the active cell in your worksheet
    with rec
        .movefirst

        ' The table headers
        i = 1
        j = 1
        for each f in .fields
            WKS.cells(i,j).value = f.name
            j = j + 1
        next f

        ' The table data
        do
            i = i+1
            j = 1
            for each f in .Fields
                WKS.cells(i,j).value = f.value
                j = j+1
            next f     
            .moveNext     
        loop until .EOF
    end with
end sub
Run Code Online (Sandbox Code Playgroud)

如果要格式化单元格,可以使用WKS.cells(i,j)(或WKS.range(...))属性.

看看我之前留下的链接(Siddarth Rout很乐意转到评论).

我希望这可以帮助你