微软Office有基于VBA的宏,而ONLYOFFICE则更进一步,有了基于JavaScript的宏,提供了更大的灵活性。在本文中,我们将展示ONLYOFFICE宏中的一些,这些宏是传统的基于VBA的宏的有力替代品。

什么是 JavaScript 宏?
宏是自动执行任务的强大工具。ONLYOFFICE使用JavaScript创建宏,涵盖文档、电子表格、演示文稿和OFORM编辑。这些 JavaScript 宏允许用户自动执行任务,增强文档功能,并根据自己的需要定制 ONLYOFFICE 应用程序。
为什么需要 VBA 宏的替代方案?
利用编写自定义 JavaScript 宏的能力,您可以实现自动化、交互性以及与外部系统的无缝集成:
自动化:JavaScript 宏使用户能够在文档中自动执行格式设置、数据操作和计算等任务。
交互性:宏可以响应用户操作或事件,使文档更具交互性。
自定义:用户可以根据自己的具体需求定制ONLYOFFICE应用程序的行为。
集成:JavaScript 宏允许与外部系统和服务集成,实现 ONLYOFFICE 与其他平台之间的数据交换和通信。
鉴于ONLYOFFICE宏使用JavaScript,除了其灵活性之外,JavaScript还是一种非常流行的语言,拥有一个充满活力的社区。我们有大量的教程,为如何使用 JavaScript 完成各种任务提供全面指导。此外,我们还提供了详细的文档,对您可以在 JavaScript 宏中使用的方法进行了清晰的解释。
Excel VBA 宏与 ONLYOFFICE JavaScript 替代工具的比较
高亮显示选中的重复内容
Excel VBA 宏如下:
Sub HighlightDuplicateValues()
Dim myRange As Range
Dim myCell As Range
Set myRange = Selection
For Each myCell In myRange
If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then
myCell.Interior.ColorIndex = 36
End If
Next myCell
End Sub
与 VBA 对应程序不同,我们的替代程序提供了更高级的功能,用独特的颜色突出显示重复值:
(function ()
{
// Background color of cells with non-repeating values
var whiteFill = Api.CreateColorFromRGB(255, 255, 255);
// The current index of the color range
var uniqueColorIndex = 0;
// Color range to highlight duplicate values
var uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),
Api.CreateColorFromRGB(204, 204, 255),
Api.CreateColorFromRGB(0, 255, 0),
Api.CreateColorFromRGB(0, 128, 128),
Api.CreateColorFromRGB(192, 192, 192),
Api.CreateColorFromRGB(255, 204, 0)];
// Function to get color for duplicates
function getColor() {
// If you have chosen all the unique colors, then let's go from the beginning
if (uniqueColorIndex === uniqueColors.length) {
uniqueColorIndex = 0;
}
return uniqueColors[uniqueColorIndex++];
}
// Getting an active sheet
var activeSheet = Api.ActiveSheet;
// Getting selection on the active sheet
var selection = activeSheet.Selection;
// Map of values in cells with the duplicates number
var mapValues = {};
// All cells range
var arrRanges = [];
// Going through the selection
selection.ForEach(function (range) {
// Getting value from cell
var value = range.GetValue();
if (!mapValues.hasOwnProperty(value)) {
mapValues[value] = 0;
}
mapValues[value] += 1;
arrRanges.push(range);
});
var value;
var mapColors = {};
// We go through all the cells of the selection and setting the highlighting if this value is repeated more than 1 time
for (var i = 0; i < arrRanges.length; ++i) {
value = arrRanges[i].GetValue();
if (mapValues[value] > 1) {
if (!mapColors.hasOwnProperty(value)) {
mapColors[value] = getColor();
}
arrRanges[i].SetFillColor(mapColors[value]);
} else {
arrRanges[i].SetFillColor(whiteFill);
}
}
})();

取消隐藏所有行和列
此 VBA 脚本可取消隐藏电子表格中的所有行和列:
Sub UnhideRowsColumns()
Columns.EntireColumn.Hidden = False
Rows.EntireRow.Hidden = False
End Sub
而 JavaScript 宏也可以做到这一点:
(function()
{
var activeSheet = Api.ActiveSheet;
var indexRowMax = 1048576;
var n = 1;
for (let i = 0; i < indexRowMax; i++) {
activeSheet.GetRows(n).SetHidden(false);
n++;
}
var newRange = activeSheet.GetRange("A1");
newRange.SetValue("All the rows and columns are unhidden now");
})();

您还可以通过将该宏中的 SetHidden 参数设置为 true 来隐藏所有行和列:
(function()
{
var activeSheet = Api.ActiveSheet;
var indexRowMax = 1048576;
var n = 1;
for (let i = 0; i < indexRowMax; i++) {
activeSheet.GetRows(n).SetHidden(true);
n++;
}
var newRange = activeSheet.GetRange("A1");
newRange.SetValue("All the rows and columns are hidden now");
})();
如果你需要更高级的功能,我们在另一篇博文中详细介绍了一个宏,它允许你隐藏/取消隐藏特定的行和列。
突出显示大于值
下面的 VBA 版本可以突出显示大于值:
Sub HighlightGreaterThanValues()
Dim i As Integer
i = InputBox("Enter Greater Than Value", "Enter Value")
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreater, Formula1:=i
Selection.FormatConditions(Selection.FormatConditions.Count).S
tFirstPriority
With Selection.FormatConditions(1)
.Font.Color = RGB(0, 0, 0)
.Interior.Color = RGB(31, 218, 154)
End With
End Sub
同样的任务可以通过 ONLYOFFICE JavaScript 宏来完成,甚至只需使用更少的代码行:
(function ()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
if (value > 5) {
range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));
}
});
})();

尽管代码行数较少,但我们的替代方案提供了更好的通用性。例如,通过改变 if 语句的条件,我们可以
突出显示小于的值:
(function ()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
if (value < 5) {
range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));
}
});
突出显示负数:
(function ()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
if (value < 0) {
range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));
}
});
})();
高亮显示包含特定文本的单元格:
(function ()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
if (value == 'text') {
range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));
}
});
})();
试用更多有用的 JavaScript 宏
1、为 ONLYOFFICE 电子表格中的选区添加索引的 JavaScript 宏
有时,默认索引无法满足需要。这就是我们省时的 JavaScript 宏的用武之地。它将整齐地索引选区中的所有行,使您的电子表格工作流程变得更加简单。
2、复制电子表格的 JavaScript 宏
编辑电子表格可能很棘手,尤其是在处理多个数据相似的电子表格时。为了简化这一过程,让我们创建一个 JavaScript 宏,将数据从一个电子表格复制到另一个电子表格,帮助您轻松处理大型电子表格。
3、将多个百度搜索结果插入电子表格的 JavaScript 宏
百度宏是一个多功能工具,旨在提高管理单个和多个搜索查询的效率。无论您的经验水平如何,它的用户友好型设计和适应性都会使您的工具包增色不少。
4、将超链接导入电子表格的 JavaScript 宏
超链接可以大大增强电子表格的美观性和功能性,使您可以轻松访问文档中的重要资源。这个 JavaScript 宏通过从另一个电子表格中提取链接数据来导入超链接。
5、查找公司徽标的 JavaScript 宏
由于徽标众多,如今查找徽标参考资料可能有点棘手,有可能导致混淆。然而,有了 ONLYOFFICE 宏,您就可以自动完成这一过程。这个 JavaScript 宏可以同时从外部 API 获取多个徽标原型,并将它们插入电子表格中。
6、生成基于性别的个性化问候语的 JavaScript 宏
在交流中,正确称呼他人至关重要,因为这体现了尊重、包容性和专业性。此 JavaScript 宏利用 Genderize.io API 生成正确的个性化问候语。
7、跟踪 Shopify 订单的 JavaScript 宏
在当今时代,电子商务已成为打破地域壁垒、促进源源不断的收入的重要工具。因此,管理和跟踪订单信息是成功商业战略的重要组成部分。该 JavaScript 宏可从 Shopify 检索订单数据并将其插入电子表格。
8、将 CSV 和 TXT 数据导入电子表格的 JavaScript 宏
以 CSV 格式存储表格数据在很多方面都非常实用,因此这种类型的文件非常受欢迎。ONLYOFFICE Docs 允许导入本地 CSV 和 TXT 文件。本 JavaScript 宏将帮助您解决导入远程 CSV 和 TXT 文件的问题。
9、监测空气质量数据的 JavaScript 宏
ONLYOFFICE 宏让我们的生活更轻松。它们帮助我们自动执行日常任务并处理大量数据。通过此 JavaScript 宏,您可以实时显示当前的空气质量数据。
10、用 OpenAI 数据填充单元格的 JavaScript 宏
人工智能技术已经取得了长足的进步,并成为一种可以使我们的工作流程自动化的宝贵工具。此 JavaScript 宏可使用从 OpenAI 获取的数据填充电子表格。
11、分析电子表格数据的 JavaScript 宏
虽然 ChatGPT 4 现在提供了更强大的功能,但一些用户仍然更喜欢 ChatGPT 3.5,因为它的令牌成本更低。然而,ChatGPT 3.5 缺乏文件上传功能,导致用户无法分析数据表。本 JavaScript 宏克服了这一限制,使您能够分析电子表格。
12、删除选区中重复内容的 JavaScript 宏
此 JavaScript 宏可删除电子表格选区中的重复内容。它可帮助您删除重复条目,通过简单高效的解决方案使您的数据干净准确,从而增强您的整体电子表格使用体验。
ONLYOFFICE宏是灵活而强大的工具,不仅能模仿VBA宏的功能,还能超越它们。
我们还鼓励大家利用我们的ONLYOFFICE API,创建自己的精彩宏。如果您有任何问题或想法,请随时联系我们。我们乐于与您讨论和合作。
渝公网安备50010702505508