napisał: Nocny postów: 8
umieszczony: 8 października 2012 19:32
|
|
Bosko, wszystko działa!! Wielkie dzięki za pomoc!! Zdecydowanie ułatwi i przyspieszy mi to pracę!;]]] |
|
napisał: Trebor postów: 1209
umieszczony: 8 października 2012 19:14
edytowany: 8 października 2012 19:18
|
|
W kodzie który podałem łatwo wyłuskać nazwę:
"Pan " & ActiveDocument.TextBox2.Text & " " & Format(Date, "dd_mm_yyyy") & ".pdf" reszta to efekt nagrania makra.
Najprawdopodobniej makro próbuje nadpisać już utworzony plik, który jest tylko do odczytu. |
|
napisał: Nocny postów: 8
umieszczony: 8 października 2012 19:02
|
|
Ten kod nie działa, pokazuje mi komunikat że plik jest tylko do odczytu, a nie jest. Czy mozna obecny kod zmienić tak aby przypisać wartości np:
data = Format(Date, "dd_mm_yyyy")
pan = pan (słowo)
i zrobić coś takiego:
pdfFileName = Replace(pan,pdfFileName, data ".docx", ".pdf")
W rozumieniu że "pan" pobiera wartość pan, "pdffilename" pobiera z textboxa, i "data" generuje dzisiejszą datę i zapisuje jako .pdf. ??
Mam nadzieję że napisałem to w sposób, możliwy do zrozumienia.
Oczywiście wpisałem to niepoprawnie kodowo, dlatego że nie wiem jak to zrobić. |
|
napisał: Trebor postów: 1209
umieszczony: 8 października 2012 18:35
|
|
Mniej więcej tak się nagrało (zmieniłem to co istotne, reszta tak jak się nagrało)
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"C:\" & "Pan " & ActiveDocument.TextBox2.Text & " " & Format(Date, "dd_mm_yyyy") & ".pdf", ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False |
|
napisał: Nocny postów: 8
umieszczony: 8 października 2012 18:25
|
|
Właśnie przykleiłem kod do suba, bo coś tam mi zaświtało z tym .change. W każdym bądź razie działa. Serdecznie dziękuje ci za pomoc :)
Prosiłbym o pomoc teraz w kolejnej zmianie tego kodu tak aby plik zapisywał się jako pdf, pod tytułem "Pan (tekst z textboxu) list (aktualna data)", czyli "Pan Jan Kowalski list 08.10.2012"? :)
Kod wygląda obecnie tak:
"Sub SAVE_AS_PDF()
'
' SAVE_AS_PDF Makro
'
'
Dim pdfFileName As String
pdfFileName = ActiveDocument.TextBox2.Text
pdfFileName = Replace(pdfFileName, ".docx", ".pdf")
If pdfFileName <> "" Then
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
pdfFileName _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateHeadingBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
If MsgBox("Czy zapisać jako plik PDF?", vbYesNo, "Zapisywanie jako PDF") = vbYes Then
Dim r As Double, strExecutable As String
strExecutable = "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe"
r = Shell(strExecutable & " " & pdfFileName, vbNormalFocus)
End If
End If
End Sub |
|
napisał: Trebor postów: 1209
umieszczony: 8 października 2012 18:18
|
|
Musisz zwrócić uwagę gdzie zapisujesz makro. Z mojego punktu widzenia najlepiej wstaw moduł do Twojego projektu i stwórz jakąś nazwę Suba i wklej kod. W tej chwili kod masz w zdarzeniu TextBox2_Change() i z tego powodu każda zmiana tego TextBoxa uruchamia Twój kod. |
|
napisał: Nocny postów: 8
umieszczony: 8 października 2012 18:14
|
|
Jednak działa, mój błąd. Proszę nie zamykać tematu, mam jeszcze parę pytań :) |
|
napisał: Nocny postów: 8
umieszczony: 8 października 2012 18:07
|
|
Wprowadziłem zmiany, teraz po wpisaniu jednego znaku, od razu pojawia się komunikat "Czy zapisać jako plik PDF?", jak zrobić abym mógł wpisać frazę, i dopiero wtedy zapisać jako pdf? Dodam że, mimo komunikatu, i tak nie pojawia się plik .pdf.
Private Sub TextBox2_Change()
'
' SAVE_AS_PDF Makro
'
'
Dim pdfFileName As String
pdfFileName = ActiveDocument.TextBox2.Text
pdfFileName = Replace(pdfFileName, ".docx", ".pdf")
If pdfFileName <> "" Then
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
pdfFileName _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateHeadingBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
If MsgBox("Czy zapisać jako plik PDF?", vbYesNo, "Zapisywanie jako PDF") = vbYes Then
Dim r As Double, strExecutable As String
strExecutable = "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe"
r = Shell(strExecutable & " " & pdfFileName, vbNormalFocus)
End If
End If
End Sub |
|
napisał: Trebor postów: 1209
umieszczony: 8 października 2012 17:53
|
|
Inne pole tekstowe wstawiłeś:
MsgBox ActiveDocument.TextBox2.Text |
|
napisał: Nocny postów: 8
umieszczony: 8 października 2012 17:35
|
|
Załączyłem plik worda :) |
|
napisał: Trebor postów: 1209
umieszczony: 8 października 2012 17:25
|
|
Zamieść po prostu na forum Twój dokument, będzie łatwiej odpowiedzieć. |
|
napisał: Nocny postów: 8
umieszczony: 8 października 2012 17:17
|
|
Zamieniłem
pdfFileName = ActiveDocument.FullName
na
pdfFileName = ActiveDocument.Shapes("TextBox2").TextFrame.TextRange & ".pdf"
(pole tekstowe nazywa się "TextBox2")
wynik po uruchomieniu makra to komunikat:
Run-time error '... cyferki':
Nie odnaleziono elementu o podanej nazwie.
Co źle zrobiłem?
Kod po zmianie:
Sub SAVE_AS_PDF()
'
' SAVE_AS_PDF Makro
'
'
Dim pdfFileName As String
pdfFileName = ActiveDocument.Shapes("poletekstowe2").TextFrame.TextRange & ".pdf"
pdfFileName = Replace(pdfFileName, ".docx", ".pdf")
If pdfFileName <> "" Then
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
pdfFileName _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateHeadingBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
If MsgBox("Czy zapisać jako plik PDF?", vbYesNo, "Zapisywanie jako PDF") = vbYes Then
Dim r As Double, strExecutable As String
strExecutable = "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe"
r = Shell(strExecutable & " " & pdfFileName, vbNormalFocus)
End If
End If
End Sub |
|
napisał: Trebor postów: 1209
umieszczony: 8 października 2012 15:57
|
|
Z wordem jestem trochę na bakier, ale co szkodzi spróbować.
pdfFileName = ActiveDocument.Shapes("Text Box 2").TextFrame.TextRange & ".pdf"
Da się tak? |
|
napisał: Nocny postów: 8
umieszczony: 8 października 2012 12:40
|
|
Witam, trzy po trzy rozumiem kod.
Plan jest taki:
w dokumencie worda zamieszczam pole tekstowe (TextBox1), w którym wpisuje np: Jan Kowalski.
Chciałbym aby skrypt zapisywał dokument jako .pdf z wartoscią z text boxa, czyli w tym wypadku "Jan Kowalski.pdf".
Wiem że skrypt musi pobierać wartość z textboxa, ale nie wiem jak połączyć textbox z kodem.
Serdecznie prosiłbym o pomoc!
Sub SAVE_AS_PDF()
'
' SAVE_AS_PDF Makro
'
'
Dim pdfFileName As String
pdfFileName = ActiveDocument.FullName
pdfFileName = Replace(pdfFileName, ".docx", ".pdf")
If pdfFileName <> "" Then
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
pdfFileName _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateHeadingBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
If MsgBox("Czy zapisać jako plik PDF?", vbYesNo, "Zapisywanie jako PDF") = vbYes Then
Dim r As Double, strExecutable As String
strExecutable = "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe"
r = Shell(strExecutable & " " & pdfFileName, vbNormalFocus)
End If
End If
End Sub |
|
wstecz 1 dalej wszystkich stron: 1
|
|