[[20180215121906]] 『マクロ起動しようとするとエラーになってしまう』(もいもい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ起動しようとするとエラーになってしまう』(もいもい)

マクロ起動しようとするとエラーになってしまいます。
作成したマクロのコードを確認したところ、「DLL読み込み時のエラー」となってしまっています。どのようにすれば解決できるのでしょうか?

< 使用 Excel:Excel2010、使用 OS:Windows10 >


エラーになるコードを見せてもらわないと、何とも…。 エスパー回答にも程がありますよ。

ありがちなのは、32bit Excel で作成したブックを、64bit Excel で実行しようとしているとか? 64bitでも通用するコーディングに変えないと駄目です。 第3者に聞くより、マクロを書いた人に相談しましょう。
(???) 2018/02/15(木) 12:56


ご回答ありがとうございます。
ちなみにマクロはこちらになりますが、どのようにして64bitでも通用するコーディングに変えないといけないのでしょうか?ご教授頂けますと大変助かります。

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

 Dim RT As Long
 Dim mySh As Worksheet
 Dim myRow As Long

 If Target.Address(, , xlR1C1) Like "*C*" Then Exit Sub

 Cancel = True

 myRow = Target.Row

 RT = Val(InputBox("1=挿入" & Chr(10) & Chr(13) & _
 "2=削除" & Chr(10) & Chr(13) & _
 "3=キャンセル"))

If RT <> 3 And RT <> 0 Then

 For Each mySh In Worksheets
 mySh.Select
 Rows(myRow).Select
 Select Case RT
 Case 1
 Selection.Insert Shift:=xlDown
 Selection.Range("U1:V1").FillDown   '
 Case 2
 Selection.Delete Shift:=xlUp
 Case 3
 End Select
 Next mySh
 End If
 Sh.Select
 End Sub
(もいもい) 2018/02/15(木) 13:00

ご提示されたコードには、DLLを使っている箇所がありませんね。他の部分でAPIを使っている箇所はありませんか?

または、マクロ編集画面で、「ツール」−「参照設定」を開いてみてください。エラーになっている項目はありませんか?
(???) 2018/02/15(木) 13:12


メモ帳でぽちぽち打ってる間に、???さんがコメントされて、内容がちょっとかぶってしまってますがとりあえず・・・

なんででしょうね。
ぱっと見る限りは、他のライブラリが必要そうな処理はしてないようですが・・

ただ、前のトピックで確か、任意の行全体を選択してるときにしか動かないようにアドバイスもらってますよね?
ということは、行全体を選択して右クリックしてInputBoxで表示されるメニュの1〜3を選んだら、どこかでエラーが出てるってことですよね?実際にエラーがでてるのはどの部分なのでしょうか?

ところで、前のトピックでも思ったんですが、インデント付けないとご自身で読みづらくないですか?

(もこな2) 2018/02/15(木) 13:24


皆様ご回答ありがとうございます。

マクロ編集画面で「ツール」⇒「参照設定」を開いてみたら、
「参照不可:Microsoft Outlook16.0 Object Library」の項目がありました。
こちらのチェックボックスをはずしてOKを押しても、
参照可能なライブラリファイルから、「参照不可:Microsoft Outlook16.0 Object Library」のチェックボックスが消えません。恐らくこれが原因ではないかと考えますが、どのようにすれば宜しいのでしょうか?
(もいもい) 2018/02/15(木) 13:52


参照不可なものは、チェックを外すしかないですね。Outlookをインストールしていないのに、Outlookオブジェクトは使えませんから。 チェックを外してからブックを保存し、開き直してみてください。 ご提示のコード内に、Outlookに関係する命令は使っていないので、参照設定する必要はないです。

そして、メール送信したい目的があるならば、参照設定によるアーリーバインド以外にも、CreateObject("Outlook.Application") を使うレイトバインド方式でも書けますので、調べてみてください。
(???) 2018/02/15(木) 13:58


Outlook16.0 ということは、OutLook2016ですかね? 元々コードが動いていた環境では、これがインストールされていたのではないですか? そして今は、メールサーバが変わったので、別のメールクライアントにしたとか、Webメールにしたとかありませんかね?
(???) 2018/02/15(木) 14:01

参照不可なもの「参照不可:Microsoft Outlook16.0 Object Library」をチェックを外したいのですが、チェックを外してもブックを保存して、開き直しても参照不可のものを再度チェックされた状態となってしまいます。マクロド素人のため、お助け頂きたいです。。。

マクロは下記となりますが、Outlook14.0はPCに格納されています。

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

 Dim RT As Long
 Dim mySh As Worksheet
 Dim myRow As Long

 Cancel = True

 myRow = Target.Row

 RT = Val(InputBox("1=挿入" & Chr(10) & Chr(13) & _
 "2=削除" & Chr(10) & Chr(13) & _
 "3=キャンセル"))

If RT <> 3 And RT <> 0 Then

 For Each mySh In Worksheets
 mySh.Select
 Rows(myRow).Select
 Select Case RT
 Case 1
 Selection.Insert Shift:=xlDown
 Selection.Range("U1:V1").FillDown   '
 Case 2
 Selection.Delete Shift:=xlUp
 Case 3
 End Select
 Next mySh
 End If
 Sh.Select
 End Sub

 Sub Sample()

    'Outlookオブジェクト生成
    Dim OL As Outlook.Application
    Dim MI As Outlook.MailItem
    Set OL = CreateObject("Outlook.Application")
    Set MI = OL.CreateItem(olMailItem)

    'メール各設定
    MI.To = "y@d.co.jp;y.y@d.co.jp;h.h@d.co.jp"    'TO
    MI.Cc = "s.t@d.co.jp"    'CC
    MI.Subject = "更新のお知らせ"    '件名

    '本文
     MI.Body = "各位" _
        & vbCr & "" _
        & vbCr & "更新しましたのでお知らせいたします。" _

    'メール表示
     MI.display

    'オブジェクト解放
    Set OL = Nothing
    Set MI = Nothing

End Sub
(もいもい) 2018/02/15(木) 14:13


 >   Dim OL As Outlook.Application
 >   Dim MI As Outlook.MailItem
 >   Set OL = CreateObject("Outlook.Application")

アーリーバインドしているのに、、レイトバインドし直しているのが意味不明…。 Outlookを新規起動する必要が無ければ、Dim OL As New Outlook.Application と書けば、下の行は消せるように思います。

とりあえず、上の2行でオブジェクトが持つデータ型を使っているので、チェックを外せないのですね。(最初からこっちのコードを見せてもらっていれば…) Outlook14.0 ならインストールしてあるというならば、「Microsoft Outlook14.0 Object Library」が一覧にあるはずなので、こっちをチェックしておけば、参照不可になっている方のチェックを外せるでしょう。
(???) 2018/02/15(木) 14:29


色々とご配慮いただき、ありがとうございます。
今後ともよろしくお願い致します。
(もいもい) 2018/02/15(木) 17:32

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.