NULLフィールドをチェックし、{エラーを回避するには「」に値を設定する.ドキュメント変数が指定されていません.}
HI、
私はVBAとマクロに新しいが、符号化が新しいことではありません...
マクロ対応の.dotファイルを作成しました(下位互換性のための.dotでなければなりません)
私は私の形式で93フィールドを持っていて、各フィールドに値がある限り、ユーザーフォームはテンプレートを完全にポピュレイしました.私の問題は、いくつかのフィールドに値を持たず、NULLの場合はエラーメッセージが表示されることです.初期化します
スペースを持つフィールドですが、ユーザーがスペースを削除する場合は、フォーム内のエントリを削除してから、フォームはnullを送信します.
私の送信では、NULLフィールドを確認してスペースに設定しようとしています.
私はGreg Maxeyのテンプレートとwww.gregmaxey.comで見つかった指示から始めました(お礼を言う!).
誰もがこれが機能していない理由、そしてそれを修正するために必要なのか教えてもらえますか?
サブupdateThisformsFields()
Word.Rangeとしての薄暗いプリング
薄暗い
iLink= ActiveDocument.Sections(1).Headers(1).range.storyType
ActiveDocument.StoryRangesの各プレゼンテージについて
「NULLの喜びの確認とスペースに置き換えるためにスペースに置き換える
prange.find
.text= "" "" ""
.replaction.text=「うまく機能します」
.wrap= wdfindContinue
.execute置換:= wdreplaceAll
Prange.Fields.Update
set prange= prange.nextStoryRange
Prangeが何もないまでループする
次の
'上の喜びテストコード-元のコードをコメントする
'do
'Prange.Fields.Update
'Prange= Prange.NextStoryRange
'Prangeが何も<まで
'更新後にユーザーフォームを返しますので、編集を行うことができます.
CallUserform
終了SUB
この条件をテンプレートに入れて、エラーメッセージが表示されないように追加したいが、変数が削除されたためにマクロが終了した場合...実際にスペースを挿入することは私のために良いです
ニーズ
{{docvariable varname}= "error!ドキュメント変数が指定されていません." "" "" docvariable varname}}}
返信リスト(回答:3)
エラーの原因を取り除くことをお勧めします.多くの場合、追加するだけで簡単に実行できます
& ""
変数に割り当てられている値に.次に、値がnullの場合、変数には単一のスペースが含まれます.
ドキュメント内のdocvariableフィールドの場所によっては、値の前にスペースを追加する方が適切な場合があります.docvariableフィールドの結果にスペースが含まれることを許容できない場合は、コードで
は、値がnullかどうかを確認し、nullの場合は変数をスペースに設定するために、and if thenelseフィールドを使用する必要があります.
誰かが同様のジレンマを抱えている場合に備えて、この問題に自分の解決策を追加したかったのです.
null値を確認できなかった理由は、フォームが送信されて値がnullの場合、フォームが変数を省略しているためです.したがって、変数がnullであるかどうかのチェックは、存在しないため機能しません.
これを解決するために、すべてのドキュメント変数を一覧表示する配列を作成しました.たくさん(50以上)あるので、Wordテンプレートから変数を読み取って配列を作成するスクリプトを実行しました.
Sub ListVariables()
Dim oVar As Variable
Dim oDoc As Document
Dim sText As String
sText=""
For Each oVar In ActiveDocument.Variables
'この関数を使用して、ドキュメント内で見つけられない奇妙な変数を削除します
'If oVar.Name="varPhone" Then
'oVar.Delete
'サブを終了
'End If
sText=sText&oVar.Name&vbTab&oVar.Value&vbCr
Next oVar
If sText="" Then
sText="このドキュメントには変数がありません"
End If
If ActiveDocument.Variables.Count<= 20 Then
MsgBox sText
Else
oDoc=Documents.Add
を設定します
oDoc.Rangeを使用
.ParagraphFormat.TabStops.Add _
位置:= CentimetersToPoints(7)、_
Alignment:= wdAlignTabLeft、_
リーダー:= wdTabLeaderDots
.Text=sText
End With
End If
End Sub
そのリストを使用して、ドキュメントに含める必要のある変数の配列を作成しました.このリストを使用して、フォームが更新している変数を比較し、変数が存在しない場合は、再度追加して「」に設定します.
".
バリアントとしてmyVariablesを暗くする
Dim varName As Variant
文字列としてダミーを暗くする
myVariables=Array( "varName1"、 "varName2"、 "varName3")
myVariablesの各varNameについて
'MsgBox varName
エラー時に次を再開
ダミー= ActiveDocument.Variables(varName)
If Err.Number<>0 Then
'それは存在しません
'MsgBox "Variable"&varName& "が存在しないため、追加して空白にリセットします."
ActiveDocument.Variables.Add Name:= varName、Value:= ""
終了する場合
次のvarName
質問と回答を投稿してくれたコミュニティに感謝します.
応答2# ->にスキップ3 #DougRobより良い使用法:
Dim strvars As String
Dim rngcode As Range
Dim strCode As String
Dim arrvars As Variant
Dim blnMatch As Boolean
With ActiveDocument
strvars=""
For i=1 To.Fields.Count
If.Fields(i).Type=wdFieldDocVariable Then
rngcode=.Fields(i).Code
を設定します strCode=UCase(rngcode.Text)
strvars=strvars& "|" &Trim(Replace(strCode、 "DOCVARIABLE"、 ""))
終了する場合
次は
strvars=Mid(strvars、2)
arrvars=Split(strvars、 "|")
i=LBound(arrvars)の場合UBound(arrvars)へ
blnMatch=False
j=1の場合.Variables.Count
arrvars(i)= UCase(.Variables(j).Name)の場合
blnMatch=True
終了
終了する場合
次のj
blnMatch=Falseの場合
.Variables(arrvars(i)).Value=""
終了する場合
次は
.Range.Fields.Update
End With
関連質問
- Microsoft Word Starter 2010のスペルチェック
- このマクロをコーディングする方法
- デフォルトとしての行の間に「間隔がない」方法は?
- Office Wordにヒンディー語を書く方法言語パックがインストールされています
- 破損したWord Doc:詳細:等しい予想.場所:パート:/ワード/ウェブセット字、xml、2行目、列40019
- 私たちは申し訳なく思っています.xxxx.docxを開くことができませんので、その内容に問題が発生しました.
- DocVariableによる複数の場所でブックマークを参照する
- 辞書のテンプレート
- 製品の通知-言葉の特徴のほとんどが無効になっています
- ワードでのフォーマット