DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ファイルのダウンロード処理でエラー

環境/言語:[vb.net2005]
分類:[.NET]

言語:vb.net2005

windowsアプリケーション

画面処理
画面の中に「実行」と「キャンセル」ボタンがあります。
実行ボタンクリックするとexcelのグラフを開くのですが、
1回目に「絶対パス情報が必要です。」のエラーが@で発生します。
エラーダイアログボックスを表示後、画面は閉じずに
2回目をクリックではエラーにならずにexcelファイルが開くのですが、原因がわかりません。ご教授下さい。

excelファイルをSystem.Net.WebClientクラスを使用して
ローカル上にダウンロードする処理を行っているのですが
Dim exFile new System.Net.WebClient
Dim ダウンロード元 as string ="http://localhost/excel/test.xls"
Dim ダウンロード先 as string ="c:\temp\20080514.xls"

exFile.DownLoadFile(ダウンロード元,) ・・・・@

絶対パス情報が必要です。のエラーが@で発生します。
■No22039に返信(ゆうさんの記事)
> Dim exFile new System.Net.WebClient
> Dim ダウンロード元 as string ="http://localhost/excel/test.xls"
> Dim ダウンロード先 as string ="c:\temp\20080514.xls"
>
> exFile.DownLoadFile(ダウンロード元,) ・・・・@
>

質問内容を省略したのかどうか不明ですが、ダウンロード先を入れるとかexFile.DownLoadFile(ダウンロード元,ダウンロード先)
失礼いたしました。
環境/言語:[vb.net2005] 
分類:[.NET] 

言語:vb.net2005

windowsアプリケーション

画面処理
画面の中に「実行」と「キャンセル」ボタンがあります。
実行ボタンクリックするとexcelのグラフを開くのですが、
実行ボタンをクリックすると「絶対パス情報が必要です。」のエラーが@で発生します。エラーダイアログボックスを表示後、画面は閉じずに
続けて実行ボタンをクリックすると上記のエラーにならずにexcelファイルが開くのですが、原因がわかりません。ご教授下さい。

excelファイルをSystem.Net.WebClientクラスを使用して
ローカル上にダウンロードする処理を行っているのですが
Dim exFile new System.Net.WebClient
Dim ダウンロード元 as string ="http://localhost/excel/test.xls"
Dim ダウンロード先 as string ="c:\temp\20080514.xls"

exFile.DownLoadFile(ダウンロード元,ダウンロード先) ・・・・@

絶対パス情報が必要です。のエラーが@で発生します。
Mr.Tです、こんにちは。

もう少しきり分けが必要に思いますが、
実行ボタンでおこなっているのは、
ここの処理で、たんなるダウンロードの処理ですか?
> Dim exFile new System.Net.WebClient
> Dim ダウンロード元 as string ="http://localhost/excel/test.xls"
> Dim ダウンロード先 as string ="c:\temp\20080514.xls"
>
> exFile.DownLoadFile(ダウンロード元,ダウンロード先) ・・・・@

ここでは、文字通りダウンロードだけでExcelが起動されないと
思いますが。
そのExcelを表示させているのは、どこでしょう?

> 絶対パス情報が必要です。のエラーが@で発生します。
このエラー内容からは、Excelが表示しているのか、それともVB.NET側で
表示させているのかわかりません。

もう少し情報を出せないでしょうか。
■No22045に返信(Mr.Tさんの記事)
> Mr.Tです、こんにちは。
>
> もう少しきり分けが必要に思いますが、
> 実行ボタンでおこなっているのは、
> ここの処理で、たんなるダウンロードの処理ですか?
>>Dim exFile new System.Net.WebClient
>>Dim ダウンロード元 as string ="http://localhost/excel/test.xls"
>>Dim ダウンロード先 as string ="c:\temp\20080514.xls"
>>
>>exFile.DownLoadFile(ダウンロード元,ダウンロード先) ・・・・@
>
> ここでは、文字通りダウンロードだけでExcelが起動されないと
> 思いますが。
> そのExcelを表示させているのは、どこでしょう?
>
>>絶対パス情報が必要です。のエラーが@で発生します。
> このエラー内容からは、Excelが表示しているのか、それともVB.NET側で
> 表示させているのかわかりません。
>
> もう少し情報を出せないでしょうか。

ご指摘ありがとうございます。

private Sub btnOut_Click(ByVal sender.........省略)
 Dim exFile new System.Net.WebClient
 Dim ダウンロード元 as string ="http://localhost/excel/test.xls"
 Dim ダウンロード先 as string ="c:\temp\20080514.xls"

 Try
 exFile.DownLoadFile(ダウンロード元,ダウンロード先) ・・・・@
Catch ex As Exception
MessageBox.Show("ダウンロード処理でエラー発生:" & err.Description)
 exit sub
 End Try
 '以降にexcel起動の処理

@でエラーとなり、Catchでエラー内容をメッセージボックスで表示
 させたら、「絶対パス情報が必要です。」のエラー内容でした。
 何が原因なのでしょうか?
 ちなみに、vb.net2003では、エラーにはなりません。
 
 
> private Sub btnOut_Click(ByVal sender.........省略)
>  Dim exFile new System.Net.WebClient
>  Dim ダウンロード元 as string ="http://localhost/excel/test.xls"
>  Dim ダウンロード先 as string ="c:\temp\20080514.xls"
>
>  Try
>  exFile.DownLoadFile(ダウンロード元,ダウンロード先) ・・・・@
> Catch ex As Exception
> MessageBox.Show("ダウンロード処理でエラー発生:" & err.Description)
>  exit sub
>  End Try
>  '以降にexcel起動の処理
>
> @でエラーとなり、Catchでエラー内容をメッセージボックスで表示
>  させたら、「絶対パス情報が必要です。」のエラー内容でした。
>  何が原因なのでしょうか?
>  ちなみに、vb.net2003では、エラーにはなりません。

WebClient.DownLoadFileで発生する例外は、
WebException若しくは、NotSupportedExceptionのどちらかです。

メッセージを取得する場合に、ex.ToStringで行ってみたらどうなりますか?
■No22047に返信(Mr.Tさんの記事)
>>private Sub btnOut_Click(ByVal sender.........省略)
>> Dim exFile new System.Net.WebClient
>> Dim ダウンロード元 as string ="http://localhost/excel/test.xls"
>> Dim ダウンロード先 as string ="c:\temp\20080514.xls"
>>
>> Try
>>  exFile.DownLoadFile(ダウンロード元,ダウンロード先) ・・・・@
>> Catch ex As Exception
>> MessageBox.Show("ダウンロード処理でエラー発生:" & err.Description)
>>  exit sub
>> End Try
>> '以降にexcel起動の処理
>>
>> @でエラーとなり、Catchでエラー内容をメッセージボックスで表示
>> させたら、「絶対パス情報が必要です。」のエラー内容でした。
>> 何が原因なのでしょうか?
>> ちなみに、vb.net2003では、エラーにはなりません。
>
> WebClient.DownLoadFileで発生する例外は、
> WebException若しくは、NotSupportedExceptionのどちらかです。
>
> メッセージを取得する場合に、ex.ToStringで行ってみたらどうなりますか?
>
ありがとうございます。

ex.ToStringで行った結果以下の内容が表示されました。

system.NullReferenceException:絶対パス情報が必要です。
場所 system.Net.WebClient.DownLoadFile(String address, String fileName)
タイプミスだと思ったのですが、
> >> Dim exFile new System.Net.WebClient
これは、
Dim exFile as new System.Net.WebClient
ですよね?


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim exFile As New System.Net.WebClient
        Dim ダウンロード元 As String = "http://localhost/Sample.xls"
        Dim ダウンロード先 As String = "d:\temp\test.xls"

        Try
            exFile.DownloadFile(ダウンロード元, ダウンロード先)
        Catch ex As Exception
            MessageBox.Show("ダウンロード処理でエラー発生:" & Err.Description)
            Exit Sub
        End Try

    End Sub

こんなサンプルでは例外は発生しませんね。

system.NullReferenceExceptionが発生しているということは、
DownloadFileで発生しているわけではなさそうです。

確認なのですが、exFileや、ダウンロード元,ダウンロード先は
例外が発生する前には、きちんと値が設定できていることは
確認できますか?
#ウォッチウィンドウなどを利用して

■No22048に返信(ゆうさんの記事)
> ■No22047に返信(Mr.Tさんの記事)
> >>private Sub btnOut_Click(ByVal sender.........省略)
> >> Dim exFile new System.Net.WebClient
> >> Dim ダウンロード元 as string ="http://localhost/excel/test.xls"
> >> Dim ダウンロード先 as string ="c:\temp\20080514.xls"
> >>
> >> Try
> >>   exFile.DownLoadFile(ダウンロード元,ダウンロード先) ・・・・@
> >>  Catch ex As Exception
> >>    MessageBox.Show("ダウンロード処理でエラー発生:" & err.Description)
> >>   exit sub
> >> End Try
> >> '以降にexcel起動の処理
> >>
> >>  @でエラーとなり、Catchでエラー内容をメッセージボックスで表示
> >> させたら、「絶対パス情報が必要です。」のエラー内容でした。
> >> 何が原因なのでしょうか?
> >> ちなみに、vb.net2003では、エラーにはなりません。
>>
>>WebClient.DownLoadFileで発生する例外は、
>>WebException若しくは、NotSupportedExceptionのどちらかです。
>>
>>メッセージを取得する場合に、ex.ToStringで行ってみたらどうなりますか?
>>
> ありがとうございます。
> 
> ex.ToStringで行った結果以下の内容が表示されました。
> 
> system.NullReferenceException:絶対パス情報が必要です。
> 場所 system.Net.WebClient.DownLoadFile(String address, String fileName)
> 
>
>ちなみに、vb.net2003では、エラーにはなりません。

vb.net2005特有のエラーとは思えない、環境の違いか何かかな

ダウンロード元とダウンロード先を他のに変えるなどして、
vb.net2005でも一度動くようにしてから、徐々に元に戻していく
しかないかな原因知るには。
■No22051に返信(やじゅさんの記事)
> >ちなみに、vb.net2003では、エラーにはなりません。
>
> vb.net2005特有のエラーとは思えない、環境の違いか何かかな
>
> ダウンロード元とダウンロード先を他のに変えるなどして、
> vb.net2005でも一度動くようにしてから、徐々に元に戻していく
> しかないかな原因知るには。

ありがとうございました。
ダウンロード先、元の内容を変えてみたのですが
うまくいかないので、
2回目で動作するので、最終手段として考えます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板