2016-03-21 13 views
0

.NET 4.5 ile VB.NET'te bir formum var. Formun yan yana açılan bir EXCEL dosyası var.VB.NET Formundan Excel sayfasındaki canlı güncelleştirme verileri Form

Güncel verileri EXCEL sayfasında LIVE kodundan görmek istiyorum. Ancak verileri göremiyorum. Aşağıda

kod

Imports Microsoft.Office.Interop.Excel 
Public Class Form1 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    'Me.OpenFileDialog1.ShowDialog() 
    Dim xlApp As Application 
    Dim xlWorkBook As Workbook 
    Dim xlWorkSheet As Worksheet 

    xlApp = New ApplicationClass 
    'xlApp.ScreenUpdating = False 
    xlWorkBook = xlApp.Workbooks.Open("E:\BACKUP\TRY.xls") 
    xlWorkSheet = xlWorkBook.Worksheets("Sheet1") 
    'display the cells value B2 
    MsgBox(xlWorkSheet.Cells(8, 1).value) 'GETTING EXISTING VALUE OK 
    'edit the cell with new value 
    xlWorkSheet.Cells(2, 2) = "HI" 'WANT TO SEE THIS DATA BEING LIVE UPDATED 
    'xlWorkBook.Close() 'DONT WANT TO CLOSE THE OPENED SHEET/WORKBOOK 
    'xlApp.ScreenUpdating = True 
    xlApp.Quit() 

    releaseObject(xlApp) 
    releaseObject(xlWorkBook) 
    releaseObject(xlWorkSheet) 

End Sub 

Private Sub releaseObject(ByVal obj As Object) 
    Try 
     System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) 
     obj = Nothing 
    Catch ex As Exception 
     obj = Nothing 
    Finally 
     GC.Collect() 
    End Try 
End Sub 
End Class 

cevap

1

Aşağıdaki örnek ana excel çalışma bir kod modülünde yapılır ise, çalışma sayfası nesnesi Bu durumda form düğme tıklama içinde, çağrıyı geri bulunmuştur levha .

Option Strict On 
Imports Excel = Microsoft.Office.Interop.Excel 
Imports Microsoft.Office 
Imports ST = System.Runtime.InteropServices 
Module OpenWorkSheets2 
    ''' <summary> 
    ''' Open file, activate sheet while keeping 
    ''' the excel file open 
    ''' </summary> 
    ''' <param name="FileName">Path and file name to open</param> 
    ''' <param name="SheetName">Worksheet to work with</param> 
    ''' <param name="FoundSheet">True indicates we are good to use the returned sheet object</param> 
    ''' <returns></returns> 
    ''' <remarks></remarks> 
    Public Function OpenExcel1(
     ByVal FileName As String, 
     ByVal SheetName As String, 
     ByRef FoundSheet As Boolean) As Excel.Worksheet 

     Dim xlApp As Excel.Application = Nothing 
     Dim xlWorkBooks As Excel.Workbooks = Nothing 
     Dim xlWorkBook As Excel.Workbook = Nothing 
     Dim xlWorkSheet As Excel.Worksheet = Nothing 
     Dim xlWorkSheets As Excel.Sheets = Nothing 

     xlApp = New Excel.Application 
     xlApp.DisplayAlerts = False 
     xlWorkBooks = xlApp.Workbooks 
     xlWorkBook = xlWorkBooks.Open(FileName) 
     xlApp.Visible = True 
     xlWorkSheets = xlWorkBook.Sheets 

     For x As Integer = 1 To xlWorkSheets.Count 
      xlWorkSheet = CType(xlWorkSheets(x), Excel.Worksheet) 

      If xlWorkSheet.Name = SheetName Then 
       xlWorkSheet.Activate() 
       FoundSheet = True 
       Exit For 
      End If 

      ST.Marshal.FinalReleaseComObject(xlWorkSheet) 
      xlWorkSheet = Nothing 
     Next 

     Return xlWorkSheet 

    End Function 
End Module 

yerleştirin bir düğme tıklama durumunda

Private xlWorkSheet As Excel.Worksheet = Nothing 
Private Success As Boolean = False 

düzey değişkenleri oluşturan ilk argüman olarak yukarıda işlevini çağırmak için forma

Imports Excel = Microsoft.Office.Interop.Excel 

Ekleme üst kısmında aşağıdaki dosya adı ve ardından sayfa adı ve yolu, yukarıdaki Değişkenimizdeki başarıya geçer.

xlWorkSheet = OpenExcel1(
    IO.Path.Combine(Application.StartupPath, "Customers.xlsx"), 
    "Orders", 
    Success) 

Şimdi bir hücre değerini değiştirmek ve canlı görmek için. Bir TextBox ekleyin, içine bir şey koyun ve aşağıdaki gibi adlandırın. Cep adresini istediğin gibi yapabilirsin.

If Not String.IsNullOrWhiteSpace(TextBox1.Text) Then 
    If Me.Success Then 
     xlWorkSheet.Cells(2, 2) = TextBox1.Text 
    Else 
     MessageBox.Show("Failed") 
    End If 
Else 
    MessageBox.Show("Please enter a value") 
End If