問題タブ [excel-udf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
613 参照

c# - バックグラウンド スレッドで PublishObject.Publish() を使用すると、ブックの計算モードがリセットされる

Excel のPublishObjectsIDTExtensibility2を使用してワークシートから範囲を公開する関数を実装し、1 つの関数を持つ Excel アドインを作成しています。

Visual Studio 2008 と Excel 2007 を使用しています。コードは次のとおりです。

上記のコードは期待どおりに機能し、ワークブックが自動数式計算モードのときに Output.htm を取得します。

ただし、ワークブックが手動モードの場合 (デバッガーでs_Application.Calculationは に設定されていることがわかりますxlCalculationManual)、行Publish(true)はアクティブなシートのすべての UDF を強制的に再計算します。

つまり、Publish(true)終了する前に、メソッドへの別の呼び出しを受け取りますPublishRange()が、今回s_Application.Calculationは に設定されていxlCalculationAutomaticます。

また、同じワークブック内の他のシートの機能が影響を受けていないことも発見しました (理由はわかりません)。

質問: この計算モードのリセットを回避する方法はありますか?

私自身の関数が呼び出されることは問題ではありません。いつでもそこにブール値フラグを追加できますが、ワークシートには、私が行うことによって呼び出されてはならない他の関数があります。

ところで、メインスレッドから呼び出された場合、問題はありませんDoWork。これは、バックグラウンドスレッドの実行に固有のものです。

0 投票する
2 に答える
1821 参照

vba - Excel VBA セルは、値があるにもかかわらず「0」を返します

Google の oAuth 2.0 統合を使用して、Excel から Google アナリティクス API のアクセス トークンを取得する必要があるタスクに取り組んでいます。

最初のリクエストは、ワークシート内のセルに保存されているクライアント ID、秘密鍵、および認証トークンを渡すことによって機能します。

私が使用しているUDFは次のようになります。

私のワークシートには、関数を呼び出すセルの配列があります:

上で述べたように、最初のリクエストは正常に機能し、アクセス トークン、リフレッシュ トークン、およびアクセス トークンの有効期限をセル B5、B6、および B7 に出力します。

しかし、リクエストを再度実行すると、B5、B6、および B7 からの値が UDF に渡されることが期待されますが、「0」として渡されます。私が更新をトリガーしてからUDFを実行するまでの間に、それらがリセットされているようです。これらの値を取得することは可能ですか?

このページに出くわしましたhttp://fastexcel.wordpress.com/2012/01/08/writing-effective-vba-udfs-part-8-getting-the-previously-calculated-value-from-the-calling -cells/これは私がやろうとしていることと似ているようですが、これは配列ではなく単一のフィールドのように見えますか?

ExcelやVBAの経験が全くないので、どんな支援も大歓迎です。

ありがとう!

0 投票する
1 に答える
3122 参照

excel - ワークブックがアドインとは別のフォルダーに移動したときに、アドイン UDF への参照を保持する方法は?

UDF (ユーザー定義のワークシート関数) を提供する Excel アドインを作成しました。

あるユーザーがこれらの関数を使用して自分のブックを別のユーザーに送信するか、アドインが異なるパスにインストールされている複数のコンピューターでブックを使用しようとするまで、すべて問題ありません。

パスの唯一の違いがドライブ文字であっても、別のコンピューターでブックを開くと、すべての UDF の前の数式に古い完全パスが表示され、数式はエラーを返します。

これに対処する 1 つの方法は、ワークブック内のすべての数式を検索して置換し、パスを空の文字列に置き換えることです。次に、数式は、現在のコンピューター上のアドインのパスに合わせてリセットされます。場合によっては、VBE に移動して CalculateFullRebuild を実行し、数式を機能させる必要があります。機能しますが、あまり技術的ではないユーザーに要求することは多く、ワークブックを頻繁に移動するユーザーにとって頻繁に行う必要があるのは面倒です。

また -- COM アドインにはこの問題がありますか? 私のアドインは xla です。私はそれについて興味がありますが、COM アドインは Macintosh Excel では動作せず、このアドインはクロスプラットフォームで動作する必要があるため、この場合は議論の余地があります。

アップデート:

リクエストに応じて、スクリーンショットを次に示します。

式のパスを示すスクリーンショット

このスクリーンショットは、アドインを C:\Fred's Stuff\Fred's Excel Stuff\MyAddin.xla に配置した Fred が自分のブックを Martha に送信した場合にどうなるかを示しています。Martha は同じアドインを別のパス (C: \Martha's Files\Martha's Excel Files\MyAddin.xla で、Martha は Fred が送信したファイルを開きます。

マーサがパスを削除し、数式に「=MyUDF()」のみを残した場合、Excel は、マーサが配置したパスでマーサのコンピューター上の MyAddin.xla を検索します (マーサが以前に MyAddin.xla をアドインとして Excel にインストールしたと仮定します)。 )、数式を正しく解決します。

0 投票する
1 に答える
151 参照

vba - ラグの原因となる UDF

Noodles からの回答のおかげで、UDF が Excel ワークブックの遅延の主な原因であることがわかりました。この UDF を書き直して、ラグが発生しないようにすることはできますか? この UDF を Excel 式で使用しています (例 =IF(OR(ISNUMBER($DH2),$DH2>" "),LookUpConcat($B2,Usage!$AM$2:$AM$5000,Usage!$AS$2: $AS$5000、" ")、" "))。たぶん、式を変更する必要があります。数式は多くのセルから引き出され、ワー​​クブックの 2 つの異なる列で機能するように調整されます。私はITではないので、最後のラグの質問に対するNoodlesの回答は完全には理解できませんでしたが、これが最もラグの問題を引き起こしているマクロであることを知るのに十分な情報を提供してくれました.

終了機能

0 投票する
3 に答える
876 参照

excel - udf を含むシートを新しいワークブックにコピーする

UDF (ユーザー定義関数) でいっぱいの 5 枚のワークブックがあります。
これらの 5 つのシートを新しいワークブックにコピーする必要がありますが、必要なのは値だけです。
問題は、これらのシートをコピーすると、UDF を含むすべてのセルが #value で壊れてしまうことです。これは、この新しいブックにマクロがないためです。

モジュールをコピーできません。多くのユーザーがこのワークブックを使用し、Excel でvba project.

ワークブック間で値のみをコピーして貼り付けようとしましたが、うまくいきません。これは、シートに結合された行と列がたくさんあるためだと思います。Excel にエラー メッセージが表示されます。ここでポルトガル語から英語に翻訳しますが、Excel はこれを正確に使用していない可能性があります。

このオプションでは、結合されたセルがすべて同じサイズである必要があります。

このエラーがわかりません。私もこれを手動でやろうとしました:シート全体をコピーし(右クリック、移動、コピー)、元のワークブックで使用されているすべての範囲を選択し、ctrl + c、新しいワークブックの最初のセルを選択してからctrl + vと次に、値のみを貼り付けます。そしてExcelはエラーをスローします。また、ctrl + vを押す前に、新しいワークブックで範囲全体を選択しようとしました。同じ問題。

どうすればいいのかわからない。私が今行っているのは、元のワークブックの値のみをコピーして貼り付け、シート全体を新しいワークブックにコピーすることです。問題は、このアクションが元のワークブックを破壊することです。そのため、やりたくないことを閉じて再度開く必要があります。

誰がどのように進めるかについて何か考えがありますか?

0 投票する
2 に答える
772 参照

vba - Excel UDF を Worksheet オブジェクトに配置する (モジュールではなく)

答えは「不可能」だと思いますが、この素晴らしいコミュニティに質問しても害はありません!

特定のワークシートに固有の Excel 2013 UDF (ユーザー定義関数) があります。

現在、このUDFは、含まれているワークブックの「モジュール」にあります。しかし、私がやりたいことは、UDF コードを「ワークシート オブジェクト」に配置して、その特定のワークシートでのみ使用できるようにすることです。

もちろんやってみたのですが、見えないので当然 #NAME? エラー。関数の前に Public を付けようとしましたが (とにかくオブジェクトを無効にします)、役に立ちませんでした。

特定のトリックを知っている人はいますか?

前もってありがとう、ニック。

0 投票する
2 に答える
112 参照

excel - ワークシート関数で UDF 戻り値を使用する

UDF特定の列に最後に入力された行を返すを作成しました。現在、最後に入力された行の行番号を返します。私の質問は、ワークシート関数でこの値を使用するにはどうすればよいですか?

たとえば=COUNTBLANK("B2:B&LastRow(2))、 whereLastRow(2)は整数を返します。

0 投票する
1 に答える
969 参照

vba - カスタム関数を使用した数式は正常に機能しますが、#Value エラーに変わります

Excel 2003 を使用している同僚がいます。.xla アドインで、彼のためにいくつかのカスタム関数を作成しました。彼はアドイン内のカスタム関数のパスの問題に悩まされていたので、私がカスタム関数をワークブックに移動したところ、彼は必要に応じてそのワークブックのコピーを作成しました。

私がそれを彼に送ったとき、そしてそれ以来、私が彼に更新版を送るたびに、彼がワークブックを開くと、カスタム関数を使用するすべての数式が #Value エラーを返していることがわかりました。毎回、同じブックが Excel 2003 でも問題なく機能していました (私はそれ以降のバージョンの Excel も持っていますが、彼との作業には 2003 を使用しています)。

その後、彼が再計算しても何も起こりません。私は彼に等号の検索と置換を試みてもらいました。これは通常、影響を受ける数式を強制的に再計算させますが、効果はありませんでした。数式を再び機能させることができた唯一の方法は、手動でセルをアクティブにして (F2 キーを押すか、数式バーをクリックして)、Enter キーを押すことでした。SendKeys を使用して F2 を送信し、次に Enter を送信する VBA ループを試しましたが、一部のセルでは機能しましたが、すべてでは機能しませんでした。

しばらく彼と一緒に作業した後、いくつかの式が再び機能し、一部がまだ #Value を返している状態になったので、ワークブックを保存して私に送ってもらいました。同じ動作が得られた場合、すべての数式に #Value が表示されると予想されます。しかし、代わりに、彼のためにうまく機能していた数式が私にもうまく機能し、彼に #Value を返していた数式が私にも同じことをしていることがわかりました。したがって、私が送信したファイルを開いたときに正常に動作することから #Value を返すように変更することは、同じバージョンの Excel では起こっていないようです。

なぜこれが起こっているのでしょうか?トラブルシューティングの提案はありますか?

アップデート:

影響を受けるカスタム関数の例を提供するよう求められました。「GetCompanyName」の 1 つを次に示します。

更新 2:

ここで職場では Excel 2003 を持っていません。代わりに、雇用主は Excel 2007 だけを提供してくれました。彼の同じブックが Excel 2007 で問題なく開くことがわかりました。すべての機能が正常に動作します。昨夜家で彼と電話をしたが、遅かったし、時間に追われていたので、2007年、2010年、2013年をテストしなかった.

しかし、彼はリボンが大嫌いなので、まだ Excel 2003 を使用しています。この問題を回避するために Excel 2003 でできることについて何かアイデアはありますか?

更新 3:

すべての変数が宣言されていることを Ron に示すようにコードを更新しました。

0 投票する
1 に答える
1170 参照

java - HIVE: org.apache.hadoop.hive.ql.exec.FunctionTask からの実行エラー、戻りコード [-101] (未知のエラー)

UDF をフローとして記述します。

次に、このテスト プロジェクトの jar(udftest.jar) を eclipse でエクスポートします。その後udftest.jar、ハイブに jar を追加します。

実行に失敗しました!

どうしてか分かりません!私はインターネットを検索しますが、この問題に対処しません!