Corel VBA и Excel

  • Автор темы Автор темы koffeinman
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

koffeinman

Участник
Топикстартер
Сообщения
2
Реакции
0
Уважаемые знатоки помогите кто может
Раскажу в чём суть: нужно сравнить данные(код товара)из Excel с Corel и если они совпадают скопировать данные из Excel и вставить в Corel
(цена товара). Я это сделал так: из Corel по средствам макроса открываю Excel файл, записываю 2 столбца (код товара и его цена) в массив,
Потом перебираю первый столбец массива и ищу его значение в corel если нахожу заменяю значение на цену.
Проблема в том, что не знаю как в Corel VBA написать замену текста
Вот код:
Код:
Sub GET_DATA1() 
Dim EXCELAPP As Object 
Dim EXCEL_DATA_FILE As String 
Dim s As Shape 
Dim sh 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 
Else 

MsgBox "Yes " 
Set s = ActiveLayer.CreateArtisticText(s.PositionX, s.PositionY, a(q, 2)) 

End If 
q = q + 1 
Next 
End Sub
 
Ответ: Corel VBA и Excel

замена - s.Text.Replace
но, наверно, проще будет, просто, присвоить новое значение тексту
s.Text.Story="новый текст"
----
У Вас ищется первое значение из массива на первой странице, второе на второй и т.д. Так и должно быть?
Или Вы не вставили цикл по q от 1 до 10, чтобы искать каждое значение на каждой странице?
 
Ответ: Corel VBA и 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
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
 
Ответ: Corel VBA и Excel

Комментарий модератора: Уже во втором сообщении я вынужден за Вас вставлять теги [ code], далее пойдут предупреждения
 
Ответ: Corel VBA и Excel

Мне конечно трудно судить, что у Вас там за проблема, но схожую задачу я выполнял полностью в Excel, а потом уже все нужные значения вставлял в Corel с помощью Слияния при печати (Вы ведь в конечном итоге это на печать выводите?). Мне кажется так проще (хотя могу и ошибаться)
 
Статус
Закрыто для дальнейших ответов.