DLLファイルを出力しないようにするには?

解決


初心者  2009-01-20 19:49:14  No: 141319

VB2008にてProjectをRelease(発行)するとdllが作成されexeを実行する際はそのDLLを参照しないと動かない(エラーとなる)状況です。これをexeだけで動くようにしたいのですが可能でしょうか?exeのみを持ち運びしたいのでインストール(Setup)や、DLLなどの参照ファイルは極力避けたいのですが。良い方法はありますでしょうか?
追記:DLLは「Interop.Word.dll」(Microsoft word 10.0 Object Library)で、wordファイル作成など操作処理をする際にこのDLLを参照しています。


たい  2009-01-20 21:00:09  No: 141320

>wordファイル作成など操作処理をする際にこのDLLを参照

>exeだけで動くようにしたい

このふたつを両立することは不可能でしょうね。


初心者  2009-01-20 22:21:12  No: 141321

DLLを組み込むことはできないのですかね。やはり参照がある場合、DLLはexeと対で持たなければならないのか〜...たいさんありがとうございます。


魔界の仮面弁士  2009-01-20 22:32:49  No: 141322

> wordファイル作成など操作処理をする際にこのDLLを参照しています。
参照設定を外して、レイトバインドに切り替えてみては如何でしょうか。

> DLLを組み込むことはできないのですかね。
2010 では可能ですが、2008 の機能には無いですね。


初心者  2009-01-20 23:38:06  No: 141323

魔界の仮面弁士さんありがとうございます。
参照設定無しでもWordの操作は可能なのでしょうか?「レイトバインド」について調べてみたのですがよく理解できません。参照設定しないコードの記述方法を言うのでしょうか?


魔界の仮面弁士  2009-01-20 23:52:29  No: 141324

> 参照設定無しでも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


初心者  2009-01-21 00:56:22  No: 141325

魔界の仮面弁士さんありがとうございます。
お陰様でWordの作成が可能になりました。度々ですみませんが、
レイトバインドでのwordの”行(セレクト位置)”移動などの操作について参照設定の場合、
.MoveDown(Word.WdUnits.wdLine, Count:=2, Extend:=Word.WdMovementType.wdMove)    
となるのですが、この”Word”部分もObject("Word.Application")の変数に切り替えられるのでようか?"Applicationにみつかりません"や"Documentにみつかりません"と怒られてしまいます。


魔界の仮面弁士  2009-01-21 01:39:56  No: 141326

列挙型は、同等値の整数または列挙値に書き換えてください。

例えば、
  Const wdMove As Integer = 0    'Word.WdMovementType.wdMove の代用
  Const wdLine As Integer = 5    'Word.WdUnits.wdLine の代用
などのようにして、これらの値を代わりに利用します。


初心者  2009-01-21 02:12:07  No: 141327

魔界の仮面弁士さんありがとうございました。助かりました。
すべての書式設定をIntegerに直して代入したところ正常に動作しました。
わりと面倒ですがこれで進めて行きたいと思います。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加