[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ起動しようとするとエラーになってしまう』(もいもい)
マクロ起動しようとするとエラーになってしまいます。
作成したマクロのコードを確認したところ、「DLL読み込み時のエラー」となってしまっています。どのようにすれば解決できるのでしょうか?
< 使用 Excel:Excel2010、使用 OS:Windows10 >
ありがちなのは、32bit Excel で作成したブックを、64bit Excel で実行しようとしているとか? 64bitでも通用するコーディングに変えないと駄目です。 第3者に聞くより、マクロを書いた人に相談しましょう。
(???) 2018/02/15(木) 12:56
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
または、マクロ編集画面で、「ツール」−「参照設定」を開いてみてください。エラーになっている項目はありませんか?
(???) 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
そして、メール送信したい目的があるならば、参照設定によるアーリーバインド以外にも、CreateObject("Outlook.Application") を使うレイトバインド方式でも書けますので、調べてみてください。
(???) 2018/02/15(木) 13:58
マクロは下記となりますが、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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.