COMExceptionはハンドルされませんでしたとは?(Visual BasicのQ&A)

解決済みの質問

COMExceptionはハンドルされませんでしたとは?

いつもお世話になっています。
PC内のドライブとシリアルナンバーを取得するツールを作成していますが
「COMExceptionはハンドルされませんでした。」というエラーが出て
とまってしまいます。
VisualBasic2008EE初心者でエラーの内容がわかりません。
どなたかお分かりの方おりましたらご教授のほどよろしくお願いします。
'ここから
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim DInfo As IO.DriveInfo
Dim DType As IO.DriveType
Dim Drv As String
Dim Sir As String
ListBox1.Items.Clear()
For Each DInfo In System.IO.DriveInfo.GetDrives
DType = DInfo.DriveType
Drv = DInfo.Name.Substring(0, 1)
Sir = ""
Sir = Get_Sir(Drv)
ListBox1.Items.Add(DInfo.Name & ControlChars.Tab & DType.ToString & ControlChars.Tab & Sir)
Next
End Sub
Private Function Get_Sir(ByVal Drv As String)
Dim FSO = CreateObject("Scripting.FileSystemObject")
Return FSO.GetDrive(Drv).SerialNumber 'ここでエラーになってしまいます。
System.Runtime.InteropServices.Marshal.ReleaseComObject(FSO)
End Function
End Class
'ここまで

投稿日時 - 2008-09-01 21:06:08

QNo.4296215

困ってます

質問者が選んだベストアンサー

前回、これがらみで回答しましたが

>System.Runtime.InteropServices.Marshal.ReleaseComObject(FSO)

この行通りませんね(直前の行で Return している為)。FileSystemObjectのインスタンスがリークします。
また、前回回答では修正版を載せてますので、そっちを参照ください。

投稿日時 - 2008-09-02 12:33:34

お礼

edp3142さん、こんにちは

またしても助けていただきありがとうございました。
おかげさまで解決できました。

今後ともよろしくお願い致します。

'こんな感じにできあがりました。
Private Function Get_Sir(ByVal Drv As String)
Dim FSO = CreateObject("Scripting.FileSystemObject")
Dim DriveObject = FSO.GetDrive(Drv)
Try
Return DriveObject.SerialNumber
System.Runtime.InteropServices.Marshal.ReleaseComObject(DriveObject)
System.Runtime.InteropServices.Marshal.ReleaseComObject(FSO)
Catch ex As Exception
Return "(・・?"
End Try
End Function

投稿日時 - 2008-09-02 13:33:18

ANo.2

0人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(1件中 1~1件目)

ANo.1

Drvの値に問題があってGetDriveでエラーになってるんじゃないでしょうか?

tyy~catchしていないのでそのままエラーが垂れ流されているのでしょう。

参考URL:http://officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm#GetDrive

投稿日時 - 2008-09-02 10:09:44

お礼

ProKaseifuさん
こんにちは
vb.netにはtry~catchなる
便利な機能があるのですね。
勉強になりました。
これからもよろしくお願い致します(*^^)v。

投稿日時 - 2008-09-02 13:36:15

この質問に関連するQ&A
  • PHPメールフォームでの文字化け
  • プログラミング&PHP超初心者です。 PHPでメールフォームを作成して、送信には成功しましたが、受信したメールが文字化けしています。 いろいろ調べたのですが、解決できませんでした。 どなたか詳しいかた...
  • シートのコピーでプロセスが残ってしまう
  • シートのコピーでプロセスが残ってしまう vb2008よりエクセルを起動し、シートを同一のブック内でコピーしようと思うのですが、 下記コードだとシートのコピーはできるのですがリソースが解放できず、プロセ...
  • Worksheetsオブジェクト解放について・・
  • VB2005からエクセルを操作するプログラムを書いてます。 設計条件として遅延バインディングの制約があります。 以下のコードではプロセスが残ってしまい原因が分かりません。 有識者のご教授をお願いしま...
合わせてチェックしたい
PR

OKWaveのオススメ