Что нового

_Excel_RangeWrite заполнить строку

ildar

Осваивающий
Сообщения
252
Репутация
29
Пример взят из описания по этой функции
Код:
#include <Array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Create application object and create a new workbook
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookNew($oExcel)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example", "Error creating the new workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf

; *****************************************************************************
; Write a 1D array to the active sheet in the active workbook
; *****************************************************************************
Local $aArray1D[3] = ["AA", "BB", "CC"]
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aArray1D, "A3")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example 2", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example 2", "1D array successfully written.")
заполняет данными массива колонку начиная с А3, то есть ячейки А3,А4,А5. Как с помощью этой функции заполнить строку, ячейки A3,B3,C3.
Мне не понятен последний параметр, как им манипулировать. Была бы цифра а не буквенно-цифровое определение, воспользовался бы циклом
Код:
For $i = 0 To UBound($aArray1D)
   .......
Next
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Была бы цифра а не буквенно-цифровое определение, воспользовался бы циклом
Если данных для записи не много и скорость не важна, то используйте функцию записи со старой UDF
Код:
; #FUNCTION# ====================================================================================================================
; Name...........: _ExcelWriteCell
; Description ...: Write information to a cell on the active worksheet of the specified Excel object.
; Syntax.........: _ExcelWriteCell($oExcel, $sValue, $sRangeOrRow[, $iColumn = 1])
; Parameters ....: $oExcel - Excel object opened by a preceding call to _ExcelBookOpen() or _ExcelBookNew()
;                  $sValue - Value to be written
;                  $sRangeOrRow - Either an A1 range, or an integer row number to write to if using R1C1
;                  $iColumn - The column to write to if using R1C1 (default = 1)
; Return values .: Success      - Returns 1
;                  Failure		- Returns 0 and sets @error on errors:
;                  |@error=1     - Specified object does not exist
;                  |@error=2     - Parameter out of range
;                  |@extended=0 - Row out of range
;                  |@extended=1 - Column out of range
; Author ........: SEO <locodarwin at yahoo dot com>
; Modified.......: litlmike
; Remarks .......: None
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func _ExcelWriteCell($oExcel, $sValue, $sRangeOrRow, $iColumn = 1)
	If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
	If Not StringRegExp($sRangeOrRow, "[A-Z,a-z]", 0) Then
		If $sRangeOrRow < 1 Then Return SetError(2, 0, 0)
		If $iColumn < 1 Then Return SetError(2, 1, 0)
		$oExcel.Activesheet.Cells($sRangeOrRow, $iColumn).Value = $sValue
		Return 1
	Else
		$oExcel.Activesheet.Range($sRangeOrRow).Value = $sValue
		Return 1
	EndIf
EndFunc   ;==>_ExcelWriteCell
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
Ваш вариант отлично подходит, поскольку данных не много. Но все же остался вопрос по параметру.
Код:
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aArray1D, "A3")
Этот параметр "А3" может быть только в буквенно-цифровом виде или есть варианты?
 

pvnn

Осваивающий
Сообщения
305
Репутация
32
Чтобы избавиться от букв я делаю так:
Но заполнение будет тоже по вертикали
Код:
_Excel_RangeWrite($oWorkbook,Default,$aArray1D, $oWorkbook.ActiveSheet.Cells(1,3) )
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
ildar
Как с помощью этой функции заполнить строку
Код:
Local $aArray1D[1][3] = [["AA", "BB", "CC"]]


последний параметр, как им манипулировать
Последний параметр функции ($bForceFunc) или последний параметр, используемый в примере ($vRange)? В любом случае обратите внимание на раздел Remarks справки.
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
pvnn сказал(а):
Чтобы избавиться от букв я делаю так:
Но заполнение будет тоже по вертикали
Код:
_Excel_RangeWrite($oWorkbook,Default,$aArray1D, $oWorkbook.ActiveSheet.Cells(1,3) )
Спасибо! То что мне и нужно
Код:
For $i = 1 To UBound($aArray1D)
   _Excel_RangeWrite($oWorkbook,Default,$aArray1D[$i - 1], $oWorkbook.ActiveSheet.Cells(1,$i) )
Next
так по горизонтали
 
Верх