Word (VBA)

Word VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Word 2010)
エクセルデータをWordで反映させたい
投稿日時: 18/02/17 08:17:29
投稿者: さむさむ

いつもお世話になっています。
以下のコードでエクセルに書いたセルデータをワードのTextBoxに書き込むようにしています。
文字データは受け渡しができています。
エクセルセルのInterior.ColorをWordのTextBoxのForeColorにしてTextBoxの背景色を変更したいのですが
動いてくれません。
どなたかご教示をお願いします。
 
エクセル側
Sub wrdAPpWrite()
Dim LTx()
 
On Error Resume Next
Set wdApp = GetObject(, "word.application")
If Err.Number = 429 Then
MsgBox "テンプレート用Wordを起動してください。"
Exit Sub
End If
k = 0
For i = 0 To UserForm1.ListBox2.ListCount
ReDim Preserve LTx(k)
If UserForm1.ListBox2.Selected(i) = True Then
LTx(k) = UserForm1.ListBox2.List(i) & "," & UserForm1.ListBox2.List(i, 1)
k = k + 1
End If
Next
wdApp.Run "G_Labelタイトル書込", LTx
 
Erase LTx
End Sub
 
 
ワード側
Sub G_Labelタイトル書込(LTx)
    'G_S_Count
        'Group化したときのグループのコレクション数 とコレクションの名前、それへの書き込み方
    Set dSh = ActiveDocument.Shapes
    k = 0
    i = 0
    For Each gs In dSh
        If gs.Type = 6 Then
            If gs.Line.Visible = msoTrue Then
            i = i + 1
            k = Val(Replace(gs.Name, "G", ""))
                For j = 1 To 2
                    On Error Resume Next
                    With dSh("G" & k).GroupItems(j)
                        ch = .TextFrame.TextRange.Characters.Count
                        .TextFrame.TextRange.Delete Unit:=wdCharacter, Count:=ch
                        .TextFrame.TextRange.Text = Split(LTx(i - 1), ",")(0)
                        'idx = Val(Split(LTx(i - 1), ",")(1))
                        'n = ActiveDocument.Name
' 'ActiveDocument.Shapes("G" & k).GroupItems(j).Select
                         'ActiveDocument.Shapes("G" & k).Select
                        NM = ActiveDocument.Shapes("G" & k).GroupItems(j).Name
                         'SelectRange.Fill.ForeColor = idx
                         'sN = SelectRange.Name
                        ActiveDocument.Shapes("G" & k).GroupItems(j).Fill.ForeColor = Val(Split(LTx(i - 1), ",")(1)) '5287936 '
                    End With
                    If Err.Number = 9 Then Exit For
                Next
            k = 0
            End If
        End If
    Next
End Sub

回答
投稿日時: 18/02/18 09:45:14
投稿者: んなっと

.Fill.Visible = True を追加したらどうなりますか?
 
Sub G_Labelタイトル書込(LTx)
  Dim gs As Shape
  Dim i As Long, j As Long
  For Each gs In ActiveDocument.Shapes
    If gs.Type = 6 Then
      If gs.Line.Visible = msoTrue Then
        For j = 1 To 2
          With gs.GroupItems(j)
            .TextFrame.TextRange.Text = Split(LTx(i), ",")(0)
            .Fill.Visible = True
            .Fill.ForeColor = Val(Split(LTx(i), ",")(1))
          End With
        Next
        i = i + 1
        If i > UBound(LTx) Then Exit For
      End If
    End If
  Next
End Sub

投稿日時: 18/02/22 19:48:11
投稿者: さむさむ

んなっとさん、お礼遅くなりすみませんでした。
.Line.Fill.Visible = msoFalse
.Fill.ForeColor=nnnnn
.Line.Fill.Visible = msoTrue
としたら動き始めました。