将数据附加到现有工作表的最佳方法

时间:2019-08-29 07:50:52

标签: excel opentbs tinybutstrong

我有一本工作簿,用于汇总发票数据。每个月,我数据库中的新数据都需要添加到工作表末尾的新列中。

此外,还需要手动将其他信息添加到此工作表中,因此每月无法完全重新生成工作簿。

我假设为避免完全重新生成工作簿,我需要将现有文件作为opentbs模板打开;是否有可能将opentbs合并到下一个可用列中的新数据,如果可以的话,我将标签放在哪里?我可以预先填充月份名称,然后在适当的名称下合并吗?

一种更好/更合适的方法是将数据合并到一个完全独立的(并且可能是隐藏的)工作表上,并编写一个VB宏,该宏在打开的文档上触发以将合并的数据移动到最终的静止位置吗?

2 个答案:

答案 0 :(得分:0)

Sub AddDataToEnd()
dim wb as workbook
set wb = workbooks.open("c:\test\myfile.xls") 'name and path of file
dim target as range
with wb.worksheets(1) 'assume data is to be added to first sheet
    set target = .cells(1,.usedrange.columns.count +1)
    'target is now pointing to the first unused column to the right, row 1
    target = format(date(),"mmm") 'write today's month into that cell
   'etc..
end with

答案 1 :(得分:0)

您可以使用OpenTBS合并电子表格中各列中的数据,但只能合并一行。使用block=tbs:cell。 但是实际上,由于XML中没有明确定义列,因此目前不可能真正将电子表格中的列与OpenTBS合并。

一种解决方法是在工作表中包含一行数据,并使用公式在另一张工作表中的列中显示这些数据。

由于行中有数据。这是(下面)如何通过合并块顺序插入行的示例。

此示例假定您在数据集的底部有一个用block=tbs:row定义的块'b'。

// select the sheet with data in rows
$TBS->PlugIn(OPENTBS_SELECT_SHEET, 'the_sheet');

// insert copy of block 'b' just before it and named 'bz'
$def = $TBS->GetBlockSource('b', false, true);
$def = st_replace('[b.', '[bz.', $def);
$TBS->GetBlockSource('b', false, true, $def);

// Merge bz
$TBS->MergeBlock('bz', $data);