2013-04-05 2 views
0

У меня возникла проблема с появлением окна «File Now Available», которое открывается из Excel, когда я импортирую файл в свою программу.Предотвратить всплывающее сообщение Excel в коде VB

http://oi50.tinypic.com/23wajt.jpg

Private Function XLSSelect_Click(strFileName As String) As DataTable 

    Dim connectionStringTemplate As String = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source={0};" + "Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1""" 
    Dim connectionString As String = String.Format(connectionStringTemplate, strFileName) 

    Try 
     Dim sqlSelect As String = "SELECT * FROM [" & GetExcelSheetNames(strFileName)(0) & "];" 
     ' Load the Excel worksheet into a DataTable 
     Dim workbook As DataSet = New DataSet() 
     Dim excelAdapter As System.Data.Common.DataAdapter = New System.Data.OleDb.OleDbDataAdapter(sqlSelect, connectionString) 
     excelAdapter.Fill(workbook) 

     For i As Integer = 0 To workbook.Tables(0).Columns.Count - 1 
      workbook.Tables(0).Columns(i).ColumnName = workbook.Tables(0).Columns(i).ColumnName.ToString.Trim.Replace(" ", "") 
     Next 

     Return workbook.Tables(0).Copy 
    Catch 
     Throw New Exception("Error reading from Excel Spreadsheet. Are you sure this file isn't currently open in Excel, and that it has been saved as a .xls through Excel at least once?") 
    End Try 
    Return Nothing 
End Function 

Private Shared Function GetExcelSheetNames(excelFile As String) As [String]() 
    Dim objConn As OleDbConnection = Nothing 
    Dim dt As System.Data.DataTable = Nothing 

    Try 
     Dim connString As [String] = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & excelFile & ";Extended Properties=Excel 12.0;" 
     ' Create connection object by using the preceding connection string. 
     objConn = New OleDbConnection(connString) 

     ' Open connection with the database. 
     objConn.Open() 
     ' Get the data table containg the schema guid. 
     dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing) 

     If dt Is Nothing Then 
      Return Nothing 
     End If 

     Dim excelSheets As [String]() = New [String](dt.Rows.Count - 1) {} 
     Dim i As Integer = 0 

     'Add the sheet name to the string array. 
     For Each row As DataRow In dt.Rows 
      excelSheets(i) = row("TABLE_NAME").ToString() 
      i += 1 
     Next 

     Return excelSheets 
    Catch ex As Exception 
     Return Nothing 
    Finally 
     ' Clean up. 
     If objConn IsNot Nothing Then 
      objConn.Close() 
      objConn.Dispose() 
     End If 
     If dt IsNot Nothing Then 
      dt.Dispose() 
     End If 
    End Try 
End Function 

Каждый знает, как я могу идти об отключении этого?

+0

Вы открыть EXCEL, прежде чем запустить программу? – Kasnady

+0

Файл excel был открыт несколько раз и работал, прежде чем запускать его в программе. но он не открыт в момент запуска программы. – Xnub

+0

Xnub: Можете ли вы убедиться, что он не открыт (Check task Manager) –

ответ

1
Dim appExcel As Excel.Application 

Set appExcel = New Excel.Application 
appExcel.Workbooks.Open "e:\development\test.xls", 0 

' Do your thing here... 

appExcel.DisplayAlerts = False ' Surpress save dialog box. 
appExcel.Quit ' Quit without saving. you can change as you want 
Set appExcel = Nothing 

в коде

Try 
     Dim connString As [String] = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & excelFile & ";Extended Properties=Excel 12.0;" 
     ' Create connection object by using the preceding connection string. 
     objConn = New OleDbConnection(connString) 

     ' Open connection with the database. 
     objConn.Open() 

appExcel.DisplayAlerts = False 'попробуйте здесь!

 ' Get the data table containg the schema guid. 
     dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing) 

Источники: http://www.xtremevbtalk.com/showthread.php?t=16007

+0

Не уверен, как адаптировать это к моему коду, но я пытаюсь:/ – Xnub

+0

смотрите ниже код, я адаптирую его к вам, просто нужно вставить 1 строку >>> appexcel.displayalerts = false <<< после вашего подключения .open – Kasnady

+0

переменная sacxcel не находится нигде в моем коде, и использование каких-либо других переменных не будет работать, поскольку они являются соединениями с базой данных и т. д. и не распознают '.displayalerts = false' – Xnub

Смежные вопросы