|
Еще раз про макросы Excel из FVP
|
|||
---|---|---|---|
#18+
Есть такой макрос Excel, рисующий диаграмму Sub Макрос1() Range("A1:B7").Select Charts.Add ActiveChart.ChartType = xl3DColumnClustered ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("A1:B7"), PlotBy:= _ xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Заголовок" .Axes(xlCategory).HasTitle = True .Axes(xlCategory).AxisTitle.Characters.Text = "xx" .Axes(xlSeries).HasTitle = False .Axes(xlValue).HasTitle = True .Axes(xlValue).AxisTitle.Characters.Text = "zz" End With ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False End Sub ** VFP5 XLSheet = createobject("Excel.Application") XLSheet.Visible = .t. XLSheet.Workbooks.Open('...\книга1.xls') **В FVP5 от него остается только следующее XLSheet.Range("A1:B7").Select XLSheet.Charts.Add XLSheet.ActiveChart.ChartType = 51 XLSheet.ActiveChart.PlotBy = 2 WITH XLSheet.ActiveChart .HasTitle = .t. .ChartTitle.Characters.Text = 'Заголовок' .Axes(1).HasTitle = .t. .Axes(1).AxisTitle.Characters.Text = 'xx' .Axes(2).HasTitle = .t. .Axes(2).AxisTitle.Characters.Text = 'zz' ENDWITH Вопрос Как оставшиеся строки макроса в VFP записать, чтобы весь макрос выполнить. ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("A1:B7") ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2008, 15:45 |
|
Еще раз про макросы Excel из FVP
|
|||
---|---|---|---|
#18+
так и пишите XLSheet.ActiveChart.SetSourceData Source=XLSheet.Sheets("Лист1").Range("A1:B7") у Вас есть макрос на VB и Вы переводите на foxpro но ведь Вы можете просто позвать макрос макрос вы можете добавить в созданный объект командой Код: plaintext 1. 2.
звать макрос нужно так Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2008, 17:13 |
|
Еще раз про макросы Excel из FVP
|
|||
---|---|---|---|
#18+
Если бы так просто было, не спрашивал бы. Эти три строки просто так не даются. Насчет вызова макроса в курсе, но нежелательно это делать, т.к. XLS-файл у меня создается вновь/ ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2008, 14:01 |
|
Еще раз про макросы Excel из FVP
|
|||
---|---|---|---|
#18+
dvalЕсли бы так просто было, не спрашивал бы. Эти три строки просто так не даются. Насчет вызова макроса в курсе, но нежелательно это делать, т.к. XLS-файл у меня создается вновь / Сложно судить о, так сказать "технике исполнения". Ну, а если подумать в сторону создания XLS-файла - шаблона с макросом и уже на основании его (из Foxa), формировать выходной файл (через Save As), который также будет содержать макрос и через .run('Макрос1') легко и не принужденно его вызывать. Тогда, не нужно будет каждый раз заморачиваться с программным созданием из Foxa макроса при создании XLS-файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2008, 17:29 |
|
Еще раз про макросы Excel из FVP
|
|||
---|---|---|---|
#18+
Спасибо, кто ответил, получилось в итоге следующее Excel ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("A1:B7") ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1" ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False VFP XLSheet.ActiveChart.SetSourceData(XLSheet.Sheets('Лист1').Range("A1:B7")) XLSheet.ActiveChart.ApplyDataLabels(2,.F.) XLSheet.ActiveChart.Location(2,"Лист1") ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2008, 15:55 |
|
Еще раз про макросы Excel из FVP
|
|||
---|---|---|---|
#18+
> XLSheet.ActiveChart.Location(2,"Лист1") Я категорически против "Лист1". А если у меня английский Excel? А если китайский? Есть коллекция книг, у каждой есть коллекция листов. Вот ими и надо оперировать. goExcel = CREATEOBJECT("Excel.Application") loWB=goExcel.WorkBooks.Add() && loWB - полноценная ссылка на вновь созданную книгу FOR lnI=1 TO goExcel.WorkBooks.Count() ?'Книга: '+goExcel.WorkBooks(lnI).name FOR lnJ=1 TO goExcel.WorkBooks(lnI).Sheets.count() ?'Лист: '+goExcel.WorkBooks(lnI).Sheets(lnJ).name ENDFOR ENDFOR ** Пример работы со ссылкой loWB. Так же можно сразу определить ссылку на нужную страницу и работать уже с ней. ?'Книга: '+loWB.name FOR lnJ=1 TO loWB.Sheets.count() ?'Лист: '+loWB.Sheets(lnJ).name ENDFOR Учитесь сразу думать объектами, а не их именами. PS один программер долго матерился, когда наткнулся на подобную проблему. Правда проблема была в том, что он нужную книку искал по ее заголовку, а на одном из компов в свойствах проводника стояло "неотображать расширения зарегистрированных файлов". Соответственно в заголовке нужной ему книке отсутствовало 4 буквы ".xls". Он долго бегал по компам и менял свойства проводника. Когда мне пришлось "несколько поправить" вывод в эксель (добавились поля) - долго матерился и многое правил - данную проблему обошел очень просто. Запомнил ссылку на объек "Книга" в момент ее создания, а не искал ее при необходимости по заголовку. PPS - "думать объектами" - подразумеваю, что есть объект, которым вы оперируете, а уже у него есть свойства, которые вы можете считывать или записывать (менять). Но никак не наоборот. В данном случае "Лист1" - это свойство, причем не самое лучшее для ссылки на объект "лист". Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2008, 17:20 |
|
Еще раз про макросы Excel из FVP
|
|||
---|---|---|---|
#18+
авторНасчет вызова макроса в курсе, но нежелательно это делать, т.к. XLS-файл у меня создается вновь вот пример создания налету и выполнения макроса. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 09:58 |
|
Еще раз про макросы Excel из FVP
|
|||
---|---|---|---|
#18+
12345вышелзайчикпогулять вот пример создания налету и выполнения макроса. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
У меня выдал ошибку 1943. VBProject - не является объеком. Использую Excel 2007 и VFP9 SP2 (для себя только что открыл, если написать VFP русскими буквами то получиться МАЗ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 11:29 |
|
Еще раз про макросы Excel из FVP
|
|||
---|---|---|---|
#18+
> Автор: Виталий Васильев Открываешь Ексель, меню "Сервис" -> "Макрос" -> "Безопастность", Закладка "Надежные издатели" -> поставить птицу "Доверять доступ к Visual Basic Project" Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 12:29 |
|
|
start [/forum/topic.php?fid=41&fpage=112&tid=1585874]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
3ms |
others: | 341ms |
total: | 512ms |
0 / 0 |