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

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
Poprawa makra
Autor Wiadomość
kam_fafik 
Początkujący


Wersja CorelDRAW: x7
Dołączył: 05 Mar 2019
Posty: 7
Skąd: Poznań
Wysłany: 10 Wrzesień 2025, 07:56   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ł?

Zrzut ekranu 2025-09-10 091306.png
Pobierz Plik ściągnięto 194 raz(y) 252.6 KB

90x50mm_lista.cdr
Pobierz Plik ściągnięto 273 raz(y) 1.92 MB

 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
         
Strona wygenerowana w 0.1 sekundy. Zapytań do SQL: 11