Что нового

EXCEL_Копирование строк в диапазоны, заданные переменными.

Gorr

Новичок
Сообщения
6
Репутация
0
Добрый день!

Разбираюсь сейчас с функцией _Excel_RangeCopyPaste
Пытаюсь задать переменной, в какую строку листа вставить значения и не получается. Получается только если в коде конкретно прописать диапазон, что неудобно.

Взял пример с официального ресурса с описанием данной функции.

Изменил под себя код (код должен брать две строки со второго листа, добавлять на втором листе две строки сверху и помещать туда скопированную строку. Плюс помещать эту же строку на первый лист в 11 строку):
Код:
#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Create application object and open an example workbook
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeInsert Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\1.xls")
If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeInsert Example", "Error opening workbook '" & @ScriptDir & "\1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf
Global $ipp = 11
Global $adr = """" & $ipp & ":" & $ipp & """"
MsgBox($MB_SYSTEMMODAL, "Кот Атос", $adr)

; Copy
_Excel_RangeCopyPaste($oWorkbook.Worksheets(2), "3:3")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example 3", "Error copying rows." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example 3", "Rows 1+2 successfully copied from worksheet 2 to the clipboard.")


; Insert 2 rows before row 1 on worksheet 2
_Excel_RangeInsert($oWorkbook.Worksheets(2), "1:2")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeInsert Example 3", "Error inserting rows." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeInsert Example 3", "Rows successfully inserted on worksheet 2.")

; Paste the range written by Example 3 from the clipboard to the active worksheet.
; Only values without formatting will be pasted.
_Excel_RangeCopyPaste($oWorkbook.Worksheets(2), Default, "1:1", Default, $xlPasteValues)
_Excel_RangeCopyPaste($oWorkbook.Worksheets(1), Default, $adr, Default, $xlPasteValues)


То, что прописано конкретно, типа "1:1", выполняется без проблем, а то, что переменной - не выполняется.
вместо переменной $adr пытался еще указывать $ipp:$ipp, "$ipp:$ipp", все равно строка не вставляется.
Что я делаю не так?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Вероятно, у вас лишние кавычки (excel'я нет, проверить не могу).
Попробуйте так
Код:
Global $adr = $ipp & ":" & $ipp
 
Верх