問題タブ [xlw]
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.
c++ - C ++でScripting.FileSystemObjectを使用する場合の#importの後の次のステップは何ですか?
コンテキスト:Windows 7、XLW 5.x、Microsoft Excel 2007、Visual Studio 2010、C ++
次のコードを考えると...
FileSystemObjectをインスタンス化し、そのメソッドを呼び出すにはどうすればよいですか?
python-2.7 - ディレクトリ内の複数の Excel ファイルを読み取り、特定のセル値を別の Excel シートに書き込む
ディレクトリにある 100 個の Excel ワークブックから特定のセル値を読み取り、そのデータを別の Excel シートの列に書き込む必要があります。エラーが発生したのは次のとおりです。
誰でもこれを成功させるのを助けることができますか?
c++ - 関数ウィザードに登録できなかった xll アドインから関数を呼び出すにはどうすればよいですか?
歴史的な理由から、多数の引数、正確には20を取る関数をエクスポートする xll (かなり複雑な C++ プロジェクト) があります。
これはマジックナンバーです。明らかに、Excel 2003 では引数の最大数が 30 になっています (「Microsoft Office Excel 2003 では、関数が使用できる引数の最大数は 30 ですが、ほとんどの関数はこれよりも少なくなります」)。 20 を超える関数は関数ウィザードに登録できません。
さて、ご想像のとおり、さらに 3 つの引数を追加する必要があります。わかりましたので、引数の数は最大 23 になります (少なくとも、この関数は「人間が消費する」ことを意図したものではなく、常に VBA ラッパーによって呼び出されます)。
VC++ デバッガーを使用して Excel プロセスにアタッチすると、登録時にxlretInvCountを表すエラー コード 4 が表示されます。
コンマで区切られた引数名の文字列が255 文字未満であることを確認しました。ところで、私はxlw 4を使用しています(古いバージョン、私は知っています)。
したがって、制限が 30 の場合、次の方法で関数を呼び出すことができると期待しています
ただし、ウィザードを使用しないでください。問題は、関数が登録されていないことを VBA が教えてくれることです。
では、引数が 20 個以上 30 個未満の関数を適切に使用するにはどうすればよいでしょうか。
注意: 明白なことを述べるのは控えてください。問題の真の核心はどこにあるのか、私は知っています。現時点ではリファクタリングはできません。
c++ - XlfOper (LPXLOPER) 型の引数を受け入れる VBA で関数を宣言するにはどうすればよいですか?
前の質問への回答で、(C++) xll で定義された関数を登録せずに呼び出す方法を見つけました。以前は XLW が提供する登録インフラストラクチャを使用しており、XlfOper 型を使用して VBA と xll の間で引数を渡していました。
C++ 関数は次のようになります。
以前のソリューションへの回答に続いて、次のような関数を直接宣言しています。
Excel プロセスにアタッチすると、関数が呼び出されていることがわかりますが、引数にガベージまたは null データが含まれています。これは、正しいデータ型に変換する方法を VBA に伝えていないことが原因だと思います。
XlfOper 引数を正しく呼び出すにはどうすればよいですか? xlw は次のように述べているため、LPXLOPER を呼び出すとうまくいくと思います。
このクラスにはデータ メンバーや仮想関数を追加しないことが重要です。xlw の設計は、クラス XlfOper が LPXLOPER/LPXLOPER12 と同じサイズであるという事実に依存しています。この仮定により、Excel から受け取った型の値がライブラリによって XlfOper のインスタンスとして解釈されます。
c++ - c++ で xlw によって作成された xll アドインでブーストを使用する
C++ で xlw を使用して作成している xll アドインでブースト関数を使用しようとしています。XLL プロパティ ページ --> 構成ページ --> VC++ ディレクトリのインクルード ディレクトリ セクションにブースト ディレクトリを含めました。
ただし、ブースト オブジェクト「boost::」を使用しようとすると、メンバー関数が表示されず、画面の左下に「IntelliSense: 'Unavailable for C++/CLI'」というメッセージが表示されます。
以前にこの問題に遭遇したことがあり、それを回避する方法を知っている人はいますか?
よろしくお願いいたします。
lnk2019 - エラー LNK2019 および致命的なエラー LNK1120
プロジェクトをコンパイルするときに問題が発生しました。この行を設定すると:
boost::shared_ptr mySwap;
問題はありませんが、これを設定すると:
boost::shared_ptr mySwap(new OvernightVsLiborBasisSwap(OvernightVsLiborBasisSwap::PayerOvernight, 1.0, scheduleOis, indexOis, dayCountOis, 1.0, scheduleLibor, indexLibor, dayCountLibor));
次のエラーメッセージが表示されます
excelFunctions.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall ModLibNY::OvernightVsLiborBasisSwap::OvernightVsLiborBasisSwap(enum ModLibNY::OvernightVsLiborBasisSwap::Type,double,class QuantLib::Schedule const &,class boost::shared_ptr const &,class QuantLib::DayCounter const &,double,class QuantLib::Schedule const &,class boost::shared_ptr const &,class QuantLib::DayCounter const &,double,double,bool,bool,class boost::optional,class boost: :optional)" (??0OvernightVsLiborBasisSwap@ModLibNY@@QAE@W4Type@01@NABVSchedule@QuantLib@@ABV?$shared_ptr@VOvernightIndex@QuantLib@@@boost@@ABVDayCounter@4@N1ABV?$shared_ptr@VIborIndex@QuantLib@ @@6@3NN_N5V?$optional@W4BusinessDayConvention@QuantLib@@@6@6@Z) 関数で参照される "class xlw::NCMatrix __cdecl getOisLiborSwapCurve(class xlw::CellMatrix const &,class xlw::CellMatrix const &,class xlw::CellMatrix const &,class xlw::CellMatrix const &,double const &)" (?getOisLiborSwapCurve@@YA?AVNCMatrix@xlw@@ABVCellMatrix@2@000ABN @Z) 3>.\Debug\ExplainPnL.xll: 致命的なエラー LNK1120: 1 つの未解決の外部情報
オブジェクト OvernightVsLiborBasisSwap は、含まれている私自身の静的ライブラリ ModLibNY の一部です。私のコードの最初の行には以下が含まれます:
非常に奇妙なのは、コンストラクターを使用するとエラーが発生することです。詳細については、.hpp ファイルで次のように宣言されています。
.cpp ファイルで次のように定義されます。
名前空間ModLibNY {
... 誰かが問題の原因を知っている場合は、お知らせください。
ありがとう
c++ - XLL および EXCEL : ドラッグまたはロード
XLL を Excel にロードする際に問題があります。XLW を使用して XLL を生成し、Excel 2007 を使用しています。ファイルをスプレッドシートにドラッグすると、すべての Xll 関数を使用でき、うまく機能します。ただし、 Excel-Add in を使用してロードすると、ファイルはロードされますが、関数はありません。
Excel 2010 でも同じことを試しましたが、もっとひどいものでした。XLL ファイルをスプレッドシートにドラッグすると、XLL がテキスト ファイルとして開かれ、Excel 2007 のように機能させることができず、Excel-Addin を使用して読み込むことができますが、取得できません。 XLL 関数。
何が問題か知っていますか?
編集: 次のビデオの手順に従いました: https://www.youtube.com/watch?v=_mpw5_JW7T4
編集 2: Excel 2007 では、xll をスプレッドシートにドラッグすると機能しますが、アドイン セクションに dll がありません。
c++ - XLW - コンパイル済み XLL 「ファイル形式と拡張子が一致しません」
私はアドインXLW 5
を構築するために使用しており、テンプレートの例Excel
XLL
を試しています。GNU を使用して、バージョン 4.9.2 (mingw-w64) でEchoShort
コンパイルに成功しました。ただし、 を開こうとすると、次のエラーが報告されます。Template.xll
Make
g++
cygwin
XLL
Excel 2013
開いてみると、読めない文字でいっぱいのようです。xll
開発者タブでアドイン マネージャーを使用して追加しようとしましたが、セルを呼び出そうとするとエラーEchoShort
が発生し#NAME
ます。
私は初めてですが、これを機能さXLW
せることができれば、これは素晴らしいパッケージのように思えます。どんな助けでも大歓迎です。
編集:それが下にあると言及すべきだったcygwin
EDIT:VS2013でも試してみましたが、同じことが起こったので、そうではありませcygwin
んMinGW
。