VBAのLenBとVarPtr
- 題名: VBAのLenBとVarPtr
- 著者: kei2
- 日時: 2014/09/17 21:50:03
- ID: 32615
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: VBAのLenBとVarPtr
- 著者: 魔界の仮面弁士
- 日時: 2014/09/17 22:33:39
- ID: 32616
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: VBAのLenBとVarPtr
- 著者: kei2
- 日時: 2014/09/19 20:51:54
- ID: 32629
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
Fuji XEROXのDocuWorksというソフトにbmpを貼り付けたいのですが、
参考になるプログラムがEXCEL VBAのものしか見つけられなかったので、
これをVB.NETに変換してるのですが、エラーが解決されないので2点質問があります。
参照にしたサイト
http://tokidokidokin.com/2011/04/vba%E3%81%A7docuworks%E3%81%AE%E5%85%A8%E3%81%A6%E3%81%AE%E3%82%A2%E3%83%8E%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E3%82%8B/
476行の
myAaBMPData.common.nSize = LenB(myAaBMPData) '構造体のバイト数。
を
With myAaBMPData '構造体
.common = myAaInitialData
.szImagePath
End With
myAaBMPData.common.nSize = System.Text.Encoding.GetEncoding(932).GetByteCount(myAaBMPData)
だと、”これらの引数で呼び出される、アクセス可能な'GetByteCount'がないため、オーバーロードの解決に失敗しました。”になります。
構造体のバイト数を取得するには、どのようにすればいいでしょうか?
もう1つが、
470行の
MsgBox XDW_AddAnnotation(lngHandle, myXDW_AID, lngPage, lngHorPos, lngVerPos, VarPtr(myAaBMPData), lngHandleAnnotation, vbNullString)
で、
'2.1 XDW_AddAnnotation アノテーションを貼り付ける
Private Declare Function XDW_AddAnnotation Lib "C:\Windows\system32\xdwapi.dll" _
(ByVal handle As Long, ByVal nAnnotationType As Long, ByVal nPage As Long, ByVal nHorPos As Long, ByVal nVerPos As Long, _
ByRef pInitialData As XDW_AA_FUSEN_INITIAL_DATA, ByRef phNewAnnotation As Long, ByVal reserved As String) As Long
Private Structure XDW_AA_FUSEN_INITIAL_DATA
' common As Long '共通情報。構造体のバイト数とアノテーションの種類を指定する。
Public common As XDW_AA_INITIAL_DATA '共通情報。構造体のバイト数とアノテーションの種類を指定する。
Public nWidth As Long '付箋アノテーションの幅。単位は1/100mm。
Public nHeight As Long '付箋アノテーションの高さ。単位は1/100mm。
End Structure
'XDW_AddAnnotation用の構造体定義
Private Structure XDW_AA_INITIAL_DATA
Public nSize As Long '構造体のバイト数。
Public nAnnotationType As Long 'アノテーションの種類。
Public nReserved1 As Long '予約メンバ。0でなければならない。
Public nReserved2 As Long '予約メンバ。0でなければならない。
End Structure
Dim gch As GCHandle = GCHandle.Alloc(myAaBMPData, GCHandleType.Pinned)
Dim address As Integer = gch.AddrOfPinnedObject().ToInt32()
XDW_AddAnnotation(lngHandle, myXDW_AID, lngPage, lngHorPos, lngVerPos, address, lngHandleAnnotation, vbNullString)
gch.Free()
で、address の部分が"型'Integer'の値を'XDW_AA_FUSEN_INITIAL_DATA'に変換出来ません。
になります。
2点、よろしくおねがいします。