いつもお世話になっております。
私はVB2005入門者です。
EXCELで処理を行っております。
処理事態は完了するのですが
下記のコードの後半部の警告がどうやっても潰せないので
修正方法のアドバイスをお願いします。
Dim xlApp As Excel.Application
Dim xlBooks As Excel.Workbooks
Dim xlBook As Excel.Workbook
Dim xlSheets As Excel.Sheets
Dim xlSheet As Excel.Worksheet
' 必要な変数は Try の外で宣言する
Try ' 必要な変数は Try の中でインスタンス化する
xlApp = New Excel.Application()
xlBooks = xlApp.Workbooks
xlBook = xlBooks.Open("C\:hoge0.xls")
xlSheets = xlBook.Worksheets
xlBook.Worksheets(1).Range("F4") = shhoge(0)
xlBook.Worksheets(1).Range("I4") = shhoge(0)
xlBook.Worksheets(1).Range("K4") = shhoge(5)
xlBook.Worksheets(1).Range("M5") = shhoge(0)
xlBook.Worksheets(1).Range("O4") = shhoge(1)
xlBook.Worksheets(1).Range("R4") = shhoge(1)
xlBook.Worksheets(1).Range("U5") = shhoge(1)
xlBook.Worksheets(1).Range("T5") = shhoge(2)
xlBook.Worksheets(1).Range("W5") = shhoge(3)
xlBook.Worksheets(1).Range("X5") = shhoge(4)
' シートのカウントが 1 より大きければシートを削除する
If xlSheets.Count > 1 Then
' Display アラートを消す
xlApp.DisplayAlerts = False
' シートを削除する
xlSheet = DirectCast(xlSheets(2), Excel.Worksheet)
xlSheet.Delete()
End If
' 1000 ミリ秒 (1秒) 待機する
System.Threading.Thread.Sleep(1000)
' Excel ブックを保存する
xlApp.DisplayAlerts = False
xlBook.SaveAs("C:\hoge.xls")
' Microsoft Excel を終了する
xlApp.Quit()
Finally
' 参照したオブジェクトをすべて解放する
If Not xlSheet Is Nothing Then ←[警告]値が割り当てられる前に使用されています。
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
End If
If Not xlSheets Is Nothing Then ←[警告]値が割り当てられる前に使用されています。
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
End If
If Not xlBook Is Nothing Then ←[警告]値が割り当てられる前に使用されています。
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
End If
If Not xlBooks Is Nothing Then ←[警告]値が割り当てられる前に使用されています。
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
End If
If Not xlApp Is Nothing Then ←[警告]値が割り当てられる前に使用されています。
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
End If
End Try
Form2.Show()
End Sub
No.1ベストアンサー
- 回答日時:
放っておいても実害はありませんが、
Dim xlBooks As Excel.Workbooks = Nothing
のように、変数定義時に Nothing を入れておけばよいですよ。
Dim xlApp As Excel.Application = Nothing
Dim xlBooks As Excel.Workbooks = Nothing
Dim xlBook As Excel.Workbook = Nothing
Dim xlSheets As Excel.Sheets = Nothing
Dim xlSheet As Excel.Worksheet = Nothing
これでなくなりました!
実害はないのですね。きちんと覚えておきます!
ありがとうございました
No.2
- 回答日時:
例えば以下のようなプログラムがあった場合を考えてみてください。
Dim aa As TextBox
Dim bb As Boolean = False
If Not bb Then
aa = New TextBox
aa.Name = "hoge"
End If
MessageBox.Show(aa.Name)
もしbbがtrueだった場合aaはnewされず、aaには値が割り振られる前に使用されることになり、NullReferenceExceptionが発生します。
要はコーディングする上での作法が悪いですよ、という警告です。
解決するにはNo1さんのように初期値を設定する。
または、どのようにプログラムが流れても値が設定されたうえで参照されるようにコードを記述することです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access2003 オートナンバーの現...
-
Excel-vba 文字列と変数を...
-
C言語 exitの使い方
-
UWSCのcallについて
-
乱数の最大値
-
数字の位ごとの値を表示するプ...
-
DWORDって
-
形式を選択して貼り付け 以下の...
-
計算機イプシロン
-
long型のランダムな値を返す方法
-
フォームを開くときに、コンボ...
-
LOG(10)2の意味は?
-
0~180まで0.0001刻みで乱数を...
-
c言語 偶数個
-
足して100になるような乱数のア...
-
初心者が簡単なPowerShellスク...
-
エラーの意味は? Lvalue req...
-
初心者プログラミング
-
VisualStudio2022でC言語プログ...
-
C言語 列挙型(enum型)変数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
数字の位ごとの値を表示するプ...
-
VB6.0-整数と余りを求める
-
VBAで配列のNULL判定
-
足して100になるような乱数のア...
-
フリーランタイマーの時間差分...
-
DataGridView 複数行同時変更...
-
相関係数p値の出し方
-
世界のナベアツ
-
10進数をアスキーコードに変換
-
C#で動的にコントロールを取得...
-
ラジオボタンの値の取得につい...
-
DWORDって
-
バッチファイルで正規表現を使...
-
4択問題のプログラムでランダム...
-
1つ前の値を変数に保存する方法
-
VBAの定数の使い方で、計算値を...
-
コンボボックスの名前を変数に...
おすすめ情報