• ベストアンサー

VB2008でテキスト以外のファイルの開き方について

現在VB2008環境でファイル操作ができるソフトを開発中です。 openfiledialogでファイルを選択して開く、といったことがしたいと思い、以下のようにやってみました。 Dim ofd As New OpenFileDialog() ofd.FileName = FN ofd.InitialDirectory = DN ofd.FilterIndex = 2 ofd.Title = "" ofd.RestoreDirectory = True ofd.CheckFileExists = True ofd.CheckPathExists = True If ofd.ShowDialog() = DialogResult.OK Then Dim FO As Object FO = Shell(ofd.InitialDirectory + ofd.FileName, vbNormalFocus) End If FN,DNは他で指定したファイル、ディレクトリの名前です。 これでデバック実行すると「FileNotFoundExceptionはハンドルされませんでした」というエラーが出て開けませんでした。 VBでのソフト開発自体はじめて間もない為理解していない部分も多く説明も至ってはいないと思いますが、どうかよろしくお願いします。

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

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.2

バイナリーファイルとして読み込めばよいわけですよね? Dim fileContents As Byte() fileContents = My.Computer.FileSystem.ReadAllBytes(ofd.FileName) 文字列に変換したい場合 dim str as string 'Shift JISとして文字列に変換 str = System.Text.Encoding.GetEncoding(932).GetString(fileContents) 'JISとして変換 str = System.Text.Encoding.GetEncoding(50220).GetString(fileContents) 'EUCとして変換 str = System.Text.Encoding.GetEncoding(51932).GetString(fileContents) 'UTF-8として変換 str = System.Text.Encoding.UTF8.GetString(fileContents) または最初から文字列として読み込む場合 Using sr As New StreamReader(ofd.FileName, System.Text.Encoding.Default) Dim str As String Do '1行づつ読み込む str = sr.ReadLine Loop Until sr.Peek = -1 End Using

negi0810
質問者

お礼

ありがとうございます。 非常に参考になりました。

その他の回答 (1)

回答No.1

FileNotFoundExceptionを調べていただければわかると思いますが、存在しないファイルを開こうとしてExceptionが発生しています。 ちなみにShellでは終了コードが取得できません。 終了コードが取得したい場合はprocessを利用してください。 http://jeanne.wankuma.com/tips/vb.net/file/

関連するQ&A