Corel FORUM
Forum użytkowników programów firmy Corel. Grafika wektorowa, rastrowa i obróbka zdjęć cyfrowych

Makra - Poprawa makra

kam_fafik - 10 Wrzesień 2025, 07:56
Temat postu: Poprawa makra
Cześć. Mam takie makro do rozstawiania elementów obok siebie ale po przeniesieniu się na nowy komputer zaczęło się dziwnie zachowywać - znaczy się zmieniłem komputer na nowy szybszy i na nim zainstalowałem świeżego CorelaX7. Zamiast wklejać normalnie elementy to wkleja je jako obiekt Coreldraw i zmienia jego rozmiar. Nie bardzo wiem co jest nie tak, że tak dziwnie wychodzi. Może ktoś jest w stanie mi pomóc w poprawie tego.
W zał. podsyłam plik źródło i wynik. Pracuje na CorelX7. Poniżej kod makra.

Kod:
Public Sub ROZSTAWIANIE()

Dim Message, Title, Default, MyValue
'Default = "10"    ' Set default.
Message = "Wpisz liczbe wierszy w kolumnie"    ' Set prompt.
Title = "Pole dialogowe"    ' Set title.
' Display message, title, and default value.
MyValue = InputBox(Message, Title, Default)

If MyValue = 0 Then
    MyValue = ""
End If

If MyValue = "" Then
    MsgBox "Podales zla liczbe"
Else
    Dim s As Shape, x As Double, y As Double, _
    i As Integer, j As Integer, b_union As Boolean, _
    doc1 As Document, doc As Document, pg As Page, frame As Shape
    col_count = MyValue 'ilosc stron w kolumnie
    b_union = False
    i = 0
    j = 0
    Optimization = True
    Set doc = ActiveDocument
    doc.Unit = cdrMillimeter
    doc.ActivePage.GetSize x, y
    For Each pg In doc.Pages
        If b_union = False Then
            Set doc1 = CreateDocument
            doc1.Name = "union"
            doc1.Unit = cdrMillimeter
            b_union = True
        End If
        Set frame = pg.ActiveLayer.CreateRectangle(0, y, x, 0)
        Set s = pg.SelectShapesFromRectangle(-1.5, y + 1.5, x + 1.5, -1.5, False)
        frame.Delete
        s.Group
        s.Copy
        Set s = doc1.ActiveLayer.Paste
        s.SetPosition j * x, y - (i * y)
        i = i + 1
        If i = col_count Then
            i = 0
            j = j + 1
        End If
    Next
    'doc.Close
    Optimization = False
End If
End Sub


Po sprawdzeniu wychodzi na to że corel wkleja skopiowany element jako obiekt OLE zamiast normalnie jako kształt. Niestety nie wiem jak to zmienić. Może ma ktoś jakiś pomysł?


Powered by phpBB modified by Przemo © 2003 phpBB Group