|
分類:[VB.NET/VB2005 以降]
こんにちは。
VB2008を使い、WordのファイルをHTML変換するようなツールを作成しています。
ただ、一部の利用者より、この処理を行うと「名前をつけて保存」のダイアログが表示される、
という連絡がありました。
恐らく、以下コードの「oWordDoc.SaveAs」のところで勝手にダイアログが表示されている
のではないかと思いますが、こちらの環境(Windows 7・Word 2007/2010/2013)では全く再現できません。
※WordのOpenメソッドを使わず、空のWordブックに対してInsertFileを行っているのは
何か理由があったようですが、前任者に聞いた内容を失念しました。
Const wdFormatHTML As Integer = 8
Const wdWindowStateNormal As Integer = 0
Dim oWord As Object = Nothing
Dim oSel As Object = Nothing
Dim oWordDocs As Object = Nothing
Dim oWordDoc As Object = Nothing
Dim blnWordClosed As Boolean = False
'≪途中略≫
Try
Try
oWord = GetObject(, "Word.Application")
oWord.WindowState = wdWindowStateNormal
Catch ex As Exception
oWord = CreateObject("Word.Application")
fWordClosed = True
End Try
oWord.DisplayAlerts = False
oWord.Visible = True
oWordDocs = oWord.Documents
oWordDoc = oWordDocs.Add
oSel = oWord.Selection
oSel.InsertFile(変換したいWordファイル名)
'≪途中略≫
oWordDoc.SaveAs(FileName:=保存したいHTMLファイル名, FileFormat:=wdFormatHTML)
Finally
If oWord IsNot Nothing Then
MRComObject(oSel)
If oWordDoc IsNot Nothing Then
Try
oWordDoc.Close(False)
Catch ex As Exception
oWord.Visible = True
fWordClosed = True
End Try
End If
MRComObject(oWordDoc)
MRComObject(oWordDocs)
oWord.DisplayAlerts = True
If fWordClosed Then
oWord.Quit()
Else
oWord.Visible = True
End If
MRComObject(oWord)
End If
End Try
'MRComObjectは以下の通り
Private Sub MRComObject(Of T As Class)(ByRef objCom As T)
If objCom Is Nothing Then
Return
End If
Try
If Marshal.IsComObject(objCom) Then
Marshal.FinalReleaseComObject(objCom)
End If
Finally
objCom = Nothing
End Try
End Sub
そのユーザーの話によると、数ヶ月前に何かのWindows Updateを当てたところ、
この現象が発生したかも知れないというのですが、このような話は聞いたことがありますか?
ちなみに、そのユーザーの環境はWindows 7・Word 2010です。
宜しくお願いします。
|