2016-04-12 10 views
0

Bu işlev bir doc dokümanı oluşturur, kaydeder ve kapatır, ancak yeniden açmaya çalıştığımda başarısız olur. Uzaktan aramada bunun işe yaramadığını söylüyor. Bir kelime dokümanı açmak için uygun uygulama nedir? Yoksa tekrar kapanmak ve açmak gereksiz mi? Görünen o ki, word ile excel arasındaki iletişimde zorluk var.Excel'den Word'e nasıl grafik transfer edilir

Sub tester() 
    Dim wordApp As Object 
    Dim wordDoc As Object 
    Dim appendDate As String 
    Set wordApp = CreateObject("Word.Application") 
    wordApp.Visible = True 

    appendDate = "Y" 
    fName = "robot" 

    If appendDate = "Y" Or appendDate = "y" Then 
     fName = ThisWorkbook.Path & "\" & fName & "-" & Format(Now(), "yyyymmdd-hhmm") & ".docx" 
    Else 
     fName = ThisWorkbook.Path & "\" & fName & ".docx" 
    End If 

    wordApp.Documents.Add.SaveAs2 fileName:=fName 
    wordApp.Documents.Close 
    wordApp.Application.Quit 
    Set wordDoc = wordApp.Documents.Open(fileName:=fPath, readOnly:=False) 
    ThisWorkbook.Sheets("Sheet1").ChartObjects(1).Activate 
    ActiveChart.ChartArea.Copy 
    wordDoc.Application.Selection.PasteSpecial Link:=False, DataType:=wdPasteOLEObject, Placement:=wdInLine 

End Sub 
+0

sen doğru önce uygulamayı bırakıyorsun beri 'wordDoc' Set kullanmak önce tekrar bir nesne oluşturmak gerekmez mi? – Dan

+0

Durumunuzda tekrar kapatmak ve açmak gereksizdir. Sadece nesne ile çalışın ve sonra –

cevap

0

Bu benim

Option Explicit 

Const wdFormatXMLDocument As Integer = 12 

Sub tester() 
    Dim wordApp As Object, wordDoc As Object 
    Dim appendDate As String, FName As String 

    Set wordApp = CreateObject("Word.Application") 

    wordApp.Visible = True 

    appendDate = "Y" 
    FName = "robot" 

    If UCase(appendDate) = "Y" Then '<~~ Unsure of this as you are already setting the value of Y 
     FName = ThisWorkbook.Path & "\" & FName & "-" & Format(Now(), "yyyymmdd-hhmm") & ".docx" 
    Else 
     FName = ThisWorkbook.Path & "\" & FName & ".docx" 
    End If 

    Set wordDoc = wordApp.Documents.Add 

    ThisWorkbook.Sheets("Sheet1").ChartObjects(1).Activate 
    ActiveChart.ChartArea.Copy 
    wordApp.Selection.PasteSpecial Link:=False, DataType:=0, Placement:=0 

    wordDoc.SaveAs2 Filename:=FName, FileFormat:=wdFormatXMLDocument 

    wordDoc.Close (False) 

    wordApp.Quit 

    Set wordDoc = Nothing 
    Set wordApp = Nothing 
End Sub 

Ekran

enter image description here

+0

sonunda kapatın. Bilgi için teşekkür ederiz. Bunu çalıştı ve bu satır çalıştığında "kelime uygulaması çalışmayı durdurdu" hatası aldı: 'wordApp.Selection.PasteSpecial Link: = Yanlış, DataType: = wdPasteOLEObject, Yerleşim: = wdInLine' – teepee

+0

Sadece test ettim ve gayet iyi çalışıyor –

+0

Hmm. Windows 7'de sürüm 2010'ı çalıştırıyorum. Bu, orada bir şeyi değiştirmem gerektiği anlamına mı geliyor? – teepee

0

Eğer Word.Application''kullanmak sonra artık wordApp var çıkın beri yani Documents.Open hayır vardır yapacağını nasıl Yürütülecek ortam.

ilk uygulaması GetObject kullanabilirsiniz başlatmadan, doğrudan, herhangi bir noktada bir dosyayı açmak isterseniz:

Seti wordDoc = GetObject (fname)

Word yazmanız gerekir. GetObject dosyasını açmak için kullandıktan sonra daha sonraki bir noktada Uygulama:

Set wordApp = wordDoc.Application 
İlgili konular