Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 67454 Skopiuj do schowka Zapis jako otwartego dokumentu word
Autor Wiadomość
GEO-XYZ 
Exceloholic


Wersja: Win Office 2013
Posty: 235
Wysłany: 05-03-2020, 10:24   Zapis jako otwartego dokumentu word

Witam,
Nie mogę sobie poradzić z opcją zapisu otwartego dokumentu jako korzystając ze zmiennych dotyczących nazwy pliku:
struktura nazwy pliku:
KOD_DZIENNIK_POMIARU_GNSS_KODOPERATORA_DATA
np. 19-099
KODOPERATORA - np. FBO
DATA - aktualna data w formacie przerobiona do formatu który bym chciał
wynik: 19-099_DZIENNIK_POMIARU_GNSS_MZI_20200305

Kod:

Private Sub CommandButton2_Click()

Dim operator                As String
Dim kod_projektu            As String
Dim data_wyplot             As String
Dim data                    As Date

Worksheets("GNSS_DANE").Range("B21") = Format(Date, "yyyymmdd")


data_wyplot = Worksheets("GNSS_DANE").Range("B21")
operator = Worksheets("DANE_BAZA").Range("B1")
kod_projektu = Worksheets("DANE_BAZA").Range("B2")

Dim fileSaveName            As Variant

fileSaveName = Application.GetSaveAsFilename(fileFilter:=".docx Files (*.docx), *.docx")
If fileSaveName <> False Then
MsgBox "Save as " & fileSaveName

End If

End Sub


kopia_do_word.xlsm
Pobierz Plik ściągnięto 24 raz(y) 28.36 KB

test.docx
Pobierz Plik ściągnięto 18 raz(y) 11.28 KB

_________________
XYZ
ID posta: 383133 Skopiuj do schowka
 
 
J_B 
Excel Expert


Wersja: Win Office 2016
Pomógł: 416 razy
Posty: 1088
Wysłany: 05-03-2020, 11:22   

GEO-XYZ napisał/a:
Nie mogę sobie poradzić z opcją zapisu otwartego dokumentu jako korzystając ze zmiennych dotyczących nazwy pliku:

Kod:
fileSaveName = Application.GetSaveAsFilename(fileFilter:=".docx Files (*.docx), *.docx")

Czy ty próbujesz zapisać plik excelowy jako plik worda ?
Sprawdź czy uda ci się ręcznie zapisać tak plik ?
Co do struktury nazwy pliku
Kod:
Dim NazwaPliku As String
data_wyplot = Worksheets("GNSS_DANE").Range("B21")
operator = Worksheets("DANE_BAZA").Range("B1")
kod_projektu = Worksheets("DANE_BAZA").Range("B2")
NazwaPliku = kod_projektu & "_POMIARU_GNSS_" & operator & Year(data_wyplot) & Month(data_wyplot) & Day(data_wyplot)

Janusz
ID posta: 383146 Skopiuj do schowka
 
 
GEO-XYZ 
Exceloholic


Wersja: Win Office 2013
Posty: 235
Wysłany: 05-03-2020, 11:25   

J_B,
Nie ja chce zapisać otwarty plik test.doc do którego z excela były kopiowane dane.
Ten plik worda ma się nazywać z tym schematem nazwy pliku.
_________________
XYZ
ID posta: 383148 Skopiuj do schowka
 
 
J_B 
Excel Expert


Wersja: Win Office 2016
Pomógł: 416 razy
Posty: 1088
Wysłany: 05-03-2020, 11:50   

GEO-XYZ napisał/a:
Ten plik worda ma się nazywać z tym schematem nazwy pliku.

To otwórz ten plik zrób w nim co potrzebne i zapisz
Kod:
Sub ZapiszPlikWord()
    Dim operator As String
    Dim kod_projektu As String
    Dim data_wyplot As String
    Dim data As Date
    Dim NazwaPliku
    Dim appWD As Object
    Dim wdDoc As Word.Document

    data_wyplot = Worksheets("GNSS_DANE").Range("B21")
    operator = Worksheets("DANE_BAZA").Range("B1")
    kod_projektu = Worksheets("DANE_BAZA").Range("B2")
    NazwaPliku = kod_projektu & "_POMIARU_GNSS_" & operator & Year(data_wyplot) & Month(data_wyplot) & Day(data_wyplot)
    Set appWD = CreateObject("Word.Application")
    appWD.Visible = True
    Set wdDoc = appWD.Documents.Open(ThisWorkbook.Path & "\test.docx")
    ' Tu kod działania na pliku worda
    wdDoc.SaveAs2 ThisWorkbook.Path & "\" & NazwaPliku
    appWD.Quit 'jeżeli chcesz zamknąć worda
End Sub


Janusz
ID posta: 383155 Skopiuj do schowka
 
 
GEO-XYZ 
Exceloholic


Wersja: Win Office 2013
Posty: 235
Wysłany: 05-03-2020, 12:12   

J_B, Chyba nie mogę tak tego zrobić ponieważ potrzebuję odwołanie do otwartego pliku, ponieważ na końcu procedury kopiowania danych z excela do worda jest zapytanie czy generować następny raport - i tylko w przypadku nie trzeba zapisać ten plik, w przypadku tak to znowu jest kopiowanie danych itp.
Kod:

Set wdDoc = appWD.Documents.Open(ThisWorkbook.Path & "\test.docx")

Zmieniłem na:
Kod:

Set wdDoc = appWD.Documents.Open("00-000_SZABLON_GT_OPERAT_RAPORT_GNSS2_20_03_20200305_01.docx.docx")

ale nie działa, zatrzymuje się na Nazwapliku - nie masz tutaj zmiennej ?

Potrzebowałbym ustawić zmienną na otwarty dokument word lub mogę podać nazwę pliku bo wiem jaki plik otwieram i kopiuje do niego dane - zawsze ten sam - bo to jest szablon.
_________________
XYZ
ID posta: 383159 Skopiuj do schowka
 
 
J_B 
Excel Expert


Wersja: Win Office 2016
Pomógł: 416 razy
Posty: 1088
Wysłany: 05-03-2020, 12:29   

GEO-XYZ napisał/a:
Potrzebowałbym ustawić zmienną na otwarty dokument word

Kod:

Sub ZapiszPlikWord()
    Dim operator As String
    Dim kod_projektu As String
    Dim data_wyplot As String
    Dim data As Date
    Dim NazwaPliku
    Dim appWD As Word.Application
    Dim wdDoc As Word.Document

    data_wyplot = Worksheets("GNSS_DANE").Range("B21")
    operator = Worksheets("DANE_BAZA").Range("B1")
    kod_projektu = Worksheets("DANE_BAZA").Range("B2")
    NazwaPliku = kod_projektu & "_POMIARU_GNSS_" & operator & Year(data_wyplot) & Month(data_wyplot) & Day(data_wyplot)
    Set appWD = GetObject(, "Word.Application")
    appWD.Visible = True
    Set wdDoc = appWD.ActiveDocument
    ' Tu kod działania na pliku worda
    wdDoc.SaveAs2 ThisWorkbook.Path & "\" & NazwaPliku
    appWD.Quit 'jeżeli chcesz zamknąć worda
End Sub


Wywali błąd jak nie będzie otwartego pliku worda
Błąd oprogramuj sam
Janusz
ID posta: 383165 Skopiuj do schowka
 
 
GEO-XYZ 
Exceloholic


Wersja: Win Office 2013
Posty: 235
Wysłany: 05-03-2020, 12:57   

J_B, Działa super
Zmieniłem tylko kod:
Kod:

NazwaPliku = kod_projektu & "_POMIARU_GNSS_" & operator & Year(data_wyplot) & Format(Month(data_wyplot), "00") & Format(Day(data_wyplot), "00")


Ponieważ formatowanie było zle - usuwał zera w dacie i teraz jest super.
A powiedz co jeżeli chciałbym aby zapis ścieżki pliku był narzucony przeze mnie np. z adresu innej komórki?
_________________
XYZ
ID posta: 383169 Skopiuj do schowka
 
 
J_B 
Excel Expert


Wersja: Win Office 2016
Pomógł: 416 razy
Posty: 1088
Wysłany: 05-03-2020, 13:05   

GEO-XYZ napisał/a:
A powiedz co jeżeli chciałbym aby zapis ścieżki pliku był narzucony przeze mnie np. z adresu innej komórki?

Kod:

wdDoc.SaveAs2 Worksheets("DANE_BAZA").Range("B2")  & "\" & NazwaPliku

Janusz
ID posta: 383170 Skopiuj do schowka
 
 
GEO-XYZ 
Exceloholic


Wersja: Win Office 2013
Posty: 235
Wysłany: 05-03-2020, 13:11   

J_B, Dzięki.
_________________
XYZ
ID posta: 383172 Skopiuj do schowka
 
 
GEO-XYZ 
Exceloholic


Wersja: Win Office 2013
Posty: 235
Wysłany: 28-03-2020, 14:35   

J_B,
Podbijam wątek ponieważ mam problem z działaniem makra na innym komputerze.
Wyskakuje okienko / błąd

Run-time error '429':
ActiveX component can't create object


Jakieś pomysły?

blad.png
Plik ściągnięto 6 raz(y) 18.79 KB

_________________
XYZ
ID posta: 384416 Skopiuj do schowka
 
 
J_B 
Excel Expert


Wersja: Win Office 2016
Pomógł: 416 razy
Posty: 1088
Wysłany: 28-03-2020, 17:31   

GEO-XYZ napisał/a:
Jakieś pomysły?
Przeczytaj ten artykuł
Janusz
ID posta: 384425 Skopiuj do schowka
 
 
GEO-XYZ 
Exceloholic


Wersja: Win Office 2013
Posty: 235
Wysłany: 28-03-2020, 18:39   

J_B, Ja nic nie rozumiem z tego co jest tam napisane :(
Dziwne to jest ponieważ działa to w biurze na stacjonarnym gdzie mam tego samego Windowsa czyli 10 i tego samego offica 2013. Natomiast nie działa na laptopie.
Czy idzie ten kod jakoś inaczej napisać aby to obejść ?
_________________
XYZ
ID posta: 384430 Skopiuj do schowka
 
 
Tajan


Pomógł: 4646 razy
Posty: 10267
Wysłany: 28-03-2020, 21:33   

Nie bardzo rozumiem po co te kombinacje. Przecież plik masz otwarty, wystarczy tylko przekazać odwołanie do niego z kodu procedury w Module1 do formularza.
W tym celu należy zmienną zadeklarowaną jako:
Kod:
Dim wdDoc As Object 'Word.Document
w procedurze GNSS_03_RAPORT_EXPORT_DO_WORD zmienić na publiczną, przenosząc ją przed tą procedurę, na początek modułu Module1, deklarując jako:
Kod:
Public wdDoc As Object 'Word.Document

Wtedy w kodzie, który zaproponował J_B zbędne staną się linie
Kod:
    Set appWD = GetObject(, "Word.Application")
    appWD.Visible = True
    Set wdDoc = appWD.ActiveDocument
gdyż zmienna wdDoc, a tym samym plik, będzie dostępny z poziomu Module1.
Jednak, w takim przypadku należy usunąć również linię:
Kod:
 appWD.Quit 'jeżeli chcesz zamknąć worda
ale gdyby była potrzeba zamykania Worda w tym momencie, to można podobny manewr zrobić ze zmienną appWD w Module1 i wtedy powyższa linia będzie działać, nie powodując błędu.
ID posta: 384435 Skopiuj do schowka
 
 
GEO-XYZ 
Exceloholic


Wersja: Win Office 2013
Posty: 235
Wysłany: 29-03-2020, 10:02   

Witam,
Okej ten błąd został pominięty ale teraz makro zatrzymuje się na kodzie:
nazwa pliku jest okej bo działa na 2 komputerze.

Kod:

wdDoc.SaveAs2 ThisWorkbook.Path & "\" & NazwaPliku


początek kodu:
Kod:

Public wdDoc        As Object 'Word.Document
Public appWD        As Word.Application

Sub GNSS_03_RAPORT_EXPORT_DO_WORD()



kod zapisz do pliku:



Kod:

Sub ZapiszPlikWord()
   
    Dim operator                    As String
    Dim kod_projektu                As String
    Dim data_wyplot                 As String
    Dim data                        As Date
    Dim NazwaPliku
    'Dim appWD                       As Word.Application
    'Dim wdDoc                       As Word.Document

    data_wyplot = Worksheets("GNSS_DANE").Range("B30")
    operator = Worksheets("DANE_BAZA").Range("B1")
    kod_projektu = Worksheets("DANE_BAZA").Range("B2")
    NazwaPliku = kod_projektu & "_POMIARU_GNSS_" & operator & Year(data_wyplot) & Format(Month(data_wyplot), "00") & Format(Day(data_wyplot), "00")
 

   
    wdDoc.SaveAs2 ThisWorkbook.Path & "\" & NazwaPliku
    wdDoc.ExportAsFixedFormat OutputFileName:=wdDoc.Path & "\" & NazwaPliku & ".pdf", ExportFormat:=wdExportFormatPDF
   
    ' wdDoc.SaveAs2 Worksheets("DANE_BAZA").Range("B2")  & "\" & NazwaPliku adres z innej komórki
   
   
    appWD.Quit 'jeżeli chcesz zamknąć worda

    MsgBox "Raport został zapisany", vbInformation
       
    Unload GT_RAPORT_NASTEPNY
_________________
XYZ
ID posta: 384445 Skopiuj do schowka
 
 
Tajan


Pomógł: 4646 razy
Posty: 10267
Wysłany: 29-03-2020, 11:18   

Jaki jest opis błędu? Jaka wersja Office?
Może spróbuj:
Kod:
wdDoc.SaveAs ThisWorkbook.Path & "\" & NazwaPliku & ".docx"
ID posta: 384447 Skopiuj do schowka
 
 
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
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe