Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Wklejanie do Worda jako rysunek; zaznaczanie poszczegolnych stron wydruku
adalek




Typ: neutral
Postów: 54
Zarejestrowany: Jan 2005
Wklejanie do Worda jako rysunek; zaznaczanie poszczegolnych stron wydruku

kolejny dzien, kolejne wyzwanie

musze przerzucic wszystkie arkusze za skoroszytu do Worda.
poniewaz jest on dosc "fikusnie" sformatowany musze to zrobic przez "wklej specjalnie" jako rysunek - inaczej wszystko sie rozjezdza.

problem w tym, ze wklejajac jako rysunek arkusz, ktory zajmuje wiecej niz jedna strone wydyku, do Worda wkleja sie tylko pierwsza strona, a reszta ginie w niebycie.

i tu pytanie pierwsze - czy mozna jakos poradzic sobie z tym problemem?

ja idac dalej stwierdzilem ze w takim razie bede sobie przenosil po jednej stronie i zrzucac te strony w Wordzie jadna pod druga.

i tu drugie pytanie - jak z poziomu VBA zaznaczac w Excelu poszczegolne strony wydruku?

z gory dzieki za pomoc

22-05-2005 12:39
Pokaż profil adalek  Wyślij email do adalek   
adalek




Typ: neutral
Postów: 54
Zarejestrowany: Jan 2005

ufff, cos tam wydlubalem - udalo sie zaznaczanie stron

Sub ExportWord()
Dim ObszarDrukowania As String, IleStron As Long, myPageStart As Range, myPageEnd As Range, myPrintEnd As Range, _
i As Long, arkusz As Worksheet

For Each arkusz In Worksheets
'ustalenie liczby stron
IleStron = arkusz.HPageBreaks.Count + 1
ObszarDrukowania = Range(arkusz.PageSetup.PrintArea).Address
'poczatek obszaru drukowania - poczatek pierwszej strony
Set myPageStart = Range(Left(ObszarDrukowania, InStr(1, ObszarDrukowania, Chr(58)) - 1))
'koniec obszaru drukowania
Set myPrintEnd = Range(Right(ObszarDrukowania, Len(ObszarDrukowania) - InStr(1, ObszarDrukowania, Chr(58))))


For i = 1 To IleStron
'koniec strony
If i <> IleStron Then
Set myPageEnd = Cells(arkusz.HPageBreaks(i).Location.Row - 1, myPrintEnd.Column)
Else
Set myPageEnd = myPrintEnd
End If
Range(myPageStart, myPageEnd).Select
'<<<tu bedzie kod do exportu do Worda>>

'poczatek nastepnej strony
Set myPageStart = Cells(myPageEnd.Row + 1, myPageStart.Column)

Next i

Next arkusz
Set myPageStart = Nothing
Set myPrintEnd = Nothing
Set myPageEnd = Nothing

End Sub


moze macie jakis pomysl zeby to zrobic prosciej?

[Post edytowany dnia 22-05-2005 14:31 przez adalek]

22-05-2005 14:27
Pokaż profil adalek  Wyślij email do adalek   
adalek




Typ: neutral
Postów: 54
Zarejestrowany: Jan 2005

no nieeeeeeeee, kolejny blok ((

probowalem stworzyc kod do exportu arkuszy Excel do Worda w formie obrazu, ale nic z tego - kreatorem sie tego zrobic nie da.


help!!!

22-05-2005 15:22
Pokaż profil adalek  Wyślij email do adalek   
adalek




Typ: neutral
Postów: 54
Zarejestrowany: Jan 2005

no dobra, z tym sobie poradzilem - office xp generowal jakis durny kod, ale na starym 2000 juz cos sie dalo cos z tym zrobic.

ale teraz to juz na bank utknalem - pol dnia walki i nic do przodu:

z mojego skoroszytu exportuja sie do worda (arkusz za arkuszem) poszczegolne strony wydruku.

wszystko ladnie tylko czesc tych akruszy ma uklad poziomy a czesc pionowy - chcialem zrobic tak, ze jesli arkusz jest pionowy to dana strona w Wordzie tez bedzie pionowa, dla poziomu analogicznie.

wyplulem cos takiego:

If arkusz.PageSetup.Orientation = xlLandscape Then
ActiveDocument.Range(Start:=WordAppl.Selection.Start, End:=ActiveDocument.Content.End).PageSetup. _
Orientation = wdOrientLandscape
Else
ActiveDocument.Range(Start:=WordAppl.Selection.Start, End:=ActiveDocument.Content.End).PageSetup. _
Orientation = wdOrientPortrait
End If

problem w tym, ze polecenie zmienia uklad calego dokumentu a nie pojedynczej strony.

macie jakies pomysly?

23-05-2005 12:22
Pokaż profil adalek  Wyślij email do adalek   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

A to dla tego, że określiłeś koniec zakresu jako koniec dokumentu:
End:=ActiveDocument.Content.End

Myślę, że gdybyś zamienił na:
End:=WordAppl.Selection.End
byłoby ok.
Rozumiem, że strony tworzysz kopiując arkusze z Excela do Worda.


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

24-05-2005 09:54
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
adalek




Typ: neutral
Postów: 54
Zarejestrowany: Jan 2005

no niestety, to samo.

mysle ze problem nie jest ze znalezieniem konca zakresu zmian, tylko jego poczatku - gdy cos takiego robie recznie, zmieniam w ustawieniach  strony "zastosuj do" z "caly dokument" na "od biezacego miejsca", natomiast procedura zmienia uklad dla calego dokumentu.
problem chyba dotyczy wiec:

Start:=WordAppl.Selection.Start

przez ktore VBA rozumie poczatek dokumentu, a powinien poczatek strony

24-05-2005 11:22
Pokaż profil adalek  Wyślij email do adalek   
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Wydaje mi się, że zmiana orientacji strony następuje dla całego dokumentu, ponieważ Twój punkt wstawiania (bieżące miejsce) jest jakby na początku dokumentu, ponieważ jeśli u siebie wykonam następujące makro, orientacja strony zmienia się na Landscape od strony 15, przykładowo, oczywiście:

Sub LandScapeOd15()
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="15"
    ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _
        InsertBreak Type:=wdSectionBreakNextPage
    With ActiveDocument.Range(Start:=Selection.Start, End:=ActiveDocument. _
        Content.End).PageSetup
        .Orientation = wdOrientLandscape
    End With
End Sub

[Post edytowany dnia 24-05-2005 12:23 przez karolinavb]


_____________________________________________
Karolina

24-05-2005 12:21
Pokaż profil karolinavb  Wyślij email do karolinavb   
adalek




Typ: neutral
Postów: 54
Zarejestrowany: Jan 2005

ale jak wklejam np druga strone to punkt wstawiania jest juz na stronie drugiej. problem w tym ze nie mozna z gory okreslic ile bedzie stron, ani nawet ktora bedzie "portrait" a ktora "landscape". tak wiec strona do zmiany ustawienia bedzie musiala byc zmienna.

cos pomieszam z Twoim kodem w wolnej chwili.

dziekuje bardzo

24-05-2005 12:33
Pokaż profil adalek  Wyślij email do adalek   
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Pytanie jest takie kiedy masz informację jaka orientację ma wstawiana strona, bo jesli przed wstawieniem to wystarczy:

Sub WklejnaKoncu()
    Selection.EndKey Unit:=wdStory
    ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _
        InsertBreak Type:=wdSectionBreakNextPage
    Selection.Start = Selection.Start + 1
    With ActiveDocument.Range(Start:=Selection.Start, End:=ActiveDocument. _
        Content.End).PageSetup
        .Orientation = wdOrientLandscape
    End With
    Selection.Paste
End Sub

A jeśli wstawiasz na końcu, a o orientacji dowiadujesz się dopiero po wstawieniu, trzeba wykorzystać Bookmark:

Dim MyRange As Range
Dim oBkm As Bookmark
    Selection.EndKey Unit:=wdStory
    Set oBkm = ActiveDocument.Bookmarks.Add("temp" + CStr(2), Range:=Selection.Range)
    Selection.Paste
    oBkm.Select
    ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _
        InsertBreak Type:=wdSectionBreakNextPage
    Selection.Start = Selection.Start + 1
    With ActiveDocument.Range(Start:=Selection.Start, End:=ActiveDocument. _
        Content.End).PageSetup
        .Orientation = wdOrientLandscape
    End With

End Sub
przy czym w linii:

Set oBkm = ActiveDocument.Bookmarks.Add("temp" + CStr(2), Range:=Selection.Range)

zaznaczona nazwa Bookmark musi się zmieniać

[Post edytowany dnia 24-05-2005 13:13 przez karolinavb]


_____________________________________________
Karolina

24-05-2005 12:59
Pokaż profil karolinavb  Wyślij email do karolinavb   
adalek




Typ: neutral
Postów: 54
Zarejestrowany: Jan 2005

tak, wiem to przed wstawianiem - pobieram to z akrusza w momencie kopiowania strony z excela.

zaraz sprawdze

po edicie:

DZIALA DZIALA!!!!

Karolino, dziekuje i chyle czola

co oznacza to wdStory w pierwszej linii?

[Post edytowany dnia 24-05-2005 13:18 przez adalek]

24-05-2005 13:08
Pokaż profil adalek  Wyślij email do adalek   
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Zobacz dalszą część odpowiedzi poprzedniej...


_____________________________________________
Karolina

24-05-2005 13:15
Pokaż profil karolinavb  Wyślij email do karolinavb   
Wszystkich odpowiedzi: 10 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1