vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest niedziela, 29 kwietnia 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

prosił bym o pomoc w kodzie, dotyczy VB w Wordzie.


otwartyotwarty rozpoczął: Nocny postów: 14



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

  
nazwa pliku rozmiar
test.docx 12.11 kB

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


Sortuj posty: z