2012-02-10 11 views
0

Excelの名前付き範囲の値をWordのブックマークにコピーしようとしています。私が原因となっていることを知っているラインExcel VBA:XL名前付き範囲値をDOCブックマークにコピーしてからPDFにエクスポート

Set docWord = pappWord.Documents.Add(Path) 

'Loop through names in the activeworkbook 
For Each xlName In wb.Names 
    'if xlName's name is existing in document then put the value in place of the bookmark 
    If docWord.Bookmarks.Exists(xlName.Name) Then 
     docWord.Bookmarks(xlName.Name).Range.Text = Range(xlName.Value) 
    End If 
Next xlName 

'Activate word and display document 
With pappWord 
    .Visible = True 
    .ActiveWindow.WindowState = 0 
    .Activate 
End With 

私は、Excel VBAでそれをしないウェブ上でこのコードを見つけましたが、私はエラー13. 設定pappWord =のCreateObject(「Word.Application」)を取得していますエラーは次のとおりです。

docWord.Bookmarks(xlName.Name).Range.Text = Range(xlName.Value) 

私は間違っていますか?また、どのように&私はどこに私はPDFに文書をエクスポートすることができますコードですか?

ありがとうございます。

注:私はすでにエクセル

答えて

1

私はこのタスクを達成するために使用しますが、フォーマットされたExcelテーブルからイメージを取っています。

Sub FromExcelToWord() 
Dim rg As Range 

For Each xlName In wb.Names 
    If docWord.Bookmarks.Exists(xlName.Name) Then 

     Set rg = Range(xlName.Value) 

     rg.Copy 

     docWord.ActiveWindow.Selection.Goto what:=-1, Name:=xlName.Name 

     docWord.ActiveWindow.Selection.PasteSpecial link:=False, DataType:=wdPasteEnhancedMetafile, Placement:= _ 
           0, DisplayAsIcon:=False 

    End If 
Next xlName 

End Sub 
+0

ありがとう@BrunoLeite。あなたのソリューションはうまく動きましたが、「docWord.ActiveWindow.Selection.PasteSpecial Link:= False、DataType:= 20、Placement:= 0、DisplayAsIcon:= False」の小さな変更が加えられました。 –

0

中のMicrosoft Word(バージョン番号14)オブジェクトモデル興味があるだけへの参照を選択している...なぜあなたは、ドキュメントを追加するのではなく持って、関連するドキュメントを開いていますブックマーク?このコードを試してみてください(私は通常、投稿する前にコードをテストしますが、この特定のコードはテストしていません)

また、Late Bindingを使用しているため、Word Object Libraryへの参照は必要ありません。

Sub Sample() 
    Dim wb As Workbook 
    Dim pappWord As Object, docWord As Object 
    Dim FlName As String 
    Dim xlName As Name 

    FlName = "C:\MyDoc.Doc" '<~~ Name of the file which has bookmarks 

    '~~> Establish an Word application object 
    On Error Resume Next 
    Set pappWord = GetObject(, "Word.Application") 

    If Err.Number <> 0 Then 
     Set pappWord = CreateObject("Word.Application") 
    End If 
    Err.Clear 
    On Error GoTo 0 

    Set docWord = pappWord.Documents.Open(FlName) 

    Set wb = ActiveWorkbook 

    For Each xlName In wb.Names 
     'if xlName's name is existing in document then put the value in place of the bookmark 
     If docWord.Bookmarks.Exists(xlName.Name) Then 
      docWord.Bookmarks(xlName.Name).Range.Text = Range(xlName).Value 
     End If 
    Next xlName 

    'Activate word and display document 
    With pappWord 
     .Visible = True 
     .ActiveWindow.WindowState = 0 
     .Activate 
    End With 
End Sub 

EDIT

次に、上記のコードは、 :)

を試し、試験される

Range(xlName).Value 

Range(xlName.Value) 

を変更

+0

私はまだエラーが発生しています。 –

+0

どのラインでエラーが表示されますか? –

+0

'docWord.Bookmarks(xlName.Name).Range.Text = Range(xlName.Value)'です。 –

関連する問題