Grupy dyskusyjne Google nie obsługują już nowych postów ani subskrypcji z Usenetu. Treści historyczne nadal będą dostępne.

Szybkie zapisanie dokumentu z określoną nazwą

94 wyświetlenia
Przejdź do pierwszej nieodczytanej wiadomości

janek.kot

nieprzeczytany,
21 sie 2005, 05:44:0021.08.2005
do
Witam,

Proszę o pomoc w utworzeniu makra, które będzie w szybki sposób zapisywało i
zamykało dokument. Cała trudność polega na tym, że Word nazywa plik od tego,
co znajduje się w pierwszej linijce dokumentu a mi zależy na tym by brał
nazwę od tego, co znajduje się np. w 10 linijce a najlepiej z określonej
komórki w tabelce. Czy jest to możliwe?

--
Pozdrawiam
Janek

pxd74

nieprzeczytany,
21 sie 2005, 16:13:1221.08.2005
do
Użytkownik "janek.kot" <jane...@gazeta.pl> napisał w wiadomości
news:de9icu$q9n$1...@inews.gazeta.pl...

> Witam,
>
> Proszę o pomoc w utworzeniu makra, które będzie w szybki sposób zapisywało
> i zamykało dokument. Cała trudność polega na tym, że Word nazywa plik od
> tego, co znajduje się w pierwszej linijce dokumentu a mi zależy na tym by
> brał nazwę od tego, co znajduje się np. w 10 linijce a najlepiej z
> określonej komórki w tabelce.

Po pierwsze: Word nie rozumie co to takiego "10 linijka", gdyż słowo wpisane
w dokumencie w tym samym miejscu może być pokazywane w innej linijce na
innym komputerze (czyt. na innej drukarce). Żeby okreslić miejsce skąd makro
ma pobierać tekst nalezy uzywać takich słów jak: paragraf, słowo czy znak,
np.: "drugie i trzecie słowo w piątym paragrafie". Może chodziło Ci o 10
paragraf? Poniżej masz opis jak to wykonać:

1. Wejdź do Edytora Visual Basic i zaznacz moduł ThisWorkbook w projekcie
Normal.
2. Wybierz polecenie menu Insert -> Class Module i w oknie które się ukaże
wpisz taki tekst:
'======================
Public WithEvents a As Application

Private Sub a_DocumentBeforeSave(ByVal Doc As Document, _
SaveAsUI As Boolean, Cancel As Boolean)
Dim nazwa As String
Dim ścieżka As String

ścieżka = "D:/Moje dokumenty/"
'pobiera nazwę z 10 paragrafu
nazwa = Doc.Paragraphs(10).Range.Text
nazwa = Left(nazwa, Len(nazwa) - 1)
Doc.SaveAs ścieżka & nazwa
Cancel = True
End Sub
'======================

lub taki tekst:
'======================
Public WithEvents a As Application

Private Sub a_DocumentBeforeSave(ByVal Doc As Document, _
SaveAsUI As Boolean, Cancel As Boolean)
Dim nazwa As String
Dim ścieżka As String

ścieżka = "D:/Moje dokumenty/"
'pobiera nazwę z pierwszej tabeli w dokumencie
'z pierwszego wiersza i drugiej kolumny
nazwa = Doc.Tables(1).Cell(1, 2).Range.Text
nazwa = Left(nazwa, Len(nazwa) - 2)
Doc.SaveAs ścieżka & nazwa
Cancel = True
End Sub
'======================
przyjąłem, że nazwa w 10 paragrafie czy komórce tabeli nie zawiera ścieżki.

3. Wybierz polecenie menu Insert -> Module i wpisz w nim taką linijkę:

Public b As New Class1

4. Jeśli chcesz, aby każdy dokument był zapisywany w taki sposób poniższy
tekst wklej do modułu ThisDocument w projecie Normal. Jeśli chcesz, aby
makro dotyczyło tylko tego dokumentu, to ponizszy tekst wklej do modułu
ThisDocument w projekcie dokumentu.

Private Sub Document_open()
Set b.a = Application
End Sub

Uwaga! Jeśli wybierzesz drugą opcję, to pamiętaj że makro będzie działało na
wszystkie dokumenty otwarte po tym dokumencie w tej samej sesji programu
Word. Aby utworzyć nową sesję programu należy wybrać menu Start ->
Programy -> Microsoft Word i stamtąd otwierać dokumenty - na te dokumenty
makro nie będzie działać. Można też zamknąć dokument i wszystkie inne
dokumenty z tej samej sesji.


--
Pozdrowienia
pxd74

janek.kot

nieprzeczytany,
24 sie 2005, 15:22:0924.08.2005
do
Wielkie dzięki - własnie o coś takiego mi chodziło.

Aby do końca wyczerpać temat szybkiego zapisywania i zamykania dokumentów
proszę o jeszcze (codzień otwieram i zamykam setki). Mam nadzieję że nie
wyczerpałem jeszcze Twojej cierpiliwości. Otóż proszę jeszcze o takie dwa
makra uruchamiane jak poprzednie przyciskiem:
1. zapisuje dokument pod taką nazwą jak zaznaczony myszką fragment tekstu.
2. zamyka odrazu dokument bez zapisywania i bez upierdliwego pytania się czy
zapisać zmiany (naciska się przycisk makra i od razu zamyka aktywny
dokument). Tu prawdopodobnie jest jakaś możliwiść zaznaczenia czegoś w
ustawieniach i nigdy nie będzie pytał po naciśnięciu krzyżyka zamykającego
dokument czy zapisywać zmiany czy nie - ale nie o tą opcję tutaj mi chodzi,
choć dobrze byłoby wiedzieć jak to się robi.

--
Pozdrawiam
Janek

pxd74

nieprzeczytany,
26 sie 2005, 05:59:4626.08.2005
do
Użytkownik "janek.kot" <jane...@gazeta.pl> napisał w wiadomości
news:deihe5$8c1$1...@inews.gazeta.pl...

> 1. zapisuje dokument pod taką nazwą jak zaznaczony myszką fragment tekstu.

nazwa = Selction.Text


> 2. zamyka odrazu dokument bez zapisywania i bez upierdliwego pytania się
> czy zapisać zmiany (naciska się przycisk makra i od razu zamyka aktywny
> dokument).

Sub ZamykajBezPytania()
ActiveDocument.Close wdDoNotSaveChanges
End Sub


> Tu prawdopodobnie jest jakaś możliwiść zaznaczenia czegoś w
> ustawieniach i nigdy nie będzie pytał po naciśnięciu krzyżyka zamykającego
> dokument czy zapisywać zmiany czy nie - ale nie o tą opcję tutaj mi
> chodzi, choć dobrze byłoby wiedzieć jak to się robi.

Zdaje mi się, że nie ma takiej opcji.


--
Pozdrowienia
pxd74

janek.kot

nieprzeczytany,
28 sie 2005, 16:36:4428.08.2005
do
Użytkownik "pxd74" <px...@poczta.onet.pl> napisał w wiadomości
news:demoud$349$1...@inews.gazeta.pl...

>> 1. zapisuje dokument pod taką nazwą jak zaznaczony myszką fragment
>> tekstu.
> nazwa = Selction.Text

tu wkradła się literówka - powinno być "Selection.Text"

Wielkie podziękowania za pomoc.

--
Pozdrawiam
Janek


Nowe wiadomości: 0