VB2008にてProjectをRelease(発行)するとdllが作成されexeを実行する際はそのDLLを参照しないと動かない(エラーとなる)状況です。これをexeだけで動くようにしたいのですが可能でしょうか?exeのみを持ち運びしたいのでインストール(Setup)や、DLLなどの参照ファイルは極力避けたいのですが。良い方法はありますでしょうか?
追記:DLLは「Interop.Word.dll」(Microsoft word 10.0 Object Library)で、wordファイル作成など操作処理をする際にこのDLLを参照しています。
>wordファイル作成など操作処理をする際にこのDLLを参照
>exeだけで動くようにしたい
このふたつを両立することは不可能でしょうね。
DLLを組み込むことはできないのですかね。やはり参照がある場合、DLLはexeと対で持たなければならないのか〜...たいさんありがとうございます。
> wordファイル作成など操作処理をする際にこのDLLを参照しています。
参照設定を外して、レイトバインドに切り替えてみては如何でしょうか。
> DLLを組み込むことはできないのですかね。
2010 では可能ですが、2008 の機能には無いですね。
魔界の仮面弁士さんありがとうございます。
参照設定無しでもWordの操作は可能なのでしょうか?「レイトバインド」について調べてみたのですがよく理解できません。参照設定しないコードの記述方法を言うのでしょうか?
> 参照設定無しでもWordの操作は可能なのでしょうか?
とりあえず、起動→保存→終了だけに単純化したサンプル。
Imports System.Runtime.InteropServices
Public Class Form1
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim wd As Object = CreateObject("Word.Application")
Dim docs As Object = wd.Documents
Dim doc As Object = docs.Add()
wd.Visible = True
MsgBox("ワードを起動しました。", vbInformation Or vbSystemModal)
doc.SaveAs("C:\sample.doc", 0)
MsgBox("sample.docとして保存しました。", vbInformation Or vbSystemModal)
Marshal.ReleaseComObject(doc)
Marshal.ReleaseComObject(docs)
wd.Quit()
Marshal.ReleaseComObject(wd)
MsgBox("Wordを終了させました。", vbInformation Or vbSystemModal)
End Sub
End Class
魔界の仮面弁士さんありがとうございます。
お陰様でWordの作成が可能になりました。度々ですみませんが、
レイトバインドでのwordの”行(セレクト位置)”移動などの操作について参照設定の場合、
.MoveDown(Word.WdUnits.wdLine, Count:=2, Extend:=Word.WdMovementType.wdMove)
となるのですが、この”Word”部分もObject("Word.Application")の変数に切り替えられるのでようか?"Applicationにみつかりません"や"Documentにみつかりません"と怒られてしまいます。
列挙型は、同等値の整数または列挙値に書き換えてください。
例えば、
Const wdMove As Integer = 0 'Word.WdMovementType.wdMove の代用
Const wdLine As Integer = 5 'Word.WdUnits.wdLine の代用
などのようにして、これらの値を代わりに利用します。
魔界の仮面弁士さんありがとうございました。助かりました。
すべての書式設定をIntegerに直して代入したところ正常に動作しました。
わりと面倒ですがこれで進めて行きたいと思います。
ツイート | ![]() |