Что нового

Не могу вставить текст из буфера в открытый лист Excel

PACHOM

Новичок
Сообщения
99
Репутация
0
Здравствуйте!

Есть текст в буфере обмена. Скрипт должен открыть книгу и вставить данные.
Книга открывается.
А вот данные не вставляются. Хотя нажимаю Cntr+v и всё вставляется.

Подскажите пожалуйста где я ошибаюсь.
Прилагаю данные для буфера и сам скрипт:
Код:
#include <Excel.au3>

$path = @ScriptDir & "\Вставка сюда.xlsx"

$oExcel = _ExcelBookOpen($path)

WinWaitActive($oExcel, "",2)


Send("^v", 0) ; так не получается
Send("{ins}", 0) ; так тоже

; и так не получается ...
;~ For $i = 1 To 10
;~     _ExcelWriteCell($oExcel, ClipGet(), 'A' & $i)
;~ Next


Спасибо.


Добавлено:
Сообщение автоматически объединено:

Со вставкой через
Код:
Send("{ins}", 0)
я понял где накосячил: правильно будет так:
Код:
Send("+{ins}", 0)



Добавлено:
Сообщение автоматически объединено:

А вот как вставить по-другому ... сразу весь массив без указания его размерности на листе ...
 

beliy

Продвинутый
Сообщения
372
Репутация
72
Попробуй так:
Код:
#include <Excel.au3>
#include <Array.au3>

$sData = StringSplit(ClipGet(), @CRLF, 1)
_ArrayDelete($sData, 0) 
_ArrayDisplay($sData, 'Разбор строки')

$path = @ScriptDir & "\Вставка сюда.xls"

$oExcel = _ExcelBookOpen($path) ; _ExcelBookOpen($path, 0) - откроет в скрытом режиме
;если нужно создавать документ, то вместо предыдущей строки пишем:
;$oExcel = _ExcelBookNew() ; _ExcelBookNew(0) - откроет в скрытом режиме
;_ExcelWriteArray($oExcel, 1, 1, $sData) ; Записываем содержимое массива в ячейки листа - в горизонтальном направлении(вправо)
_ExcelWriteArray($oExcel, 1, 1, $sData , 1) ; Записываем содержимое массива в ячейки листа - в вертикальном направлении(вниз), значение "A1" перезаписывается
_ExcelBookSave($oExcel)
;если используем _ExcelBookNew, то вместо _ExcelBookSave используем строку ниже
;_ExcelBookSaveAs($oExcel, $path , "xls", 0, 1) ; Сохраняем файл, перезаписывая если необходимо.
_ExcelBookClose($oExcel) ; Закрываем рабочую книгу
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
beliy,
Эти 2 строки:
Код:
$aData = StringSplit(ClipGet(), @CRLF, 1)
_ArrayDelete($aData, 0)
Можно заменить на одну:
Код:
$aData = StringSplit(ClipGet(), @CRLF, 3)
 

beliy

Продвинутый
Сообщения
372
Репутация
72
madmasles,
В справке почемуто не указан flag = 3 для StringSplit :scratch:
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
beliy
Там ссумированые значения 1 и 2(1+2=3)
 
Автор
P

PACHOM

Новичок
Сообщения
99
Репутация
0
Не получается отобразить массив. Текст в буфере содержит повторяющийся символ табуляции и на конце каждой строчки стоит CRLF. Символы табуляции я заменил на пробелы и затем удалил повтор пробелов:
Код:
$Text = StringReplace(ClipGet(), @TAB, " ") ;заменяем ТАВ на пробелы
$Text = StringStripWS($Text, 4) ;удаляем повторяющиеся пробелы
$aData = StringSplit($Text, @CRLF, 3) ;делим строчку на подстроки
_ArrayDisplay($sData, 'Разбор строки')
;Записываем содержимое массива в ячейки листа - в вертикальном направлении(вниз), значение "A1" перезаписывается
_ExcelWriteArray($oExcel, 1, 1, $sData , 1)


Но выходит ошибка - см. прилагаемый скриншот.

Что не так?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
PACHOM,
Вы получаете массив $aData, а потом используете не объявленную $sData.
 
Верх