vb.net Excel में सेल श्रेणी में सूत्र निर्दिष्ट करने में असमर्थ




excel-formula interop (3)

.formulalocal काम करता है! (जबकि। .formula , .formula और। .formular1c1 नहीं।)

मैंने अभी वीबी.नेट के साथ काम करना शुरू किया है और एक बहुत ही इसी तरह की समस्या में आया है। यह पहली बार मेरी सरल डेटा थी ( Sheet1 1 में Table1 1):

फिर नीचे दिए गए कोड को लागू करने के बाद मुझे यह था:

प्रपत्र के लिए पूरे कोड:

Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1
    '~~> Define your Excel Objects
    Dim xlApp As New Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim strAddress As String = "C:\Temp\SampleNew.xlsx"
    Dim list1 As Object


    Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
        '~~> Add a New Workbook (IGNORING THE TWO DOT RULE)
        xlWorkBook = xlApp.Workbooks.Open(strAddress)

        '~~> Display Excel
        xlApp.Visible = True

        '~~> Set the relevant sheet that we want to work with
        xlWorkSheet = xlWorkBook.Sheets("Sheet1")

        With xlWorkSheet

            '~~> Change the range into a tabular format
            list1 = .ListObjects("Table1")

        End With

        list1.range(2, 4).formulalocal = "=IF(LEN([@Month])>5;[@Income]-[@MoneySpent];0)"

        '~~> Save the file
        xlApp.DisplayAlerts = False
        xlWorkBook.SaveAs(Filename:=strAddress, FileFormat:=51)
        xlApp.DisplayAlerts = True

        '~~> Close the File
        xlWorkBook.Close()

        '~~> Quit the Excel Application
        xlApp.Quit()

        '~~> Clean Up
        releaseObject(xlApp)
        releaseObject(xlWorkBook)
    End Sub


    '~~> Release the objects
    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

@ सिद्धार्थ राउत ने इस कोड को बनाने में बहुत मदद की, क्योंकि वह इस अद्भुत साइट का मालिक है: http://www.siddharthrout.com/

प्रोजेक्ट में किसी और का कोड है, मैं इसे ठीक करने की कोशिश कर रहा हूं।

listO.Range(i, j).FormulaR1C1 = FormulaMatrix(i, j)

जहां FormulaMatrix(i, j) हमेशा String मान होता है जो भी यादृच्छिक / परीक्षण मान, मैं इसके साथ प्रयास करता हूं, सफलतापूर्वक सौंपा जा रहा है, सिवाय इसके कि यह एक सूत्र है, उदाहरण के लिए।

=IF(LENGTH([@Units])>0;[@SalesAmount]-[@DiscountAmount]0)

यदि मैं सूत्र की शुरुआत में = साइन इन को निकालता हूं, तो उसे सही ढंग से सौंपा जाता है, लेकिन फिर यह बेकार है, क्योंकि यह एक सूत्र नहीं है

@Units , @Units , @SalesAmount , संदर्भ / स्तंभों के नाम हैं।

इसलिए, एक सूत्र बताते समय, मुझे अपवाद HRESULT: 0x800A03EC मिलता है स्पष्टीकरण पाने के लिए और कुछ निर्देशों का पालन करने के लिए मैंने इस उत्तर में देखा मैंने तय किया कि मेरी समस्या निम्न है: समस्या एक सेल में दर्ज फ़ंक्शन के कारण होती है और यह एक और सेल को अपडेट करने का प्रयास कर रही है

इस पोस्ट को भी चेक किया मैंने बहुत अलग कोशिश की थी (जैसे कि = बिना सिर्फ फ़ार्मुलों डालना और फिर से फिर से चलाएं और समान चिह्न डाल), लेकिन एक ही समस्या

मुझे इस बात का पता नहीं है कि यह कैसे जाना है


समस्या आपके सूत्र के साथ हो सकती है इसे इस्तेमाल करे-

=IF(LEN([@Units])>0,[@SalesAmount]-[@DiscountAmount],0)

अगर यह काम नहीं करता है, तो मैं .formulaR1C1 के बजाय फॉर्मूला विधि का उपयोग करने की कोशिश करूँगा। क्या विशेष रूप से आप आर 1 सी 1 संदर्भों का उपयोग कर रहे हैं?


यह त्रुटि आपके वर्तमान डेटा से हो सकती है, क्रमशः, चादर का लेआउट। मैं आपको listO.Range(i, j).FormulaR1C1 करता listO.Range(i, j).FormulaR1C1 कि सूची के अंदर क्या है। listO.Range(i, j).FormulaR1C1 । फ़ॉर्मूला listO.Range(i, j).FormulaR1C1 से पहले आप फॉर्मूला देते हैं।

मेरे पास एक ऐसा मामला है, जहां सीमा पहले से गलत डेटा है, और फिर अजीब तरह से, मैं नहीं जानता कि क्यों, मैं नया सूत्र निर्दिष्ट नहीं कर सकता।

यदि ऐसा मामला है - तो सीमा के मूल्य को साफ करने और फिर सूत्र बताए जाने का प्रयास करें:

listO.Range(i, j).FormulaR1C1 = ""
listO.Range(i, j).FormulaR1C1 = FormulaMatrix(i, j)




excel-2010