2016-11-17 10 views
0

私がしようとしているのはコンバータです。私は[Sheet1 $]として指定されているので、Excelファイルを開く際に問題があります。シートの名前が変更されている場合、私のコードはそれを読んでいません。おそらくシートの名前を取得する方法はありますか?名前の変更に関係なく、Excelファイルのシートを読み込む方法は?

Private Sub btnSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelect.Click 
    If cmbPortal.Text.Length = 0 Then 
     MessageBox.Show("Select portal to process first", "Invalid", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
    Else 
     Select Case cmbPortal.Text 
      Case "Robinsons" 
       FileFilter = "Portable Document File (*.pdf)|*.pdf" 
       txtFilePath.Text = parse.showdialog(FileFilter) 
       If txtFilePath.Text = Nothing Then 
        MessageBox.Show("No file was selected", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) 
       End If 
      Case "Waltermart" 
       FileFilter = "Portable Document File (*.pdf)|*.pdf" 
       txtFilePath.Text = parse.showdialog(FileFilter) 
       If txtFilePath.Text = Nothing Then 
        MessageBox.Show("No file was selected", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) 
       End If 
      Case "7-11" 
       Dim OpenFileDialog1 As New OpenFileDialog 
       With OpenFileDialog1 
        .FileName = "Excel File" 
        .Title = "Open File" 
        .InitialDirectory = "C:\User\Desktop" 
        .Filter = "EXCEL|*.xls;*.xlsx;*.xlsm;*.xlsb" 
        .FilterIndex = 1 
       End With 
       If OpenFileDialog1.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then 
        Me.Cursor = Cursors.WaitCursor 
        Try 
         Dim FileName As String = OpenFileDialog1.FileName 
         Dim strConnString As String 
         strConnString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & FileName & ";" 
         Dim strSQL As String 
         strSQL = "SELECT * FROM [Sheet1$]" 
         Dim y As New Odbc.OdbcDataAdapter(strSQL, strConnString) 
         y.Fill(RetVal) 
         txtFilePath.Text = FileName 
        Catch 
         MessageBox.Show("An Error Occurred, Please Contact MIS for Assistance", "SYSTEM", MessageBoxButtons.OK, MessageBoxIcon.Error) 
        End Try 
        Me.Cursor = Cursors.Default 
       ElseIf txtFilePath.Text = Nothing Then 
        MessageBox.Show("No file was selected", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) 
       End If 
       Me.Cursor = Cursors.Default 
     End Select 
     If txtFilePath.Text.Length = 0 Then 
      btnSelect.Enabled = True 
      btnConvert.Enabled = False 
      cmbPortal.Enabled = True 
     Else 
      btnSelect.Enabled = False 
      btnConvert.Enabled = True 
      cmbPortal.Enabled = False 
     End If 
    End If 
End Sub 
+1

取得しているワークシートのインデックスは修正されていますか?例えば、常に最初のワークシートですか? –

+0

あなたのタイトルはあなたの質問の内容に基づいて誤解を招くこともあります。 –

+1

常に最初のワークシートで、コードに基づいて、最初のシートの名前がSheet1の場合にのみ指定されます。私がやりたかったのは、名前が変更されても最初のシートを読み込むことでした。私は本当にタイトルのために申し訳なく思っており、気づいてくれてありがとう。 – Biboy

答えて

1

これを試してみてください:

Dim xlApp As New Microsoft.Office.Interop.Excel.Application 
Dim xlWorkBook As Microsoft.Office.Interop.Excel.WorkBook= xlApp.Workbooks.Open(FileName) 

Dim SheetName As String = xlWorkBook.Worksheets(1).Name.ToString 

を今、あなたはシート名を持っていることを、あなたはstrSQL 1のようにそれを連結することができます。これはあなたを与えるだろう

strSQL = "SELECT * FROM [" & SheetName & "$]"

ワークブックの最初のワークシート。

+1

うわー、ありがとう!それは素晴らしい仕事! Microsoft.Office.Interop.Excel.Workookです。ワークブックの "b"がありません。どうもありがとう! – Biboy

+0

それを指摘してくれてありがとう。それは私の「秘密」のコードからのもので、私がここに投稿する前にそれをテストしていませんでした。私はそれが助けられてうれしいです。ハッピーコーディング! –

関連する問題