/ / एप्पलस्क्रिप्ट - सेबस्क्रिप्ट में प्रारंभ सेल और पंक्ति / कॉलम ऑफ़सेट प्रारंभ एक्सेल रेंज बनाना

एप्पलस्क्रिप्ट - सेबस्क्रिप्ट में एक्सेल रेंज को प्रारंभ सेल और पंक्ति / कॉलम ऑफ़सेट दिया गया है

मैं मूल्यों को सम्मिलित करने के लिए एप्पलस्क्रिप्ट का उपयोग करने की कोशिश कर रहा हूंएक्सेल वर्कशीट में सेल्स में। मानों को सूपियों की सूची के रूप में एक एप्पलस्क्रिप्ट चर में रखा जाता है (उदाहरण कोड देखें)। मैंने पहले से ही यह काम किया है कि यदि मैं इस चर को सही आकार (पंक्तियों और स्तंभों) की एक श्रृंखला में डालता हूं तो यह सही जगह पर सब कुछ ठीक से आता है।

दुर्भाग्य से, मैं जो डेटा डाल रहा हूं उसकी मात्राअलग-अलग हो सकता है, इसलिए रेंज आकार को हार्ड-कोडिंग करने के बजाय मुझे सूची में आइटमों की संख्या से इसकी गणना करने की आवश्यकता है। मैं प्रारंभिक सेल से ऑफ़सेट करने के लिए सूची आकार का उपयोग कर रहा हूं, और उसके बाद प्रारंभिक सेल से गणना की गई सेल ऑफसेट तक फैली एक श्रेणी बनाने की कोशिश कर रहा हूं।

कम से कम कट करें, कोड निम्नानुसार है:

set myList to {{"Red", "Grapefruit", "1", ""}, {"Julie", "Heron", "2", "*"}}

tell application "Microsoft Excel"
set myStartCell to range ("B18") of sheet 1 of active workbook
set myEndCell to get offset myStartCell row offset ((count myList) -1) column offset ((count item 1 of myList) -1)
set myRange to range {myStartCell, myEndCell} of sheet 1 of active workbook
set value of myRange to myList
end tell

उपर्युक्त कोड के साथ, मुझे लाइन से संबंधित त्रुटि संदेश "जिस ऑब्जेक्ट को आप एक्सेस करने का प्रयास कर रहे हैं वह मौजूद नहीं है"

    set myRange to range {myStartCell, myEndCell} of sheet 1 of active workbook

वीबीए में, समान कोड निम्नानुसार होगा:

With ThisWorkbook.Worksheets(1)

Dim myStartCell As Range
Dim myEndCell As Range
Dim myRange As Range

Set myStartCell = Range("B18").Cells

Set myEndCell = myStartCell.Offset(rowOffset:=1, columnOffset:=3).Cells

Set myRange = .Range(myStartCell, myEndCell)

End With

वीबीए लाइन के समान कार्य को पूरा करने के लिए मैं एप्पलस्क्रिप्ट का उपयोग कैसे कर सकता हूं

    Set myRange = .Range(myStartCell, myEndCell)

? या प्रारंभिक सेल और पंक्तियों और स्तंभों की संख्या के अनुसार एक सीमा बनाने का एक बेहतर तरीका है?

उत्तर:

उत्तर № 1 के लिए 1

आप इसका उपयोग कर सकते हैं get address आदेश।

set myRange to range ("B18:" & (get address myEndCell)) of sheet 1 of active workbook
set value of myRange to myList

या

set myRange to range ((get address myStartCell) & ":" & (get address myEndCell)) of sheet 1 of active workbook
set value of myRange to myList

उत्तर № 2 के लिए 1

पंक्ति और कॉलम संख्याओं से Excel में एक श्रेणी बनाना एक दर्द है। यह संख्याओं को अक्षरों में बदलने के लिए एक हैंडलर का उपयोग करता है

set myList to {{"Red", "Grapefruit", "1", ""}, {"Julie", "Heron", "2", "*"}}

set numberOfColumns to (count item 1 of myList) - 1
set numberOfRows to (count myList) - 1
tell application "Microsoft Excel"
set myStartCell to range "B18" of active sheet
set myEndCell to get offset myStartCell row offset numberOfRows column offset numberOfColumns
set columnLetter to my excelColumnToLetters(first column index of myEndCell)
set myRange to range ("B18:" & columnLetter & first row index of myEndCell)
set value of myRange to myList
end tell

-- converts the column number to the letter equivalent
to excelColumnToLetters(column)
set letters to {}
repeat while column > 0
set remainder to column mod 26
if remainder = 0 then set remainder to 26
set beginning of letters to (remainder + 64)
set column to (column - remainder) div 26
end repeat
return string id letters
end excelColumnToLetters