Страницы: 1
RSS
Открытие Excel из Corel через VBA
 
Уважаемые эксперты подскажите возможно ли отарыть Excel файл из Corel 12 по средсвам VBA?
 
Конечно можно.  
 
Файл надо просто открыть, или потом ещё получить из него данные?
 
Открыть  получить данные, чтоб потом их сравнить с Corel-скими
 
Поясню смысл: в Corel есть объекты которые надо сравнить с excel если они совпадают то в Corel изменить значение объекта на Excel-ский.
 
Это всё что пришло в голову, но к сожалению не отрабатывает строка  
Workbooks.Open (ActiveDocument.FilePath & EXCEL_DATA_FILE)  
 
 
Sub GET_DATA1()  
 
Dim EXCELAPP As Object  
 Set EXCELAPP = CreateObject("excel.application")  
 EXCELAPP.Visible = False  
 Workbooks.Open (ActiveDocument.FilePath & EXCEL_DATA_FILE)  
 EXCELAPP.Visible = True  
 EXCELAPP.Quit  
 
End Sub
 
EXCELAPP.Quit Вот эта лишняя мне надо потом с этого документа данные брать  
Вы имеее ввиду так:  
Sub GET_DATA1()  
Dim EXCELAPP As Object  
Dim EXCEL_DATA_FILE As String  
EXCEL_DATA_FILE = "123.xls"  
 
Set EXCELAPP = CreateObject("excel.application")  
EXCELAPP.Visible = False  
Workbooks.Open (ActiveDocument.FilePath\EXCEL_DATA_FILE)  
EXCELAPP.Visible = True  
End Sub
 
Ни такой:  
Sub GET_DATA1()  
Dim EXCELAPP As Object  
Dim EXCEL_DATA_FILE As String  
EXCEL_DATA_FILE = "123.xls"  
 
Set EXCELAPP = CreateObject("excel.application")  
EXCELAPP.Visible = False  
Workbooks.Open (ActiveDocument.FilePath & "\" & EXCEL_DATA_FILE)  
EXCELAPP.Visible = True  
End Sub  
 
Ни такой:  
 
Sub GET_DATA1()  
Dim EXCELAPP As Object  
Dim EXCEL_DATA_FILE As String,sPath as String  
EXCEL_DATA_FILE = "123.xls"  
sPath = iif(right$(ActiveDocument.FilePath,1)<> "\",ActiveDocument.FilePath & "\",ActiveDocument.FilePath)  
Set EXCELAPP = CreateObject("excel.application")  
EXCELAPP.Visible = False  
Workbooks.Open (sPath & EXCEL_DATA_FILE)  
EXCELAPP.Visible = True  
End Sub  
 
варианты не отрабатывают Ошибки в сроках:  
Workbooks.Open (ActiveDocument.FilePath & "\" & EXCEL_DATA_FILE)  
Workbooks.Open (sPath & EXCEL_DATA_FILE)  
 
Ошибка: Run- time error(424)
 
Замените все  
 
Workbooks.Open  
 
на  
 
EXCELAPP.Workbooks.Open
 
Всем Спасибо огромное всё заработало!!)
 
Уважаемые эксперты, помогите с продолжением баллады))  
В кратце раскажу суть: есть файл Excel с данными и файл Corel (каталог продукции)надо менять цены в Corel (данные брать с Excel)  
Sub GET_DATA1()  
Dim EXCELAPP As Object  
Dim EXCEL_DATA_FILE As String  
Dim s As Shape  
Dim p As Page  
Dim q As Integer  
q = 1  
aa = ActiveDocument.Pages.Count  
EXCEL_DATA_FILE = "123.xls"  
Set EXCELAPP = CreateObject("excel.application")  
EXCELAPP.Visible = False  
EXCELAPP.Workbooks.Open (ActiveDocument.FilePath & "\" & EXCEL_DATA_FILE)  
Dim a(10, 2)  
   For i = 1 To 10  
       a(i, 1) = EXCELAPP.ActiveWorkbook.Worksheets("Ëèñò1").Cells(i, 1).Value  
       a(i, 2) = EXCELAPP.ActiveWorkbook.Worksheets("Ëèñò1").Cells(i, 2).Value  
   Next  
 
EXCELAPP.Visible = True  
For j = 1 To aa  
   Set p = ActiveDocument.Pages(j)  
   Set s = p.FindShape(Name:=a(q, 1), Type:=cdrTextShape)  
   If s Is Nothing Then  
       MsgBox "No " & ActivePage.Index  
   Else  
         ???      
   End If  
   q = q + 1  
Next  
End Sub  
Загвоздка в следующем: как в корел происать значение?
 
Пробовал так:  
Set sh = ActiveLayer.CreateArtisticText(2, 0, a(q, 2))  
sh.PlaceTextInside s  
 
НО не работает
 
Я правильно понимаю, что этот макрос в  Corel?
 
А где такой форум по corel?
 
Это Вы сейчас кого спросили? Участников форума по Excel?
 
Да макрос написан в Corel, и из него же запускаетс, открывает excel файл берёт из него данные и записывает в массив, дальше сравниваем значение corela с массивом и если совпадает(код позиции) то...
 
Уточню - это форум по Excel. Поищите в Сети форумы по Corel. А лучше всего - присмотритесь к подписи EducatedFool
 
{quote}{login=The_Prist}{date=23.07.2010 12:07}{thema=Re: }{post}{quote}{login=КофеIN}{date=23.07.2010 11:58}{thema=}{post}А где такой форум по corel?{/post}{/quote}А что, поисковики Вам отказывают? Не хотят для Вас искать? Как-то они объясняют такое свое нехорошее поведение?{/post}{/quote}  
 
Поисковики говорят: -таких дураков которые пишут макросы в Corel почти нет))
 
{quote}{login=Юрий М}{date=23.07.2010 12:08}{thema=}{post}Уточню - это форум по Excel. Поищите в Сети форумы по Corel. А лучше всего - присмотритесь к подписи EducatedFool{/post}{/quote}  
 
Подпись EducatedFool это наверно какой то секретный пароль, но извините отзыва не знаю(поробую на угад:"Пароль рыба меч")
 
Ну что Вы... Это ник такой. См. его сообщение здесь от 22.07.2010, 12:34
 
{quote}{login=Юрий М}{date=23.07.2010 12:15}{thema=}{post}Ну что Вы... Это ник такой. См. его сообщение здесь от 22.07.2010, 12:34{/post}{/quote}  
 
Ааа понял теперь.  
Вы имеете ввиду за деньги заказать макрос в Corel?
 
Совсем необязательно. Просто его там легче найти :-)
 
Теперь понял. Попробую. Спасибо большое.
 
Кому интересно вот код готовой рабочей программы:  
Sub GET_DATA1()  
Dim EXCELAPP As Object  
Dim EXCEL_DATA_FILE As String  
Dim s As Shape  
Dim p As Page  
Dim q As Integer  
EXCEL_DATA_FILE = "123.xls"  
Set EXCELAPP = CreateObject("excel.application")  
EXCELAPP.Visible = False  
EXCELAPP.Workbooks.Open (ActiveDocument.FilePath & "\" & EXCEL_DATA_FILE)  
Dim a(10, 2)  
   For i = 1 To 10  
       a(i, 1) = EXCELAPP.ActiveWorkbook.Worksheets("Лист1").Cells(i, 1).Value  
       a(i, 2) = EXCELAPP.ActiveWorkbook.Worksheets("Лист1").Cells(i, 2).Value  
   Next  
EXCELAPP.Workbooks.Close  
'EXCELAPP.Visible = True  
aa = ActiveDocument.Pages.Count  
MsgBox (aa)  
For j = 1 To aa  
   q = 1  
   Set p = ActiveDocument.Pages(j)  
    For q = 1 To 10  
   Set s = p.FindShape(Name:=a(q, 1), Type:=cdrTextShape)  
   If s Is Nothing Then  
   Else  
s.Text.Story = a(q, 2)  
   
   End If  
   Next  
Next  
End Sub
Страницы: 1
Читают тему
Наверх