質問と同じです。私はいくつかのVBAコードで文字列の配列を作ることができるようにしたい、このコードでは、それらを特定の長さにしたいと思います。次に、それらをC++ DLLにどのように渡すか、DLL内で各要素に文字列を格納し、これらの要素を後でVBAからアクセス可能にしたいと考えています。私はすでに1つの文字列に対して、そして2つの配列に対して以下のようにしています。VBA/Excelで文字列の配列を作成し、DLLでそれを繰り返し処理できるようにC++ DLLに送信する方法
Dim myStr As String * sizeConst
Dim dataArray() As Double
ReDim dataArray(0 To (arrayLength - 1)) As Double
次に、それらをVBA内からDLLに渡します。
Public Declare Function myFunc _
Lib "PathToDLL.dll" _
(myStr As String, ByVal sizeConst As Integer, dataArray As Double, ByVal arrayLength As Long) As Long
そしてDLLに私は二重配列の各要素をステップすることができます。しかし、私は文字列の配列のためにこれを行う方法を知らない。私は、VBAから渡される文字列の実際のメモリサイズがsizeConst + 1のサイズであるかどうか不安です。私は次の文字列要素に到達するためにどれだけ増やすべきかを知るためにこれを知る必要があります。誰かが、各要素の長さを一定にしてVBAで文字列配列を宣言する方法を教えてもらえますか?次に、その配列をDLLに渡す方法と、DLLの文字列配列の次の要素にインクリメントする方法。あなたはDeclare
D機能でarr() as string
を宣言する場合
私の答えをダウン投票していただきありがとうございます。「固定サイズの文字列の配列を作成する方法」という質問に対する回答が条件に合わない場合は、より具体的で問題の適切な詳細を提示する必要があります。 –
@MaciejLos重要な部分は「次にC++ DLLにどのように渡すか」です。詳細については、https://stackoverflow.com/questions/44396538/vba-excel-and-c-dll-specifically-problems-with-strings#comment76262029_44396538を参照してください。 – GSerg
@GSerg、これは疑問の第二の部分です。私はこの情報を提供しました: 'あなたのdllは、関数宣言のために、文字列の配列ではなく、** myStr As String **と入力することを期待しています。トリックは質問をするスキルです! –