突然:マクロ付きのONLYOFFICEの新しいバージョン

重要なニュースがあります。マクロ付きのデスクトップの新しいバージョンがリリースされました。 公式ウェブサイトからダウンロードして、自分ですべてを試すことができます。



この記事では、使用しているマクロ、Microsoftマクロとの違い、およびそれらの操作方法について説明します。







マクロはどのように作成されますか?



マクロは、日常的な操作を自動化し、時間を大幅に節約できるスクリプトです。 Microsoft自身がこの概念を思いついたので、これらのスクリプトはMicrosoft Office向けであり、Windows上で実行されます。



「いつマクロを作成しますか?」という質問は非常に人気があります。 最初は、「決して。 しかし、プラグインでも同じことができます」



そのため、1年の間に、プラグインシステムは非常にクールになりました(さらに詳細に文書化されています )。 現在、プラグインを使用して新しい機能を追加しています。 たとえば、シンボルテーブル:ドキュメントエディターでは特別なシンボルが必要であり、プラグインを介して追加することは何倍も高速です。 さらに、ドキュメント、スプレッドシート、プレゼンテーションを生成および処理するためのSDKがすでに用意されています-ONLYOFFICE Document Builder。



一般に、マクロに関しては、すべてがうまく機能していることがわかりました。 そして、それはかなりうまくいった。 Document Builderを取得し、プラグインにラップして、インターフェイスに転送します。 マクロを作成して実行できるようになりました!







これで、マクロはBuilderでできることをすべて実行できます。 そのためのドキュメントはここにあります 。 私たちはすでにマクロに関する別個のドキュメントを書いています。



私たちのマクロはマイクロソフトのものとは異なります



プラグインを見たなら、すぐにそれが何であるかを推測する必要があります。 Visual BasicではなくJavaScriptで記述します。



「なぜVisual Basicではありませんが、互換性はどうですか?!」



この質問を予想し、事前に回答してください。 まず、VBAはWindows専用であり、すべてのプラットフォームがここにあります。 Microsoftに何らかのスクリプト言語があれば、喜んでサポートします。 しかし、非常に古い言語のコンパイラを記述するのは100万年前であり、その結果、マクロ(MSと同じ)を取得することは夢のようなタスクではありません。 現時点では、エディターを改善することを好みます。 さらに、jsですべての準備が整いました。



これは素晴らしい理由です。



-すべてのプラットフォームで動作します。

-本当に非常にシンプル。

-スマートスクリプトを記述することにより、プラグインとしてもマクロとしても使用できます。 もちろん、もちろん、ドキュメントビルダーのスクリプトとして。



最後の点について:マクロは実際、プラグインの特殊なケースです。 単純にインストールされたプラグインは、すべてのドキュメントで機能し(つまり、エディターに添付されます)、マクロ-特定のドキュメントでのみ機能します(つまり、ファイルに添付されます)。



では、互換性はどうでしょうか?



はい、Microsoftのマクロは単純に開かれません。 同時に、多くの人が既に代替ライブラリーで実行したい完全なマクロライブラリを持っていることを理解しています。



今のところ、最も簡単なオプションを提供できます。VBAで書かれたマクロを少し書き換えます。 おそらくこれは頭痛の種に聞こえるかもしれませんが、実際にはまったく複雑ではありません。



以下は、いくつかのセルにデータを入力する例です(範囲の合計)。 1つ目はVisual Basicを使用したMSのバリアントで、2つ目は私たちのものです。



最初の例:



Sub Example() Dim myRange Dim result Dim Run As Long  For Run = 1 To 3 Select Case Run Case 1 result = "=SUM(A1:A100)" Case 2 result = "=SUM(A1:A300)" Case 3 result = "=SUM(A1:A25)" End Select ActiveSheet.range("B" & Run) = result Next Run End Sub
      
      







第二:



 (function() { for (let run = 1; run <= 3; run++) { var result = ""; switch (run) { case 1: result = "=SUM(A1:A100)"; break; case 2: result = "=SUM(A1:A300)"; break; case 3: result = "=SUM(A1:A25)"; break; default: break; } Api.GetActiveSheet().GetRange("B" + run).Value = result; } })();
      
      







ご覧のとおり、これは非常に簡単です。



そして今、クールな例:



ここに長いスクリプトがあります
 (function() { var oSheet = Api.GetActiveSheet(); oSheet.SetName('Medal Number'); oSheet.SetColumnWidth(0, 7.57); oSheet.SetColumnWidth(1, 12.43); oSheet.SetColumnWidth(2, 32.50); oSheet.SetColumnWidth(3, 13.86); oSheet.SetColumnWidth(4, 13.86); oSheet.SetColumnWidth(5, 13.86); oSheet.SetColumnWidth(6, 13.86); var range = oSheet.GetRange('C1'); range.SetFontSize(56); range = oSheet.GetRange('B2:G29'); range.SetFontName('Calibri'); range.SetFontSize(13); range.SetFontColor(Api.CreateColorFromRGB(0, 0, 0)); range.SetAlignHorizontal('center'); oSheet.GetRange('B2').SetValue('Rank'); oSheet.GetRange('C2').SetValue('Country'); oSheet.GetRange('D2').SetValue('Gold'); oSheet.GetRange('E2').SetValue('Silver'); oSheet.GetRange('F2').SetValue('Bronze'); oSheet.GetRange('G2').SetValue('Total'); for (var nCell = 0; nCell < 25; ++nCell) { oValue = nCell + 1; oCellNumber = nCell + 3; oSheet.GetRange('B' + oCellNumber.toString()).SetValue(oValue.toString()); } oSheet.GetRange('C3:C27').SetAlignHorizontal('left'); oSheet.GetRange('C3').SetValue('USA'); oSheet.GetRange('C4').SetValue('China'); oSheet.GetRange('C5').SetValue('Great Britain'); oSheet.GetRange('C6').SetValue('Russia'); oSheet.GetRange('C7').SetValue('Germany'); oSheet.GetRange('C8').SetValue('Japan'); oSheet.GetRange('C9').SetValue('France'); oSheet.GetRange('C10').SetValue('South Korea'); oSheet.GetRange('C11').SetValue('Italy'); oSheet.GetRange('C12').SetValue('Australia'); oSheet.GetRange('C13').SetValue('Netherlands'); oSheet.GetRange('C14').SetValue('Hungary'); oSheet.GetRange('C15').SetValue('Brazil'); oSheet.GetRange('C16').SetValue('Spain'); oSheet.GetRange('C17').SetValue('Kenya'); oSheet.GetRange('C18').SetValue('Jamaica'); oSheet.GetRange('C19').SetValue('Croatia'); oSheet.GetRange('C20').SetValue('Cuba'); oSheet.GetRange('C21').SetValue('New Zealand'); oSheet.GetRange('C22').SetValue('Canada'); oSheet.GetRange('C23').SetValue('Uzbekistan'); oSheet.GetRange('C24').SetValue('Kazakhstan'); oSheet.GetRange('C25').SetValue('Colombia'); oSheet.GetRange('C26').SetValue('Switzerland'); oSheet.GetRange('C27').SetValue('Iran'); oSheet.GetRange('D3').SetValue('46'); oSheet.GetRange('D4').SetValue('27'); oSheet.GetRange('D5').SetValue('26'); oSheet.GetRange('D6').SetValue('19'); oSheet.GetRange('D7').SetValue('17'); oSheet.GetRange('D8').SetValue('12'); oSheet.GetRange('D9').SetValue('10'); oSheet.GetRange('D10').SetValue('9'); oSheet.GetRange('D11').SetValue('8'); oSheet.GetRange('D12').SetValue('8'); oSheet.GetRange('D13').SetValue('8'); oSheet.GetRange('D14').SetValue('8'); oSheet.GetRange('D15').SetValue('7'); oSheet.GetRange('D16').SetValue('7'); oSheet.GetRange('D17').SetValue('6'); oSheet.GetRange('D18').SetValue('6'); oSheet.GetRange('D19').SetValue('5'); oSheet.GetRange('D20').SetValue('5'); oSheet.GetRange('D21').SetValue('4'); oSheet.GetRange('D22').SetValue('4'); oSheet.GetRange('D23').SetValue('4'); oSheet.GetRange('D24').SetValue('3'); oSheet.GetRange('D25').SetValue('3'); oSheet.GetRange('D26').SetValue('3'); oSheet.GetRange('D27').SetValue('3'); oSheet.GetRange('E3').SetValue('37'); oSheet.GetRange('E4').SetValue('23'); oSheet.GetRange('E5').SetValue('18'); oSheet.GetRange('E6').SetValue('18'); oSheet.GetRange('E7').SetValue('10'); oSheet.GetRange('E8').SetValue('8'); oSheet.GetRange('E9').SetValue('18'); oSheet.GetRange('E10').SetValue('3'); oSheet.GetRange('E11').SetValue('12'); oSheet.GetRange('E12').SetValue('11'); oSheet.GetRange('E13').SetValue('7'); oSheet.GetRange('E14').SetValue('3'); oSheet.GetRange('E15').SetValue('6'); oSheet.GetRange('E16').SetValue('4'); oSheet.GetRange('E17').SetValue('6'); oSheet.GetRange('E18').SetValue('3'); oSheet.GetRange('E19').SetValue('3'); oSheet.GetRange('E20').SetValue('2'); oSheet.GetRange('E21').SetValue('9'); oSheet.GetRange('E22').SetValue('3'); oSheet.GetRange('E23').SetValue('2'); oSheet.GetRange('E24').SetValue('5'); oSheet.GetRange('E25').SetValue('2'); oSheet.GetRange('E26').SetValue('2'); oSheet.GetRange('E27').SetValue('1'); oSheet.GetRange('F3').SetValue('38'); oSheet.GetRange('F4').SetValue('17'); oSheet.GetRange('F5').SetValue('26'); oSheet.GetRange('F6').SetValue('19'); oSheet.GetRange('F7').SetValue('15'); oSheet.GetRange('F8').SetValue('21'); oSheet.GetRange('F9').SetValue('14'); oSheet.GetRange('F10').SetValue('9'); oSheet.GetRange('F11').SetValue('8'); oSheet.GetRange('F12').SetValue('10'); oSheet.GetRange('F13').SetValue('4'); oSheet.GetRange('F14').SetValue('4'); oSheet.GetRange('F15').SetValue('6'); oSheet.GetRange('F16').SetValue('6'); oSheet.GetRange('F17').SetValue('1'); oSheet.GetRange('F18').SetValue('2'); oSheet.GetRange('F19').SetValue('2'); oSheet.GetRange('F20').SetValue('4'); oSheet.GetRange('F21').SetValue('5'); oSheet.GetRange('F22').SetValue('15'); oSheet.GetRange('F23').SetValue('7'); oSheet.GetRange('F24').SetValue('9'); oSheet.GetRange('F25').SetValue('3'); oSheet.GetRange('F26').SetValue('2'); oSheet.GetRange('F27').SetValue('4'); for (var nCell = 0; nCell < 25; ++nCell) { oCellNumber = nCell + 3; oSheet.GetRange('G' + oCellNumber.toString()).SetValue('=SUM(D' + oCellNumber.toString() + ':F' + oCellNumber.toString() + ')'); } oSheet.GetRange('C29').SetValue('Total:'); oSheet.GetRange('C29').SetAlignHorizontal('right'); oSheet.GetRange('D29').SetValue('=SUM(D3:D27)'); oSheet.GetRange('E29').SetValue('=SUM(E3:E27)'); oSheet.GetRange('F29').SetValue('=SUM(F3:F27)'); oSheet.GetRange('G29').SetValue('=SUM(G3:G27)'); oSheet.GetRange('D29:F29').SetFontColor(Api.CreateColorFromRGB(67, 67, 67)); oSheet.GetRange('G29').SetFontColor(Api.CreateColorFromRGB(49, 133, 154)); oSheet.GetRange('C29:G29').SetFontSize(14); oSheet.FormatAsTable('B2:G29'); var oChart = oSheet.AddChart("'Medal Number'!$C$2:$F$27", false, 'barStacked3D', 18, 8, 1, 16, 14); oChart.SetVerAxisTitle("Medals", 10); oChart.SetHorAxisTitle("Countries", 10); oChart.SetLegendPos("right"); oChart.SetShowDataLabels(false, false, false); oChart.SetTitle("Total Medal Count", 18); var oChart2 = oSheet.AddChart("'Medal Number'!$C$2:$E$12", false, 'lineStacked', 2, 8, 15, 16, 27); oChart2.SetVerAxisTitle("Medals", 10); oChart2.SetHorAxisTitle("Top 10 Countries", 10); oChart2.SetLegendPos("right"); oChart2.SetShowDataLabels(false, false, false); oChart2.SetTitle("Gold&Silver Medals Count", 18); })();
      
      







その結果、この美しさが必要になります。



画像



ONLYOFFICEデスクトップアプリケーションをダウンロードして、すべてを試すことができます。 ちなみに、リリースされたバージョンの唯一の革新はマクロではありません。 多くの問題を修正し、SSO、新しいインターフェイス言語(チェコ語およびスロバキア語)のサポートを追加しました。 GitHubの新しいバージョンの詳細。



以上です。 ご質問、ご提案、ご要望、ご意見をお待ちしております。 共有できるマクロを含む興味深いファイルがある場合は、それらをfiles@onlyoffice.comに送信します。 マクロのないファイルがあり、興味深い問題やエラーがある場合は、それらも待っています。



All Articles