السلام عليكم ...
لدي برنامج معمول على VB.Net .. أحتاج أن أقرأ فيه ملف Excel في الذاكرة .. علما أن ملف الإكسل هذا خلاياه تحوي روابط كما في الشكل رقم 1.
كان البرنامج يعمل بدون أي مشاكل حتى جربته على ويندوز 8 .. فصار البرنامج لدي لا يحدث روابط الاكسل السابق ذكرها في الصورة رقم 1.
هل من مساعدة؟
للعلم أني عرفت المتغيرات كما يلي:
Public Excelapp As New Excel.Application Public myWorkBookCollection As Excel.Workbooks Public xlwkbook As Excel.Workbook Public WithEvents xlsheet As Excel.Worksheet
وفي Form1_Load
myWorkBookCollection = Excelapp.Workbooks xlwkbook = myWorkBookCollection.Open(Application.StartupPath & "\" & "excel_file.xls", True, True, , , , , , , False, , , , False) Excelapp.AutoRecover.Enabled = False xlsheet = CType(xlwkbook.Worksheets(1), Excel.Worksheet) xlsheet.Calculate() Excelapp.Calculation = Excel.XlCalculation.xlCalculationAutomatic Excelapp.AutoPercentEntry = False Excelapp.AutoRecover.Enabled = False
وعند الحدث التالي وضعت:
Private Sub xlsheet_Calculate() Handles xlsheet.Calculate
Try
Dim iRow As Integer
iRow = 2
Dim xldata() As Object
ReDim xldata(xlsheet.Range("A1").End(Excel.XlDirection.xlToRight).Column - 1)
For Each dr As DataRow In DAL.dTset.Tables(0).Rows
For a As Integer = 1 To UBound(xldata)
Try
xldata(a) = xlsheet.Cells.Item(iRow, a + 1).value
Catch ex As Exception
End Try
Next a
Try
dr.BeginEdit()
dr.ItemArray = xldata
dr.EndEdit()
dr.AcceptChanges()
Catch ex As Exception
End Try
iRow += 1
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub