Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2011, 23:15   #1
Novich
Новичок
Джуниор
 
Регистрация: 23.08.2011
Сообщений: 4
По умолчанию Импорт текста в готовый написанный другими эксель

Есть заявка (для очередного тиража), которую надо вручную заполнять до 20 раз в день.
Составлена она фигово, очень нелогично, много лишних строк.
Я могу сам написать прогу, которая генерит текстовой файл, и все данные для файла вставляет последовательно в строчки.
Есть ли программа, или в какую сторону двигаться в смысле макроса, чтобы можно было в идеале через командную строчку объяснить екселю примерно следующее "нужно взять текстовой файл заявка.тхт, открыть файл заявка.хлс, и первую строчку из текстового файла вставить в ячейку А2, вторую в В4... и т.д. около 10 строк, и далее сохранить копию файла под именем тоже из какой-нибудь ячейки".
Самое главное - как автоматом залить данные, остальное я и сам могу через всякие автоматизаторы сделать
Спасибо.
Вложения
Тип файла: rar zayavka.rar (17.8 Кб, 28 просмотров)
Novich вне форума Ответить с цитированием
Старый 24.08.2011, 01:15   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Из текста данные взять несложно - но вот откуда Вы данные будете в текст кидать - может быть оттуда сразу их и брать?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.08.2011, 11:23   #3
Novich
Новичок
Джуниор
 
Регистрация: 23.08.2011
Сообщений: 4
По умолчанию

Это полиграфическая программа для верстки, у которой есть свой язык программирования, похожий на вижуалбейсик, но попроще. Но диалоги в ней строить можно (что я и делаю под себя), cmd запускать с нужными параметрами, что-то экспортировать в текст или просто кидать в буфер. Проще в ней.
Так что вопрос остается прежним ))
Novich вне форума Ответить с цитированием
Старый 24.08.2011, 11:55   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Можно брать данные сразу из буфера.
По-одному, или сразу весь текст с переносами строк или другими разделителями полей - по ним разбить в массив и перебором массива (или по позиции) закидывать в Эксель.
Можно сделать скриптом vbs.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 24.08.2011 в 12:01.
Hugo121 вне форума Ответить с цитированием
Старый 24.08.2011, 12:13   #5
Novich
Новичок
Джуниор
 
Регистрация: 23.08.2011
Сообщений: 4
По умолчанию

Я пробовал через буфер массивом, с наскока не получилось, корежился ексель. Там же еще формулы есть и скрытые ячейки.
А по одной - да, это нужен скрипт, но по одной что-то не соображу, как это автоматизировать, тогда уж проще любую систему автоматизации поставить и в ней лепить. Идеально конечно через командную строку.
Novich вне форума Ответить с цитированием
Старый 24.08.2011, 12:23   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вот например, vbs берёт из буфера 3 строки:

Код:
Dim objExcel
dim wb
dim sh
Dim tmp
dim strArr

With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard
tmp = .GetText(1)
End With
strArr=split(tmp, vbnewline)


ActivateExcel


set wb=objExcel.Workbooks.open ("C:\tmp\Novich\zayavka.xls") '# открываем книгу Excel
set sh=wb.sheets(1)

sh.cells(5,5).value=strArr(0)
sh.cells(5,7).value=strArr(1)
sh.cells(10,4).value=strArr(2)

Private Function ActivateExcel()
On Error resume next 
Set objExcel = GetObject(, "Excel.Application")
If objExcel Is Nothing Then
   Set objExcel = CreateObject("Excel.Application")
   objExcel.Visible = True
End If
End Function
Сохраните код в текст с расширением vbs и запустите.
Поставьте свой путь, в буфере должны быть данные - 3 строки типа
24/08/2011
11:18
123456

Можно в буфер кинуть одну строку с разделителем например "|" - тогда
Код:
strArr=split(tmp, "|")
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 24.08.2011 в 12:27.
Hugo121 вне форума Ответить с цитированием
Старый 24.08.2011, 12:28   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

При копировании массива в буфере данные можно получить в формате XML
PHP код:
Version:1.0
StartHTML
:0000000105
EndHTML
:0000003448
StartFragment
:0000002554
EndFragment
:0000003396

<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:
excel"
xmlns="http://www.w3.org/TR/REC-html40">

<
head>
<
meta http-equiv=Content-Type content="text/html; charset=utf-8">
<
meta name=ProgId content=Excel.Sheet>
<
meta name=Generator content="Microsoft Excel 12">
<
link id=Main-File rel=Main-File
href
="file:///C:\DOCUME~1\ANDREY~1.BUS\LOCALS~1\Temp\msohtmlclip1\01\clip.htm">
<
link rel=File-List
href="file:///C:\DOCUME~1\ANDREY~1.BUS\LOCALS~1\Temp\msohtmlclip1\01\clip_filelist.xml">
<
style>
<!--
table
 
{mso-displayed-decimal-separator:"\,";
 
mso-displayed-thousand-separator:" ";}
@
page
 
{margin:.75in .7in .75in .7in;
 
mso-header-margin:.3in;
 
mso-footer-margin:.3in;}
tr
 
{mso-height-source:auto;}
col
 
{mso-width-source:auto;}
br
 
{mso-data-placement:same-cell;}
td
 
{padding-top:1px;
 
padding-right:1px;
 
padding-left:1px;
 
mso-ignore:padding;
 
color:black;
 
font-size:11.0pt;
 
font-weight:400;
 
font-style:normal;
 
text-decoration:none;
 
font-family:Calibrisans-serif;
 
mso-font-charset:204;
 
mso-number-format:General;
 
text-align:general;
 
vertical-align:bottom;
 
border:none;
 
mso-background-source:auto;
 
mso-pattern:auto;
 
mso-protection:locked visible;
 
white-space:nowrap;
 
mso-rotate:0;}
.
xl65
 
{text-align:center;
 
vertical-align:middle;
 
border-top:.5pt solid windowtext;
 
border-right:none;
 
border-bottom:.5pt solid windowtext;
 
border-left:.5pt solid windowtext;}
.
xl66
 
{text-align:center;
 
vertical-align:middle;
 
border-top:1.0pt solid windowtext;
 
border-right:1.0pt solid windowtext;
 
border-bottom:.5pt solid windowtext;
 
border-left:1.0pt solid windowtext;}
.
xl67
 
{text-align:center;
 
vertical-align:middle;
 
border-top:.5pt solid windowtext;
 
border-right:1.0pt solid windowtext;
 
border-bottom:1.0pt solid windowtext;
 
border-left:1.0pt solid windowtext;}
.
xl68
 
{text-align:center;
 
vertical-align:middle;
 
border-top:.5pt solid windowtext;
 
border-right:none;
 
border-bottom:none;
 
border-left:.5pt solid windowtext;}
.
xl69
 
{text-align:center;
 
vertical-align:middle;
 
border-top:.5pt solid windowtext;
 
border-right:1.0pt solid windowtext;
 
border-bottom:none;
 
border-left:1.0pt solid windowtext;}
-->
</
style>
</
head>

<
body link=blue vlink=purple>

<
table border=0 cellpadding=0 cellspacing=0 width=285 style='border-collapse:
 collapse;width:214pt'
>
<!--
StartFragment-->
 <
col width=128 style='mso-width-source:userset;mso-width-alt:4681;width:96pt'>
 <
col width=157 style='mso-width-source:userset;mso-width-alt:5741;width:118pt'>
 <
tr height=20 style='height:15.0pt'>
 <
td height=20 class=xl65 width=128 style='height:15.0pt;width:96pt'>ячейка
 екселя
</td>
 <
td rowspan=class=xl66 width=157 style='width:118pt'>Объединённая</td>
 </
tr>
 <
tr height=21 style='height:15.75pt'>
 <
td height=21 class=xl68 style='height:15.75pt;border-top:none'>ещё одна</td>
 </
tr>
 <
tr height=20 style='height:15.0pt'>
 <
td height=20 class=xl65 style='height:15.0pt'>2</td>
 <
td rowspan=class=xl66 style='border-bottom:1.0pt solid black'>6</td>
 </
tr>
 <
tr height=21 style='height:15.75pt'>
 <
td height=21 class=xl65 style='height:15.75pt;border-top:none'>3</td>
 </
tr>
<!--
EndFragment-->
</
table>

</
body>

</
html
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 24.08.2011, 13:46   #8
Novich
Новичок
Джуниор
 
Регистрация: 23.08.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Вот например, vbs берёт из буфера 3 строки:

Можно в буфер кинуть одну строку с разделителем например "|" - тогда
Код:
strArr=split(tmp, "|")
Отлично, спасибо большое, все работает, дальше буду затачивать под свои нужды!
Novich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт из дбгрида в эксель Ake Общие вопросы Delphi 4 24.12.2010 22:51
импорт в эксель Demonmov Microsoft Office Excel 2 28.04.2010 10:07
Нужно положить готовый дизайн на готовый сайт! Full87 Фриланс 1 16.12.2009 16:18
Импорт текста. gusluk Общие вопросы Delphi 6 20.05.2009 04:20