
いつもお世話になっています。
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
'ここまで
No.2ベストアンサー
- 回答日時:
前回、これがらみで回答しましたが
>System.Runtime.InteropServices.Marshal.ReleaseComObject(FSO)
この行通りませんね(直前の行で Return している為)。FileSystemObjectのインスタンスがリークします。
また、前回回答では修正版を載せてますので、そっちを参照ください。
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
No.1
- 回答日時:
Drvの値に問題があってGetDriveでエラーになってるんじゃないでしょうか?
tyy~catchしていないのでそのままエラーが垂れ流されているのでしょう。
参考URL:http://officetanaka.net/excel/vba/filesystemobje …
ProKaseifuさん
こんにちは
vb.netにはtry~catchなる
便利な機能があるのですね。
勉強になりました。
これからもよろしくお願い致します(*^^)v。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数式は残し値をクリアするマク...
-
UserForm1.Showでエラーになり...
-
HTMLソースが表示のページのも...
-
ACCESS VBAのSplit()関数の使用...
-
mailstorehomeのエクスポートで...
-
objectタグを使用してEXCEL出力
-
ISNAとISERRORの使い方の違い
-
コンボボックスの特定項目だけ...
-
LaTeXのエラーについて(コンパ...
-
VBAのエラーについて
-
CSV出力時、件数によりエラーと...
-
スクリプト エンジンの例外が発...
-
MDBへレコード挿入中にエラーが...
-
教えて下さい
-
配列数式の解除
-
Libre office マクロ
-
マクロを組んで作業するのは実...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
【マクロ】【画像あり】4つの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
VBA データ(特定値)のある最...
-
インポート時のエラー「データ...
-
マクロで"#N/A"のエラー行を削...
-
VBAのリストボックスで、横スク...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
Filter関数を用いた結果、何も...
-
文字列内で括弧を使うには
-
【VB.NET】 パワポ操作を非表示で
-
レコード登録時に「演算子があ...
おすすめ情報