Excelのファイルを選択して処理するプログラム への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 ベリークイック  (社会人)
投稿日時
2015/11/5 19:15:34
shu様アドバイスを頂きまして誠にありがとう御座います。
早速、ご指摘頂きましたようにForm1にTextBox1を設置してプログラムを下記のように
修正したのですが、「wb = app.Workbooks.Open(fn)」のところで”COMExceptionはハンドル
されていませんでした”とエラー表示されて動作出来ませんでした。
誠に申し訳ありませんが、アドバイスを頂けると助かります。
~~プログラム~~
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' OpenFileDialog の新しいインスタンスを生成する (デザイナから追加している場合は必要ない)
Dim OpenFileDialog1 As New OpenFileDialog()
' ダイアログのタイトルを設定する
'OpenFileDialog1.Title = "ダイアログのタイトルをココに書く"
' 初期表示するディレクトリを設定する
OpenFileDialog1.InitialDirectory = "C:\"
' 初期表示するファイル名を設定する
OpenFileDialog1.FileName = "初期表示するファイル名をココに書く"
' ダイアログを表示し、戻り値が [OK] の場合は、選択したファイルを表示する
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
'MessageBox.Show(OpenFileDialog1.FileName)
TextBox1.Text = OpenFileDialog1.FileName
' Multiselect が True の場合はこのように列挙する
'For Each nFileName As String In OpenFileDialog1.FileNames
'MessageBox.Show(nFileName)
'Next nFileName
End If
' 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照)
'OpenFileDialog1.Dispose()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim app As New Excel.Application
Dim wb As Excel.Workbook
Dim wsh As Excel.Worksheet
Dim fn As String = "TextBox1.Text"
Dim rin, rout, tan As Excel.Range
wb = app.Workbooks.Open(fn)
'シート1をセット
wsh = wb.Sheets(1)
Try
app.Visible = True
With wsh
rin = .Range(.Cells(1, 1), .Cells(3, 3))
End With
wb.Close()
app.Quit()
app = Nothing
Catch ex As Exception
wb.Close()
app.Quit()
app = Nothing
End Try
End Sub
End Class
早速、ご指摘頂きましたようにForm1にTextBox1を設置してプログラムを下記のように
修正したのですが、「wb = app.Workbooks.Open(fn)」のところで”COMExceptionはハンドル
されていませんでした”とエラー表示されて動作出来ませんでした。
誠に申し訳ありませんが、アドバイスを頂けると助かります。
~~プログラム~~
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' OpenFileDialog の新しいインスタンスを生成する (デザイナから追加している場合は必要ない)
Dim OpenFileDialog1 As New OpenFileDialog()
' ダイアログのタイトルを設定する
'OpenFileDialog1.Title = "ダイアログのタイトルをココに書く"
' 初期表示するディレクトリを設定する
OpenFileDialog1.InitialDirectory = "C:\"
' 初期表示するファイル名を設定する
OpenFileDialog1.FileName = "初期表示するファイル名をココに書く"
' ダイアログを表示し、戻り値が [OK] の場合は、選択したファイルを表示する
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
'MessageBox.Show(OpenFileDialog1.FileName)
TextBox1.Text = OpenFileDialog1.FileName
' Multiselect が True の場合はこのように列挙する
'For Each nFileName As String In OpenFileDialog1.FileNames
'MessageBox.Show(nFileName)
'Next nFileName
End If
' 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照)
'OpenFileDialog1.Dispose()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim app As New Excel.Application
Dim wb As Excel.Workbook
Dim wsh As Excel.Worksheet
Dim fn As String = "TextBox1.Text"
Dim rin, rout, tan As Excel.Range
wb = app.Workbooks.Open(fn)
'シート1をセット
wsh = wb.Sheets(1)
Try
app.Visible = True
With wsh
rin = .Range(.Cells(1, 1), .Cells(3, 3))
End With
wb.Close()
app.Quit()
app = Nothing
Catch ex As Exception
wb.Close()
app.Quit()
app = Nothing
End Try
End Sub
End Class
投稿者 shu  (社会人)
投稿日時
2015/11/5 11:28:22
Button1_Clickで取得したファイル名をメッセージ表示するだけでなく
Private変数(クラス全体で使用可能な変数)に設定またはForm上に
TextBoxを配置しそこにファイル名を設定
Button2_ClickではButton1_Clickで設定されたファイル名を使用する
Private変数(クラス全体で使用可能な変数)に設定またはForm上に
TextBoxを配置しそこにファイル名を設定
Button2_ClickではButton1_Clickで設定されたファイル名を使用する
投稿者 ベリークイック  (社会人)
投稿日時
2015/11/5 08:38:17
お世話になります。VisalBasic2005でExcelのファイルを選択して処理するプログラムを作りたいのですが、ご親切な方アドバイスをお願い致します。
Form1にはボタン1とボタン2を設置しています。ボタン1で開いたファイルをアクティブにして
ボタン2でExcelの計算処理を行いたいと思います。初心者で詳しい事はあまり判りませんので
具体的にアドバイスを頂けると助かります。
誠に申し訳ありませんが、宜しくお願い致します。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim OpenFileDialog1 As New OpenFileDialog()
' ダイアログのタイトルを設定する
'OpenFileDialog1.Title = "ダイアログのタイトルをココに書く"
' 初期表示するディレクトリを設定する
OpenFileDialog1.InitialDirectory = "C:\"
' 初期表示するファイル名を設定する
OpenFileDialog1.FileName = "初期表示するファイル名をココに書く"
' ダイアログを表示し、戻り値が [OK] の場合は、選択したファイルを表示する
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
MessageBox.Show(OpenFileDialog1.FileName)
' Multiselect が True の場合はこのように列挙する
'For Each nFileName As String In OpenFileDialog1.FileNames
'MessageBox.Show(nFileName)
'Next nFileName
End If
' 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照)
'OpenFileDialog1.Dispose()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim app As New Excel.Application
Dim wb As Excel.Workbook
Dim wsh As Excel.Worksheet
Dim fn As String = "nFileName"
Dim rin, rout, tan As Excel.Range
wb = app.Workbooks.Open(fn)
'シート1をセット
wsh = wb.Sheets(1)
Try
app.Visible = True
With wsh
rin = .Range(.Cells(1, 1), .Cells(3, 3))
End With
wb.Close()
app.Quit()
app = Nothing
Catch ex As Exception
wb.Close()
app.Quit()
app = Nothing
End Try
End Sub
End Class
Form1にはボタン1とボタン2を設置しています。ボタン1で開いたファイルをアクティブにして
ボタン2でExcelの計算処理を行いたいと思います。初心者で詳しい事はあまり判りませんので
具体的にアドバイスを頂けると助かります。
誠に申し訳ありませんが、宜しくお願い致します。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim OpenFileDialog1 As New OpenFileDialog()
' ダイアログのタイトルを設定する
'OpenFileDialog1.Title = "ダイアログのタイトルをココに書く"
' 初期表示するディレクトリを設定する
OpenFileDialog1.InitialDirectory = "C:\"
' 初期表示するファイル名を設定する
OpenFileDialog1.FileName = "初期表示するファイル名をココに書く"
' ダイアログを表示し、戻り値が [OK] の場合は、選択したファイルを表示する
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
MessageBox.Show(OpenFileDialog1.FileName)
' Multiselect が True の場合はこのように列挙する
'For Each nFileName As String In OpenFileDialog1.FileNames
'MessageBox.Show(nFileName)
'Next nFileName
End If
' 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照)
'OpenFileDialog1.Dispose()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim app As New Excel.Application
Dim wb As Excel.Workbook
Dim wsh As Excel.Worksheet
Dim fn As String = "nFileName"
Dim rin, rout, tan As Excel.Range
wb = app.Workbooks.Open(fn)
'シート1をセット
wsh = wb.Sheets(1)
Try
app.Visible = True
With wsh
rin = .Range(.Cells(1, 1), .Cells(3, 3))
End With
wb.Close()
app.Quit()
app = Nothing
Catch ex As Exception
wb.Close()
app.Quit()
app = Nothing
End Try
End Sub
End Class
エラー発生が特に予想されるのは、ファイルを開くところですから、
Open メソッドも Try 句の中に入れておくべきでしょうね。
> Dim fn As String = "TextBox1.Text"
Dim fn As String = TextBox1.Text
にしないと、意味が変わってしまいますよ。
ちなみに上記を実行すると、下記の結果になります。
TextBox2 が「おはようTextBox1.Textこんばんは」
TextBox3 が「おはよう"TextBox1.Text"こんばんは」
TextBox4 が「おはよう" & "TextBox1.Text" & "こんばんは」
TextBox5 が「おはよう"TextBox1.Text"こんばんは」
TextBox6 が「おはようTextBox1.Textこんばんは」
TextBox7 が「おはようこんにちはこんばんは」
TextBox8 が「おはよう{TextBox1.Text}こんばんは」
TextBox9 が「おはようこんにちはこんばんは」 ← VB2015向け構文(2015未満だと文法エラー)
なお、VB.NET から参照していた Excel オブジェクトを正しく解放するには、
Marshal.ReleaseComObject というメソッドを呼び出す必要があります。
VBA とは違って、Nothing を代入するだけでは Excel オブジェクトを
解放することにはならないので注意してください。