BLOGTIMES
» ArchiveList (Tag for "VB" )
«Prev || 1 · | Next»
2022/02/27

Excel のマクロが動かない?

excel  VB  antivirus 
セキュリティに影響を及ぼす可能性のある問題点が検知されました。 - Excel のマクロが動かない?

仕事で使っていた Excel のマクロを起動すると「セキュリティに影響を及ぼす可能性のある問題点が検知されました」というメッセージと共に、Excel が強制終了されるようになってしまったので、マクロの内容を見直してみました。

10数行程度の短いマクロですが、どうやらアンチウィルスの振る舞い検知に引っかかってしまったようです。

怪しいのは Wscript.Shell 経由でブラウザを開く処理なので、この部分を Shell 経由で firefox.exe(僕の標準のブラウザ)を直接呼出すように変更してみたところ、うまく動くようになりました。逆にこれだけでアンチウィルスをすり抜けられるのもかなり謎ですね。

CreateObject("Wscript.Shell").Run("https://www.google.com/")

Shell "C:\Program Files\Mozilla Firefox\firefox.exe https://www.google.com/"

Visual Studio 2019 で Hello World を作ってアンチウィルスにひっかかった時もそうでしたが、こういうアンチウィルス系の誤動作は対処が面倒で困ります。


    at 23:57 |
    2020/01/20

    Excel VBA で JSON が扱いたいときは VBA-JSON が便利

    VB  excel 

    VBA で JSON を扱うことができる VBA-JSON が便利だったのでメモ。

    VBA-tools/VBA-JSON: JSON conversion and parsing for VBA

    JSON conversion and parsing for VBA (Windows and Mac Excel, Access, and other Office applications). It grew out of the excellent project vba-json, with additions and improvements made to resolve bugs and improve performance (as part of VBA-Web).

    今回はサンプルとして openBD の API を叩いて、ISBN から書名、著者名、出版日、出版社名、価格を取得するコードを書いてみました。
    以下のように非常にシンプルなコードで実現できます。
    実行方法は適当なセルに ISBN を入力し、その範囲を選択した状態でマクロを実行するだけです。日本語も問題なく取れていますね。

    VBA-JSON で書籍情報を取得 - Excel VBA で JSON が扱いたいときは VBA-JSON が便利

    Option Explicit Sub Main() Dim i As Long Dim c As Range For i = Selection(1).row To Selection(Selection.Count).row Set c = Selection(1).Offset(i - 1, 0) If c.Value = "" Then Exit For Else Search c.Value, c End If Next For i = 0 To 5 c.Offset(0, i).EntireColumn.AutoFit Next End Sub Sub Search(ISBN As String, cell As Range) If Not ISBN = "" Then Dim jsonObj As Object Dim Url As String Dim Json As String Url = "https://api.openbd.jp/v1/get?isbn=" & ISBN Json = GetContents(Url) Set jsonObj = JsonConverter.ParseJson(Json) If jsonObj.Count > 0 Then 'タイトル Dim title As String title = jsonObj(1)("summary")("title") cell.Offset(0, 1) = title '著者 Dim author As String author = jsonObj(1)("summary")("author") cell.Offset(0, 2) = author '出版日 Dim pubdate As String pubdate = jsonObj(1)("summary")("pubdate") cell.Offset(0, 3) = pubdate ' 出版社 Dim publisher As String publisher = jsonObj(1)("summary")("publisher") cell.Offset(0, 4) = publisher ' 価格 On Error GoTo Catch Dim price As Integer price = jsonObj(1)("onix")("ProductSupply")("SupplyDetail")("Price")(1)("PriceAmount") cell.Offset(0, 5) = price Catch: End If End If End Sub Function GetContents(Url As String) As String Dim XmlHttp As Object Set XmlHttp = CreateObject("MSXML2.XMLHTTP") XmlHttp.Open "GET", Url, False XmlHttp.Send GetContents = XmlHttp.ResponseText End Function

      at 23:55 |
      2019/08/18

      VB のアプリで「プロシージャの呼び出し、または引数が不正です。」

      VB  vbs  windows10 

      少し前から VBA で書いたマクロを動かそうとすると「プロシージャの呼び出し、または引数が不正です。」というエラーが出るようになってしまって困っていたのですが、どうもこれは今月の Windows Update のバグを踏んでしまっていた模様。

      おとなしくアップデートを待てば良いみたいですが、この手の定例外パッチは最新版の Windows へのリリースが一番遅いのはなぜなんでしょうね。

      2019年8月の月例更新プログラムに問題、VB6/VBA/VBScriptアプリ・マクロが応答不能に - 窓の杜

      「Visual Basic 6(VB6)」で作成したアプリケーションや「Visual Basic for Applications(VBA)」で作成したマクロ、「Visual Basic Scripting Edition(VBScript)」で作成したマクロやアプリケーションが応答しなくなり、“invalid procedure call error.”というエラーが発生することがあるという。


        at 15:55 |
        2019/08/04

        Excel のマクロで PDF 保存する

        excel  VB 

        Excel のシートをマクロから PDF 出力する方法がないかと思って調べてみたら、簡単に実現できることが分かったのでメモ。
        考えたら最近の MS Office は Acrobat などがなくても PDF 出力できるようになっていますからね。

        サンプルコード

        以下のマクロを使うと、アクティブなシートをデスクトップに hoge.pdf という名前で出力します。

        Dim WSH As Variant Dim SavePath As String Set WSH = CreateObject("WScript.Shell") SavePath = WSH.SpecialFolders("Desktop") & "\hoge.pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SavePath

          at 18:05 |
          2006/10/20

          MS Accessでクエリの一括実行 その2

          VB  msaccess 

          その昔、「MS Accessでクエリの一括実行」というエントリを書いたことがありました。でも、これは僕はVBが全く使えなかったためなんですが、そんな僕のエントリを見て、VBAを作ってくださった方がいました。

          [MS Accessでクエリの一括実行 その2 の続きを読む]

            at 21:08 |
            «Prev || 1 · | Next»
            » ArchiveList (Tag for "VB" )