システムwiki

Excel.から辞書のテンプレートの携帯

DeniseS 受付中 最終更新日:2021-06-16 16:52

私は以前のOfficeversionで約10年間の多くのタブを含んでいるExcelワークブックからのデータで辞書のテンプレートを作成するために使用します.

私がマクロを実行するときにOffice 365に移動するので最初のタブで動作し、その後辞書のテンプレートで持っていたブックマークは消え、 "Bookmarkが存在しない".

これは私が使用するコードです:

SUB PROVTAX()

整数

としてDIM IX

整数

としての薄暗いミリント

MyInt= ActiveDocument.bookMarks.Count

'Excel

DIM MYWB

mywb= createObject( "excel.application")

を設定します.

mywb.workbooks.open( "c:\users\dstewart\desktop \暫定税マスターズ\fund v\.xlsm") 'ソースパス


-

'新しい単語文書

Dim Objword

objword= createObject( "word.application")

を設定します.

set objdoc= objword.documents.add()

'objword.visible= false

objword.visible= true

mywb.visible= false

ix= 1からmywb.worksheets.count

mywb.Sheets(IX).unprotect

mywb.sheets(ix).アクティブ

selection.goto何:= wdgotobookmark、name:= "name"

selection.typeText(mywb.sheets(ix).Range( "J2"))

selection.goto何:= wdgotobookmark、name:= "address1"

selection.typeText(mywb.sheets(ix).Range( "J3"))

selection.goto何:= wdgotobookmark、name:= "address2"

selection.typeText(mywb.sheets(ix).Range( "J4"))

selection.goto= wdgotobookmark、name:= "address3"

selection.typeText(mywb.sheets(ix).Range( "J5"))

selection.goto何:= wdgotobookmark、name:= "address4"

selection.typeText(mywb.sheets(IX).Range( "J6"))

selection.goto= wdgotobookmark、name:= "見出し"

selection.typeText(mywb.sheets(ix).Range( "B2"))

selection.goto何:= wdgotobookmark、name:= "heading2"

selection.typeText(mywb.sheets(ix).Range( "B3"))

selection.goto= wdgotobookmark、name:= "name1"

selection.typeText(mywb.sheets(ix).Range( "J2"))

selection.goto= wdgotobookmark、name:= "interial"

selection.typeText(FNEG(Lound(MyWB.Sheets(IX).Range( "F27")、2))))

selection.goto何:= wdgotobookmark、name:= "net"

Selection.typeText(FNEG(Lound(MyWB.Sheets(IX).Range( "F30")、2))))))))))

selection.goto= wdgotobookmark、name:= "その他"

Selection.typeText(FNEG(Lound(MyWB.Sheets(IX).Range( "F28")、2)))

'selection.goto何を:= wdgotobookmark、name:= "waco"

'selection.typeText(FNEG(Lound(MyWB.Sheets(IX).Range( "H43")、2)))

'selection.goto何を:= wdgotobookmark、name:= "busby"

'selection.typeText(fneg(lound(mywb.sheets(ix).Range( "H48")、2)))

選択.Wholestory

selection.copy

intundo= 1からmyint

ActiveDocument.Undo 1

次のintundo

objword.selection.paste

objword.Selection.insertbreak型:= wdpagebreak

次のix

ix= 1からobjword.activeDocument.tables.Count

objword.activeDocument.tables(ix).columns.count>= 4の場合は、次にtableを管理している場合はこれです.他のtableも含めるには「>= 4」に変更してください

objword.activeDocument.tables(IX).Range.Select

objword.Selection.Font.Size= 10

の場合は終わります

次のix

objdoc= nothing

を設定します

mywb= nothing

を設定します

終了SUB

関数fneg(値)

DIM MYSTR

値<0

の場合

mystr= "(" +フォーマット(CSTR(値*-1)、 "標準")+ ")"

else

mystr=フォーマット(値、 "標準")

の場合は終わります

FNEG= MYSTR

終了関数

返信リスト(回答:6)

6 #
DougRob

選択オブジェクトではなく範囲オブジェクトを使用することをお勧めします

の記事「VBAのブックマークの操作」を参照してください.

https://wordmvp.com/faqs/macrosvba/workwithbookmarks.htm.

ただし、ブックマークの代わりにDocVariableフィールドを使用することをお勧めします.

応答6# ->にスキップ
5 #
DeniseS

使い方がわかりません:

DIMBMRANEAS
'現在のブックマーク範囲を特定し、テキストを挿入する
setBmRange= ActiveDocument.bookmarks( "MyBookmark").範囲
bmrange.text= "Hello World"
「しおりを再挿入する
ActiveDocument.bookmarks.add "MyBookmark"、BMRange

Excelの各タブの名前と財務データが異なる場合に、すべてのtableと図形を持つ名前とアドレスを上記の文字に入れることができますか.

事前にありがとう

応答5# ->にスキップ
4 #
DougRob

メールマージデータソースとして使用するのに適したレイアウトで個々のシートのデータを参照してから、Mail Mergeを使用して文書を作成するために、個々のシートのデータを参照することをお勧めします.

次のコードを使用してそのシートを作成し、必要なレイアウト

のデータに入れることができます.

薄暗く、Rは長く

LONG

を薄暗くします

ワークシートとしての薄暗いshttarget

LNGSheets= ActiveWorkbook.Sheets.Count

SetTarget= ActiveWorkbook.Sheets.add

SheetTarget.Range( "A1")

.OFFSET(0,0)= "名前"

.OFFSET(0,1)= "address1"

.OFFSET(0,2)= "address2"

.OFFSET(0,3)= "address3"

.OFFSET(0,4)= "address4"

.OFFSET(0,5)=「見出し」

.OFFSET(0,6)=「見出し2」

.OFFSET(0,7)= "name1"

.OFFSET(0,8)= "interalr"

.OFFSET(0,9)= "net"

.OFFSET(0,10)= "その他"

r= 1

i= 1からActiveWorkbook.Sheets.Count

.OFFSET(R、1)= ActiveWorkbook.Sheets(1).Range( "J2")

.OFFSET(R、2)= ActiveWorkbook.Sheets(1).Range( "J3")

.OFFSET(R、3)= ActiveWorkbook.Sheets(1).Range( "J4")

.OFFSET(R、4)= ActiveWorkbook.Sheets(1).Range( "J5")

.OFFSET(R、5)= ActiveWorkbook.Sheets(1).Range( "J6")

.OFFSET(R、6)= ActiveWorkbook.Sheets(1).Range( "B2")

.OFFSET(R、7)= ActiveWorkbook.Sheets(1).Range( "B3")

.OFFSET(R、8)= ABS(Round(ActiveWorkbook.Sheets(1).Range( "F27"))

.OFFSET(R、9)= ABS(ラウンド(ActiveWorkbook.Sheets(1).Range( "F30")))

.OFFSET(R、10)= abs(ラウンド(ActiveWorkbook.Sheets(1).Range( "F28")))

R= R + 1

次のi

で終わります

応答4# ->にスキップ
2 #
DeniseS

私はまだあなたの新しい提案を試していませんが、以前の提案は働いていますが問題があります.

最初のタブから最初の個人の文字を作成し、次にマクロが新しいページで2番目の文字を作成したときに注意セクションにアクセスし、最初のタブから名前を2番目のタブから入力します.新しい文字で.

その後、件名上のランタイムエラー5941を与えます.

Word文書は実行が必要な場合は.dotmファイルから作成されます.

'現在のブックマーク範囲を識別し、テキストを挿入

薄型BMRANGE AS範囲

BMRange= ActiveDocument.bookmarks( "name")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "J2"))

ActiveDocument.bookMarks.add "name"、bmrange

BMRange= ActiveDocument.bookmarks( "address1")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "J3"))

ActiveDocument.bookmarks.add "address1"、bmrange

bmrange= activeDocument.bookmarks( "address2")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "J4"))

ActiveDocument.bookMarks.add "address2"、bmrange

bmrange= activeDocument.bookmarks( "address3")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "J5"))

ActiveDocument.bookMarks.add "address3"、bmrange

bmrange= activeDocument.bookmarks( "address4")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "J6"))

ActiveDocument.bookmarks.add "address4"、bmrange

bmRange= ActiveDocument.bookmarks( "注意")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "J2"))

ActiveDocument.bookMarks.add "注意"、bmrange

SET BMRANGE= ActiveDocument.bookmarks( "subject").範囲

bmrange.text=(mywb.sheets(ix).Range( "B2"))

ActiveDocument.bookmarks.add "件名"、bmrange

bmrange= activeDocument.bookmarks( "yearend")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "B3"))

ActiveDocument.bookMarks.ADD "yearend"、bmrange

BMRange= ActiveDocument.bookmarks( "interrar")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "F27"))

ActiveDocument.bookMarks.add "interialr"、bmrange

BMRange= ActiveDocument.bookmarks( "net")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "F30"))

ActiveDocument.bookMarks.add "net"、bmrange

bmrange= activeDocument.bookmarks( "other")を設定します.範囲

bmrange.text=(mywb.sheets(ix).Range( "F28"))

ActiveDocument.bookMarks.ADD "その他"、BMRANGE

応答2# ->にスキップ
3 #
DougRob

あなたがそれらにデータを挿入するときにブックマークが破壊されるのは簡単すぎるのは、代替案を提案する理由です.

応答3# ->にスキップ
1 #
DeniseS

あなたの入力をありがとうございました.

1/2日のフィドリングの後、私はBookmarkをi []から変更するだけで再度働くことができました.

ありがとう

デニス