つい集めてしまうものはなんですか?

下記にプログラムを載せます。
これを英語環境下で走らせると、添付ファイルのようなエラーが起きます。
理由がわからず悩んでおります。日本語環境下ではエラーが起きずに実行できます。
オブジェクトライブラリーの選択も確認したのですが、、、


Sub Issue_Click()

Dim cmax, cnt, i, k As Long
Dim path, str, JV, NewPath As String
Dim wdapp As Object
Dim wddoc As Word.Document
Dim wdrg As Word.Range
Dim c, totalrows As Long
Dim waitTime As Variant
Dim ws As Worksheet
Dim flag As Boolean
Dim st As String



Application.ScreenUpdating = False
On Error Resume Next

Set wdapp = CreateObject("Word.application")
wdapp.Visible = True

'For i = 2 To cmax
path = ThisWorkbook.path & "\Capital Increase Resolution.doc"
Set wddoc = wdapp.Documents.Open(path)
waitTime = Now + TimeValue("0:00:05")
Application.Wait waitTime

For k = 0 To 7
With wddoc.Content.Find
.Text = Workbooks("auto.xlsm").Sheets("Inputdata").Range("B1").Offset(0, k).Text
.Forward = True
.Replacement.Text = Workbooks("auto.xlsm").Sheets("Inputdata").Range("B2").Offset(0, k).Text
.Wrap = wdFindContinue
.MatchFuzzy = True
.Execute Replace:=wdReplaceAll
End With
Next

wddoc.PrintOut

Set wddoc = Nothing

JV = Workbooks("auto.xlsm").Sheets("Main").Range("C3").Text
NewPath = ThisWorkbook.path & "\" & JV & ".doc"
wdapp.ActiveDocument.SaveAs Filename:=NewPath
'wdapp.Documents.Close SaveChanges:=wdDoNotSaveChanges
wdapp.Application.Quit
Set wdapp = Nothing


st = Workbooks("auto.xlsm").Sheets("Main").Range("C3").Text

For Each ws In Worksheets
If ws.Name = st Then flag = True
DoEvents
Next ws

Sheets(st).Activate
i = 1
If flag = True Then
Do Until Sheets(st).Range("C" & i) = ""
i = i + 1
Loop
Sheets(st).Range("B" & i) = Workbooks("auto.xlsm").Sheets("Main").Range("C7").Text
Sheets(st).Range("C" & i) = Workbooks("auto.xlsm").Sheets("Main").Range("C9").Text
Sheets(st).Range("D" & i) = Workbooks("auto.xlsm").Sheets("Main").Range("F11").Text
Sheets(st).Range("F" & i) = Workbooks("auto.xlsm").Sheets("Main").Range("F7").Text
Sheets(st).Range("G" & i) = Workbooks("auto.xlsm").Sheets("Main").Range("F11").Text & " " & Workbooks("auto.xlsm").Sheets("Main").Range("F9").Value & "%"
Sheets(st).Range("H" & i) = Workbooks("auto.xlsm").Sheets("Main").Range("J3").Text
Sheets(st).Range("I" & i) = Workbooks("auto.xlsm").Sheets("Main").Range("J7").Text

End If

MsgBox "End!"

End Sub

「日本語環境下で作成したマクロが英語環境下」の質問画像

質問者からの補足コメント

  • どう思う?

    失礼しました。エラーは Compile error: Can’t find project or library となっています

      補足日時:2018/07/13 12:32
  • 参照設定はワードを選んでいます。

      補足日時:2018/07/13 12:33

A 回答 (5件)

こんにちは。



最初に、コードをみると、整合性が取れていないように思うのです。

Early Binding (事前バインディング)していたら、
'Dim wdapp As Object ではなくて、

Dim wdApp As New Word.Application
インスタンスを作ってあげなくてはなりません。
(正式には、
Dim wdApp As Word.Application
Set wdApp = New Word.Application
)

>参照設定はワードを選んでいます。
もし、これでエラーが出るとするなら、参照設定は外して、

最初、Late Binding(実行時バインディング)から、
Dim wdApp As Object
Set wdApp = CreateObject("Word.Application")
としてオートメーション・オブジェクトを作って1行ずつデバッグで検証していくしかありませんね。
ただし、その場合は、Word 関連はすべて、Object です。

Dim wddoc As Object
Dim wdrg As Object

#3さんのリンク先の話って、ざっと読んだだけですが、参照設定の中身で赤い×とか、Missing 入っていないかという話ではないのかな?よく起こる現象としては、下位バージョンで開発したものを、上位バージョンで使用する時に起きる話です。その場合は、もう一度、適宜、参照設定をつけ直すという作業が必要です。

ただ、その後に出てくる、Library を失いますと、これは、再インストールが必要かもしれませんし、それだけでは済まないことも多いです。

これらは、あたっているかどうか、これは分かりませんが。
致命的な問題でなければよいのですが、私のところのように、OSから再インストールをしなければならなくなりました。

なお、変数の付け方には、問題が残っているようですが、
path は、プロパティ名ですが、myPath, strPath など、そのものずばりを使わないほうがよいです。プロパティ名が、全部小文字になっています。(このような小文字・大文字の組み合わせをキャメル型といいます)

>Dim cmax, cnt, i, k As Long
変数k 以外は、皆、Variant 型です。意図しているなら別ですが、
Dim cmax As Long, cnt As Long, i As Long, k As Long
のように、VBAでは書くようになっています。

以上です。
    • good
    • 0
この回答へのお礼

ありがとうございます!とても勉強になりました!

お礼日時:2018/07/17 08:29

そうだね

    • good
    • 0

https://recoverit.wondershare.com/office-documen …
解決方法がここに書いてありました
    • good
    • 0
この回答へのお礼

ありがとうございます。ただすべて英語ですね、、、、頑張って解読します。

お礼日時:2018/07/14 14:18

エラーが小さすぎて読めません

    • good
    • 0

>Dim wddoc As Word.Document


>Dim wdrg As Word.Range

Wordの参照設定が外れてるとか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報