超链接可以大大增强电子表格的美观性和功能性,使您可以轻松访问文档中的重要资源。在本文中,我们将逐步指导你制作一个宏,通过从另一个电子表格中提取链接数据来导入超链接。

创建宏
首先初始化两个变量 oWorksheetA 和 oWorksheetB,分别代表文档中名为 Sheet1 和 Sheet2 的工作表。此外,我们还创建了两个空数组 title 和 links,用于存储 Sheet1 中的数据:
var oWorksheetA = Api.GetSheet("Sheet1");
var oWorksheetB = Api.GetSheet("Sheet2");
var rowIndex = 0;
var titles = [];
var links = [];
然后用 while 循环遍历 Sheet1 中的记录(本例中最多 10 行)。在循环内部,它会从 A 列和 B 列的单元格中获取值,假设 A 列包含标题,B 列包含链接。然后将这些值存储到标题和链接数组中,以供以后使用:
while (rowIndex < 10) {
var titleCell = oWorksheetA.GetRangeByNumber(rowIndex, 0); // Assuming title is in column A
var linkCell = oWorksheetA.GetRangeByNumber(rowIndex, 1); // Assuming link is in column B
var title = titleCell.GetValue();
var link = linkCell.GetValue();
titles.push(title); // Store titles in an array
links.push(link); // Store links in an array
rowIndex++; // Increment the row index for the next iteration
}
然后,我们以 Sheet2 (oWorksheetB) 中的选定区域为目标,使用 ForEach 方法遍历选定区域中的每个单元格。对于每个单元格,它都会检索单元格的值,并检查该值是否与标题数组中存储的任何标题相匹配:
var rangeB = Api.GetSelection();
rangeB.ForEach(function (cell) {
var cellValue = cell.GetValue();
// Check if the cell value matches any of the titles from the array
var index = titles.indexOf(cellValue);
});
如果发现匹配,则会从标题和链接数组中检索相应的标题和链接。它还会使用 cell.GetAddress 获取 Sheet2 中当前单元格的地址。最后,它会使用检索到的标题和链接在 Sheet2 中设置一个超链接:
if (index !== -1) {
var title = titles[index];
var link = links[index];
var address = cell.GetAddress(true, true, "xlA1", false);
// Set the hyperlink in oWorksheetB
oWorksheetB.SetHyperlink(address, link, "Api ONLYOFFICE", title);
}
整个宏如下所示:
var oWorksheetA = Api.GetSheet("Sheet1");
var oWorksheetB = Api.GetSheet("Sheet2");
var rowIndex = 0;
var titles = [];
var links = [];
while (rowIndex < 10) {
var titleCell = oWorksheetA.GetRangeByNumber(rowIndex, 0); // Assuming title is in column A
var linkCell = oWorksheetA.GetRangeByNumber(rowIndex, 1); // Assuming link is in column B
var title = titleCell.GetValue();
var link = linkCell.GetValue();
titles.push(title); // Store titles in an array
links.push(link); // Store links in an array
rowIndex++; // Increment the row index for the next iteration
}
var rangeB = Api.GetSelection();
rangeB.ForEach(function (cell) {
var cellValue = cell.GetValue();
// Check if the cell value matches any of the titles from the array
var index = titles.indexOf(cellValue);
if (index !== -1) {
var title = titles[index];
var link = links[index];
var address = cell.GetAddress(true, true, "xlA1", false);
// Set the hyperlink in oWorksheetB
oWorksheetB.SetHyperlink(address, link, "Your Description", title);
}
})
让我们运行宏,看看它是如何工作的!
我们衷心希望这个宏能成为您工具包中的宝贵财富。通过使用 ONLYOFFICE 宏,您可以提高工作效率,获得高效的自动化解决方案。
当您沉浸在宏创建中时,不要错过ONLYOFFICE API提供的机会。如果您有问题或创新想法,我们邀请您通过评论或直接交流的方式与我们分享。我们热切欢迎您的意见,并期待着与您合作的可能性。祝您在探索中取得成功!

渝公网安备50010702505508