Автор Тема: EXCEL_Копирование строк в диапазоны, заданные переменными.  (Прочитано 170 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gorr [?]

  • Новичок
  • *
  • Сообщений: 6
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Добрый день!

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

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

Изменил под себя код (код должен брать две строки со второго листа, добавлять на втором листе две строки сверху и помещать туда скопированную строку. Плюс помещать эту же строку на первый лист в 11 строку):
Код: AutoIt [Выделить]
#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", все равно строка не вставляется.
Что я делаю не так?

Русское сообщество AutoIt


Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3887
  • Репутация: 1023
    • Награды
  • Версия AutoIt: 3.3.14.0
Вероятно, у вас лишние кавычки (excel'я нет, проверить не могу).
Попробуйте так
Код: AutoIt [Выделить]
Global $adr = $ipp & ":" & $ipp


Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
3029 Просмотров
Последний ответ Февраль 05, 2012, 20:22:05
от SemEMP
0 Ответов
1857 Просмотров
Последний ответ Февраль 05, 2012, 19:40:12
от madmasles
8 Ответов
3076 Просмотров
Последний ответ Август 29, 2012, 00:47:33
от kasper_sky
1 Ответов
1822 Просмотров
Последний ответ Декабрь 23, 2012, 11:42:35
от Kaster
3 Ответов
1895 Просмотров
Последний ответ Декабрь 10, 2013, 13:13:38
от madmasles
1 Ответов
1981 Просмотров
Последний ответ Октябрь 28, 2015, 08:51:02
от Yashied
3 Ответов
1111 Просмотров
Последний ответ Февраль 20, 2016, 13:48:37
от chernobeloe
1 Ответов
670 Просмотров
Последний ответ Март 08, 2017, 10:53:32
от Alofa
6 Ответов
1617 Просмотров
Последний ответ Март 05, 2018, 04:51:27
от DStalker
3 Ответов
181 Просмотров
Последний ответ Май 04, 2018, 16:32:21
от hedji