Вверх ↑
Этот топик читают: Гость
Ответов: 19
Рейтинг: 3
#1: 2010-01-18 15:15:33 ЛС | профиль | цитата
Всем привет!Нужна помощь.
Искал в примерах,но нигде не нашёл.Проблема такая:пишу программу и хочу данные из программы вносить в Excel.
Но не просто вносить на чистый лист, а чтобы а в подготовленную таблицу с отрисованными полями вокруг ячеек.
Должно выглядеть как полноценная накладная.Создавать Excel документ из программы и вносить данные в ячейки
у меня получилось,а отрисовать границы ячеек-нет.Пробовал записывать макрос в Excel и потом вставлять его (с доработками)
в скрипт. Но сразу пишет что это свойство или метод не поддерживается. В интернете искал всё что связано с VBA но ничего
толкового не нашёл.Может кто знает как правильно описать отрисовку границ-подскажите.

карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 4641
Рейтинг: 334
#2: 2010-01-18 15:35:52 ЛС | профиль | цитата
stefan, обычно выкладывают и сам скрипт или схему в хиасм где все это делается.
И только тогда можно получить быстрый и корректный ответ/пример.

карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 19
Рейтинг: 3
#3: 2010-01-18 15:42:23 ЛС | профиль | цитата

Sub Макрос4()

Range("A1:D50").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub
Вот макрос но в HiAsm не работает
карма: 0

0
Ответов: 4641
Рейтинг: 334
#4: 2010-01-18 15:44:48 ЛС | профиль | цитата
Код
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 4400
Рейтинг: 472
#5: 2010-01-18 15:53:46 ЛС | профиль | цитата
stefan писал(а):
а отрисовать границы ячеек-нет
если ест опыт в данных мероприятиях то всё получится ;), если есть шаблон то к нему и надо подключатся.
stefan писал(а):
как правильно описать отрисовку границ
границ чего ???
карма: 4

0
Ответов: 19
Рейтинг: 3
#6: 2010-01-18 15:57:35 ЛС | профиль | цитата
Границ выделенной области.
А опыта у меня нету никакого
карма: 0

0
Ответов: 4400
Рейтинг: 472
#7: 2010-01-18 16:10:19 ЛС | профиль | цитата
stefan, шаблон давай, будет время поколдую.
------------ Дoбавленo в 16.11:
а лучше в него набей что нибудь для примера
карма: 4

0
Ответов: 19
Рейтинг: 3
#8: 2010-01-18 16:45:15 ЛС | профиль | цитата

Make(delphi)
ver(4.04 build 182)
Add(MainForm,2953706,21,105)
{
Width=603
Height=397
Point(onClose)
}
Add(MultiElement,1163467,259,175)
{
@Hint=#24:Создание документа Excel|
}
BEGIN_SDK
Add(EditMulti,8226053,21,21)
{
WorkCount=1
VarCount=1
Width=713
Height=326
link(doWork1,3150044:doEvent1,[(84,27)(84,69)])
link(Var1,8282859:Var2,[(27,206)(76,206)])
}
Add(StrCat,3932112,203,259)
{
link(onStrCat,6729997:doWork,[])
link(Str2,8157666:FormatTime,[(216,89)(83,89)])
}
Add(GetDataEx,8282859,70,161)
{
link(Data,3932112:Result,[(76,155)(142,155)(142,303)(209,303)])
}
Add(Time,8157666,77,42)
{
Format="YMDhm"
Point(DateTime)
Point(Hours)
Point(Minute)
Point(Second)
}
Add(Dir,5709963,357,49)
{
}
Add(StrCat,7054917,420,133)
{
Str2="Шаблон товарного чека.xls"
link(Str1,5709963:CurrentDir,[(426,107)(363,107)])
}
Add(Hub,3150044,147,63)
{
OutCount=3
link(onEvent1,7054917:doStrCat,[(291,69)(291,139)])
link(onEvent2,11530223:doStrCat,[(173,76)(173,170)(79,170)(79,265)])
link(onEvent3,2772245:doStrCat,[(333,83)(333,167)])
}
Add(Dir,16516966,196,49)
{
}
Add(StrCat,1737943,147,259)
{
Str2="Товарный чек#"
link(onStrCat,3932112:doStrCat,[])
}
Add(StrCat,11530223,91,259)
{
Str2="Архив чеков\"
link(onStrCat,1737943:doStrCat,[])
link(Str1,16516966:CurrentDir,[(97,170)(202,170)])
}
Add(VBJScript,6729997,336,259)
{
@Hint=#5:Excel|
WorkPoints=#6:doWork|
DataPoints=#5:Data1|5:Data2|5:Data3|
Script=#10:Dim Datas1|10:Dim Datas2|10:Dim Datas3|27:Function doWork(Data,Index)|21: Datas1 = Sys.Data1|21: Datas2 = Sys.Data2|21: Datas3 = Sys.Data3|13: Dim xlBook|78: Set xlBook = GetObject(Datas1)'Вот так открываем существуюшую книгу Excel. |37: 'По умолчанию создаём книгу Excel.|17: Dim ExcelSheet|47: Set ExcelSheet = CreateObject("Excel.Sheet")|61: ExcelSheet.Application.Columns("A:A").ColumnWidth = 45.14|61: ExcelSheet.Application.Columns("B:B").ColumnWidth = 11.14|61: ExcelSheet.Application.Columns("C:C").ColumnWidth = 11.43|61: ExcelSheet.Application.Columns("D:D").ColumnWidth = 11.29|45: ExcelSheet.Application.Range("A6").Select|66: ExcelSheet.Application.ActiveCell.FormulaR1C1 = "Наименование"|45: ExcelSheet.Application.Range("B6").Select|64: ExcelSheet.Application.ActiveCell.FormulaR1C1 = "Количество"|45: ExcelSheet.Application.Range("C6").Select|58: ExcelSheet.Application.ActiveCell.FormulaR1C1 = "Цена"|45: ExcelSheet.Application.Range("D6").Select|63: ExcelSheet.Application.ActiveCell.FormulaR1C1 = "Стоимость"|45: ExcelSheet.Application.Range("B2").Select|58: ExcelSheet.Application.ActiveCell.FormulaR1C1 = Datas3|45: ExcelSheet.Application.Range("A1").Select|3: |3: |48: ExcelSheet.Application.Range("A1:D50").Select|56: Selection.Borders(xlDiagonalDown).LineStyle = xlNone|54: Selection.Borders(xlDiagonalUp).LineStyle = xlNone|38: With Selection.Borders(xlEdgeLeft)|33: .LineStyle = xlContinuous|24: .Weight = xlThin|33: .ColorIndex = xlAutomatic|12: End With|37: With Selection.Borders(xlEdgeTop)|33: .LineStyle = xlContinuous|24: .Weight = xlThin|33: .ColorIndex = xlAutomatic|12: End With|40: With Selection.Borders(xlEdgeBottom)|33: .LineStyle = xlContinuous|24: .Weight = xlThin|33: .ColorIndex = xlAutomatic|12: End With|39: With Selection.Borders(xlEdgeRight)|33: .LineStyle = xlContinuous|24: .Weight = xlThin|33: .ColorIndex = xlAutomatic|12: End With|44: With Selection.Borders(xlInsideVertical)|33: .LineStyle = xlContinuous|24: .Weight = xlThin|33: .ColorIndex = xlAutomatic|12: End With|46: With Selection.Borders(xlInsideHorizontal)|33: .LineStyle = xlContinuous|24: .Weight = xlThin|33: .ColorIndex = xlAutomatic|12: End With|3: |3: |3: |3: |40: ExcelSheet.Application.Visible = True|27: ExcelSheet.SaveAs Datas2|30: ExcelSheet.Application.Quit|27: Set ExcelSheet = Nothing|12:End Function|
UseName=0
link(Data1,7054917:Result,[(342,212)(426,212)])
link(Data2,8282859:Var1,[(349,213)(67,213)(67,166)])
link(Data3,2772245:Result,[(356,226)(510,226)])
}
Add(StrCat,2772245,504,161)
{
Str1="Товарный чек#"
link(Str2,16210589:FormatTime,[(517,125)(510,125)])
}
Add(Time,16210589,504,56)
{
Format="YMDhm"
Point(DateTime)
Point(Hours)
Point(Minute)
Point(Second)
}
END_SDK
Add(Button,14807521,42,21)
{
Left=40
Top=20
Caption="Создать"
link(onClick,1163467:doWork1,[(166,27)(166,181)])
}
Требуется ещё файл "Шаблон товарного чека.xls" но файл у меня добавить не получилось. Так что нужно создать в папке с программой.
карма: 0

0
Ответов: 4641
Рейтинг: 334
#9: 2010-01-18 16:58:34 ЛС | профиль | цитата
так stefan, читать УМЕЕМ??? Код надо писать в тегах code


Ravilr писал(а):
Код

------------ Дoбавленo в 17.04:
а можно и вот так!

------------ Дoбавленo в 17.06:
http://hiasm.com//getfile/16560
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1xml_xls.zip [2.2KB] [254]
Ответов: 2125
Рейтинг: 159
#10: 2010-01-18 17:09:44 ЛС | профиль | цитата
stefan, основная проблема в том, что например Selection - существует "внутри" Excel (для простоты понимания можно считать это глобальной переменной), а в VBJScript его нет, т.е. нужно использовать ExcelSheet.Application.Selection
Вторая проблема - константы. Суть в том-же: "внутри" Excel они автоматически подключены из библиотеки типов, а в VBJScript их придётся описать вручную.
карма: 1

1
Голосовали:stefan
Ответов: 19
Рейтинг: 3
#11: 2010-01-18 18:02:45 ЛС | профиль | цитата
так stefan, читать УМЕЕМ??? Код надо писать в тегах code
Зря ругаетесь ,Ravilr, пока я вопрос не задал,я вообще не знал слова "Тэги".
Век живи,век учись.
А за пример спасибо-буду изучать.

А tsdima я тоже хочу сказать спасибо.
Теперь я ,хоть, стал понимать что нужно исправить,может и получится!

карма: 0

0
Ответов: 8351
Рейтинг: 775
#12: 2010-01-18 18:27:23 ЛС | профиль | цитата
stefan, из программы на HiAsm можно в Excel читать и записывать данные, запускать макросы, а в макросе можно сделать и выделение ячеек по задаваемым данными границам, примеры здесь, на форуме, есть.
карма: 14

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#13: 2010-01-18 19:17:58 ЛС | профиль | цитата
Леонид писал(а):
примеры здесь, на форуме, есть

Осталась самая малость -- их все найти
карма: 19

0
Ответов: 19
Рейтинг: 3
#14: 2010-01-18 19:41:06 ЛС | профиль | цитата
Буду искать
карма: 0

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#15: 2010-01-18 19:45:33 ЛС | профиль | цитата
stefan писал(а):
Буду искать

И что так грустно Сказали же, что примеры есть, это, уже должно радовать, а тут такой пессимизм
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)