Excel.から辞書のテンプレートの携帯
私は以前の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)
選択オブジェクトではなく範囲オブジェクトを使用することをお勧めします
の記事「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"、BMRangeExcelの各タブの名前と財務データが異なる場合に、すべての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
応答3# ->にスキップ1 #DeniseSあなたの入力をありがとうございました.
1/2日のフィドリングの後、私はBookmarkをi []から変更するだけで再度働くことができました.
ありがとう
デニス