2017-10-30 19 views
0

Word文書内のマクロを使用して、ExcelブックからそのMS Word文書にデータを入力しています。実行時エラー1004 'ワークシート'オブジェクト_Global

データが格納されているExcelワークブックを検索し、ワークブックのフィールドをコピーし、単語の文書テキスト内の項目を見つけて文書文書のテキストに置き換えます。

次のコードは動作していましたが、実行時エラーが発生することがありました。今私はすべての実行で次のエラーが発生しています。

実行時エラーobject'_Globalの '1004' メソッド 'ワークシート'」

を失敗したことは、この行によってトリガーです:
.Replacement.Text =ワークシート(「1 - 組織サービス範囲 "B3"。値 '組織名を挿入

コードはかなり長くなりましたが、ここには考えがあります。エラーは、以下に示す最初のサブでトリガーされます。

Sub InputContractData() 
' 
' You must pick Microsoft Excel Object Library from Tools>References 
' in the Visual Basic editor to execute Excel commands. 

' InputContractData Macro 
' 
' 

'Define Excel and Workbook Information 
Dim objExcelApp As Excel.Application 
Dim objCDCDataWorkbook As Workbook 
Dim CDCDataFile 
Dim CDCDataFilePath 
Dim CDCDataFileName 

'Define Word and Document Information 
Dim objWordApp As Word.Application 
Dim objWordDoc As Word.Document 

'Open Excel Program 
Set objExcelApp = New Excel.Application 

Set objWordApp = Word.Application 
Set objWordDoc = objWordApp.ActiveDocument 
objExcelApp.Visible = True 
objWordApp.Visible = True 
CDCDataFile = objExcelApp.GetOpenFilename("Excel Files (*.xlsx), *xlsx") 
Set objCDCDataWorkbook = objExcelApp.Workbooks.Open(CDCDataFile) 
CDCDataFilePath = Left(CDCDataFile, InStrRev(CDCDataFile, "\")) 

CDCDataFileName = Dir(CDCDataFile) 

Call Sheet001 



'Save Document in same folder as CDC Workbook 
    objWordDoc.SaveAs CDCDataFilePath & "\DraftContract.docx" 

' Close the new Word document. 
    objWordApp.ActiveDocument.Close 
' Close the Word application. 
    objWordApp.Quit 

End Sub 




Sub Sheet001() 
'Sheet 1- Organization Service Area ----------------------------- 
With Selection.Find 
    .ClearFormatting 
    .Text = "[[ORGANIZATION]]" 
    .Replacement.ClearFormatting 
    .Replacement.Text = Worksheets("1- Organization Service Area").Range("B3").Value 'Insert Organization Name 
    .Execute Replace:=wdReplaceAll, Forward:=True, _ 
    Wrap:=wdFindContinue 
End With 
End Sub 
+1

どの行(複数可)は、このエラーを投げる時にデバッガハイライトしていますか? –

+0

.Replacement.Text =ワークシート( "1-組織サービスエリア")。範囲( "B3")。値 '組織名を挿入します。 –

+1

あなたの質問にそのような重要な情報を含める必要があります。コメントはいつでも消滅する可能性があると考えられるべきである。 –

答えて

1

ラインでの問題:

.Replacement.Text = Worksheets("1- Organization Service Area").Range("B3").Value 'Insert Organization Name 

は、MS Wordのは、それは、Wordオブジェクトモデルにネイティブオブジェクトではありませんので、Worksheetが何であるかわかりませんということです。

オブジェクトを適切な親に明示的に割り当てると、それは常に機能します。 WorksheetはExcelのオブジェクトなので、Excelオブジェクトに完全修飾します。私はこれを下に示して、InputContractDataプロシージャで変数をローカルに宣言してからExcelワークブックをサブに渡すことを選択しました。

Sub Sheet001(ws as Excel.Worksheet) 
'Sheet 1- Organization Service Area ----------------------------- 
With Selection.Find 
    .ClearFormatting 
    .Text = "[[ORGANIZATION]]" 
    .Replacement.ClearFormatting 
    .Replacement.Text = ws.Range("B3").Value 'Insert Organization Name 
    .Execute Replace:=wdReplaceAll, Forward:=True, _ 
    Wrap:=wdFindContinue 
End With 

End Sub 

次に、このように呼び出す:

Sheet001 objExcelApp.Workbooks(CDCDataFileName).Worksheets("1- Organization Service Area") 
+0

返品された引数はCall Sheet001の –

+0

には正確に表示されません。 –

+0

シートの名前が "1- Organization Service Area"であることを確認してください。 –

関連する問題