データシートがあり、その範囲は毎週変わります。最後に使用された行と最後に使用されたカラムが異なることを意味します。私は一度に3つの範囲をコピーし、絵としてVBAを使って単語に貼り付けたいと思っています。これは大きなコードの一部ですので、私はvbaを書くことでそれを達成したいと考えています。エクセルから単語vbaへのダイナミックレンジのコピー
一度に3つの範囲の背後にある理由は、画像のサイズが単語に最も適しているためです。ヘッダは2行目と3行目にマージされます。私は4つの範囲を示していますが、時には2つの範囲と時には6つの範囲を取得します。すなわち3つの範囲またはそれ以下は1つの画像でなければならず、4から6の範囲は2つの画像を1つの単語として有することを意味する。
今すぐコードを実行すると、単語には何も貼り付けられません。
Sub Table()
Dim wdapp As Word.Application
Set wdapp = New Word.Application
With wdapp
.Visible = True
.Activate
.Documents.Add
End With
With ThisWorkbook.Worksheets("Table")
Dim a, b, c, RR As Range
'1
Set a = .Cells.Find("Header1", LookIn:=xlValues)
If Not a Is Nothing Then
Dim firstAddress As String
firstAddress = a.Address
Do
' 2
Set b = .Cells.Find("Header1", a, LookIn:=xlValues)
' 3
Set c = .Cells.Find("Header1", b, LookIn:=xlValues)
'Union
Set RR = Union(Range(a.End(xlDown).End(xlDown), a.Resize(, 7)), Range(b.End(xlDown).End(xlDown), b.Resize(, 7)), Range(c.End(xlDown).End(xlDown), a.Resize(, 20)))
RR.CopyPicture Appearance:=xlScreen, Format:=xlPicture
wdapp.Selection.Paste
Set a = .UsedRange.FindNext(a)
If a Is Nothing Then Exit Do
Loop While a.Address <> firstAddress
End If
End With
End Sub
あなたの入力をお寄せいただきありがとうございます。それぞれの範囲を画像としてコピーしますが、一度に3つの範囲を取得できるように変更するにはどうすればよいですか? – sc1324
「Union」機能を試してみてください。今、あなたはそれを基にするいくつかの作業コードを持っています。これは実行可能でなければなりません。その後も苦労しているなら、問題のこの部分を試してみてください。 – bobajob
OK、私はunionを使って範囲を定義しようとしましたが、a、b、cを設定するためにいくつの範囲を定義する必要があるので、正しいとは思わない、次に結果はa、b、cです1つのグラフとb、c、dを別のものに...しかし、私はa、b、cを1つ、dを2番目にしたい。私たちはソロ1の時からdが大きくなることは許されません – sc1324