0

MSExcelドキュメントのループと作成に問題があります。以下のコードスニペット

Private Sub selectedRowsButton_Click( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles selectedRowsButton.Click

    Dim selectedRowCount As Integer = _
        DataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected)

    If selectedRowCount > 0 Then

        Dim sb As New System.Text.StringBuilder()
        Dim objexcel As New Excel.Application
        Dim i As Integer
        Dim FACode As Integer
        Dim Sitename As Integer
        Dim Sitecode As Integer
        Dim Address As Integer
        Dim City As Integer
        Dim State As Integer
        Dim ZIP As Integer


        FACode = 1
        Sitename = 5
        Sitecode = 2
        Address = 6
        City = 7
        State = 9
        ZIP = 10
        Dim xlWorkbook As Excel.Workbook
        xlWorkbook = objexcel.Workbooks.Open("template path")
        For i = 0 To selectedRowCount - 1

            objexcel.Visible = True
            objexcel.Range("B2").Value = DataGridView1.SelectedCells(Sitename).Value.ToString()

            objexcel.Range("B3").Value = DataGridView1.SelectedCells(Sitecode).Value.ToString()

            objexcel.Range("B5").Value = DataGridView1.SelectedCells(FACode).Value.ToString()

            Dim thisfile As Object


            thisfile = objexcel.Range("B5").Value & "." & _
            objexcel.Range("B3").Value & "." & "otherstring" & "." & "otherstring2" & "." & ".xls"

            With objexcel

                xlWorkbook.SaveAs(Filename:="c:\test\" & thisfile)
                '~~> Close the Excel file without saving
                xlWorkbook.Close(False)
            End With          

        Next i

    End If

ステートメントに対してHRESULT:0x800A03ECからエラー例外が発生します

  objexcel.Range("B2").Value = DataGridView1.SelectedCells(Sitename).Value.ToString()

プログラムを作成する前にDataGridの1つの行だけを選択すると、正常に機能します。複数の行を選択すると、このエラーが発生します。私は特に複数の行を選択するためのプログラムを作成しているので、どこが間違っているのか困惑しています。どんな助けやポインタもありがたいです、ありがとう!

4

1 に答える 1

0

2つのこと

  1. objexcelAsを宣言しExcel.Applicationたので、を使用しないでくださいobjexcel.Range("B2").Value。を使用しxlWorkbook.Range("B2").Valueます。コードのどこでも変更できます。

  2. そのように使うことはできませんSaveAs。以下のスナップショットを参照してください。xlsファイルとして保存する場合は、を使用する必要がありますFileFormat:=56

このコード例を参照してください

'~~> Save As file
xlWorkbook.SaveAs(Filename:="c:\test\" & thisfile, FileFormat:=56)

ファイル形式を指定しない場合、開いた後にファイルを開くとエラーメッセージが表示されます。

VB.NetからExcelを自動化する方法については、このリンクを参照してください。

トピック:VB.NETとExcel

リンクhttp ://www.siddharthrout.com/vb-dot-net-and-excel/

ここに画像の説明を入力してください

あなたがDGVで何をしようとしているのかよくわかりません。ショーンが述べたように、あなたは値を増やしていません。DGVの外観と、エクスポート後のExcelファイルの外観のスナップショットを投稿できる場合は、はるかに優れた方法でお手伝いできます:)

于 2012-06-25T15:35:36.493 に答える