Excel 2007 VBAで実行時エラー

このQ&Aのポイント
  • Excel 2007のVBAでEUCコードの変換を試すコードにおいて、実行時エラーが発生します。
  • エラーメッセージは「実行時エラー '424' オブジェクトが必要です」と表示されます。
  • このエラーを修正する方法について教えてください。
回答を見る
  • ベストアンサー

Excel 2007 VBAで実行時エラー

Excel 2007のVBAで、EUCコードの変換を試す下記コードの(6)行に「実行時エラー '424' オブジェクトが必要です」となります。 修正方法を教えて頂きたくよろしくお願い致します。 (1) Sub Test() (2) Dim str As String (3) Dim bytesData(1) As Byte (4) bytesData(0) = &HC0 (5) bytesData(1) = &HA4 (6) str = System.Text.Encoding.GetEncoding(51932).GetString(bytesData) (7) MsgBox str (8) End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

> (6) str = System.Text.Encoding.GetEncoding(51932).GetString(bytesData) これは VBA ではなく VB.NET ですよね。 VBAならbyte配列からStringへの変換は例えば str = StrConv(byteData, vbUnicode) ですが、EUCに変換するには自分で変換ルーチンを作らなければならなかったと思います。

isunsun
質問者

お礼

今、自分で使用するアプリを作成していますが、初心者の私はネットで色々調べながら悪戦苦闘中です。 EUCから変換したいのですがVB.NETでしたか。VBAでは残念ながら自分で変換ルーチンを作る必要があるのですね。 もうひと頑張りしたいと思います。早速回答頂きありがとうございました。

関連するQ&A

  • SJIS->UTF8->SJISコード変換について

    Windows XPでVB.NET2010で文字コード変換のプログラムを下記のように作成しました。 Dim beforeStr As String = "変換前" Dim utfEnc = System.Text.Encoding.GetEncoding(65001) Dim sjisEnc = System.Text.Encoding.GetEncoding(932) Dim beforeBytes() As Byte = utfEnc.GetBytes(beforeStr) Dim afterBytes() As Byte = System.Text.Encoding.Convert(sjisEnc, utfEnc, beforeBytes) Dim afterStr As String = sjisEnc.GetString(afterBytes) TextBox3.Text = afterStr Dim reverseStr As String = afterStr Dim reverseBytes() As Byte = sjisEnc.GetBytes(reverseStr) Dim baseBytes() As Byte = System.Text.Encoding.Convert(utfEnc, sjisEnc, reverseBytes) TextBox4.Text = utfEnc.GetString(baseBytes) SJIS->UTF8に変換して、確認のためにUTF8->SJISに逆変換してみましたが、 「変換」までは正しいのですが、最後の「前」が文字化けしてしまします。 正しくSJIS-.UTF8->SJISするには、どのように修正すればよろしいでしょうか? よろしくお願いします。

  • エクセルVBAで実行時エラー438

    自宅のエクセル2019や、会社のMicrosoft365では問題なく動く下記のコードですが、エクセル2016のパソコンでは「実行時エラー '438':オブジェクトは、このプロパティまたはメソッドをサポートしていません。」となります。これはエクセルのバージョンの問題でしょうか?対応する方法はありませんか? Sub sample() Dim url As String Dim zip As String Dim httpReq As Object Dim httpDoc As Object Dim data As Object Dim line As Object Dim State As String Dim city As String Dim addressLine As String 'URL url = "https://www.post.japanpost.jp/cgi-zip/zipcode.php?zip=" '郵便番号 zip = "1000001" 'HTTPリクエスト実行 Set httpReq = CreateObject("WinHttp.WinHttpRequest.5.1") httpReq.Open "GET", url & zip, False httpReq.Send '「HTMLDocumentオブジェクト」にHTTPレスポンスを設定 Set httpDoc = CreateObject("htmlfile") httpDoc.body.innerHTML = httpReq.responseText '都道府県と市区を抜き出す Set data = httpDoc.getElementsByClassName("data") 'ここでエラー State = data(1).innerText city = data(2).innerText '町村を抜き出す Set line = httpDoc.getElementsByClassName("line") addressLine = line(0).innerText '結果 MsgBox (State & city & addressLine) '後片づけ Set httpReq = Nothing Set httpDoc = Nothing End Sub このコードは以下のサイトからコピペしたものです。 https://excel-vba.work/2023/03/27/%e3%80%90vba%e3%80%91%e9%83%b5%e4%be%bf%e7%95%aa%e5%8f%b7%e3%81%8b%e3%82%89%e4%bd%8f%e6%89%80%e3%82%92%e5%8f%96%e5%be%97%e3%81%99%e3%82%8b/

  • 実行時エラー 2001

    http://officetanaka.net/excel/vba/vbe/05.htm を参考に VBAコードを取得したいのですが Declare Function GetTickCount Lib "kernel32" () As Long Public sampledata As String Sub Sample9() Dim Code As String Code = ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.Lines(7, 5) MsgBox Code End Sub を実行すると 実行時エラー 2001 'VBProject'メソッドは失敗しました:'_Workbook'オブジェクト が、 Code = ThisWorkbook.~ の行で発生します。 何が間違ってますか?

  • 同じ関数名やメソッド名は変数に使わない方が良い?

    例えば、Strと言うのは、オブジェクトブラウザで確認すると VBA.Conversion のメンバ にありますが、この場合、 Sub test() Dim Str As String Str = "test" MsgBox Str End Sub のようなコードは作らない方が良いのでしょうか? エラーになったり何か不都合が発生しますか?

  • [再質問]VC#で2進数の文字列をバイト列に変換する方法

    No.1029439で質問して回答頂きましたが、もう一度お願いします。 string strに2進数の文字列がNバイト分入っているとします(0か1が8×N個入っている)。これを1バイト分ずつbyte型の配列に入れたいです。 例えば、str = "1010111100101100"と2バイト分入ってるときは、byte型の配列bytesに bytes[0] =0xAF(10101111) bytes[1] =0x2C(00101100) となるようにしたいです。 最終的には↓のようにして、文字を出力したいためです。 Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); string str = sjisEnc.GetString(bytes); http://www.atmarkit.co.jp/fdotnet/dotnettips/011byte2str/byte2str.html よろしくお願いします。

  • エクセル2007でVBAが動きません、助けて下さい

    先日、使用していたエクセルを2003から2007に変更した所、 オブジェクトのテキストが読み込めなくなってしまいました。 マクロの記録なども試したのですが、問題が解決せず 困っています。 原因が分かる方が入らしたら、ぜひとも教えてください。 =================================== Sub namae() Dim namae1 As String Dim namae2 As String namae1 = Application.Caller namae2 = ActiveSheet.Shapes(namae1).TextFrame.Characters.Text MsgBox namae2 End Sub

  • グローバル変数などについて

    Option Explicit Dim str1 As String '・・・(1) Sub テスト() Dim str2 As String '・・・(2) str1 = "テスト1" str2 = "テスト2" MsgBox str1 MsgBox str2 End Sub (1)はグローバル変数と言うとの事ですが (2)は何変数と言うのでしょうか? ローカル変数ですか? また、(1)がdimではなく、 Public str1 As String となった場合でも、 プロシージャーの外にあれば、グローバル変数と言うのでしょうか?

  • C# 文字コード変換

    お世話になります C#でプログラムを開発しております その際、ハードウェアへデータを送信するのですが 送信する文字列データをANKコードで送信しなければなりません。 そこで行き詰っているのですが ハードウェアへ ひらがなの 「あ」 を送信する際 「$"」 へ変換して送信する形です ・・・参考・・・ JIS0208コード表 http://ash.jp/code/codetbl2.htm ANKコード表 http://www.asahi-net.or.jp/~ax2s-kmtn/ref/codes. … 以下がプログラムです      str = "あ";      byte[] data = Encoding.GetEncoding("EUC-JP").GetBytes(str);      ret = Encoding.GetEncoding("ASCII").GetString(data);      System.Console.WriteLine("ret:" + ret); 上記のコードでできると思ったのですが ret2:?? となってしまいます。 Javaではできたのですが・・・ いちおう成功したJavaのコードを載せます      str = "あ";      byte[] jis = str.getBytes("jis0208");      String strAscii = new String(jis, "ASCII");      System.out.println("strAscii:" + strAscii); 結果 $" Javaではjis0208でエンコードしてるところを C#ではEUC-JPで行っているのが原因だとは思うのですが ネットで調べてもjis0208はEUC-JPでエンコードするようにあります 私の理解が不足しているのでしょうか お分かりになる方、宜しくお願い致します。

  • HP毎にエンコードを切り替えるには?

    現在以下の様にHTMLソースを表示しているのですが ページによって"Shift_JIS"や"EUC-JP"等文字コードが違っているため 表示されるHTMLが文字化け状態になる場合があります。 対象となるHPの文字コードを取得して エンコード部分を切り分けたいと思っているのですが 何か良い方法はないでしょうか? Dim SampleWebClient As New System.Net.WebClient Dim SampleByte As Byte() Dim strHtml As String '■URLからデータ取得 SampleByte = SampleWebClient.DownloadData(TextBox2.Text) '■エンコード strHtml = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(SampleByte) '■HTMLソースの表示 TextBox1.Text = strHtml.Replace(vbCr, vbCrLf).Replace(vbLf, vbCrLf)

  • Excel VBA basp21でメール送信エラー

    メール送信エラーとなってしまいます。 ”Cant connect Server 11004” 同アカウントでメーラーからの送受信は成功しております。 原因はSMTP設定の関係だと思うのですが、どのようにコードを書き足せば良いのでしょうか。 また参照設定は完了しています。 ご存知のかたご回答をよろしくお願いします。 コードは以下です。 Private Sub cmd送信_Click() Dim bobj As Object Dim svname As String Dim id As String Dim pass As String Dim msg As Variant '送信チェック用 Dim strMLadr As String Dim strDPadr As String Dim strPW As String 'SMTPサーバ名:ポート番号:タイムアウト秒 svname = "サーバー:587:60" 'ログインID id = "" 'パスワード pass = "" 'オブジェクトを作成 Set bobj = CreateObject("basp21") '宛先 mailto = "" '送信者 strMLadr = "" '(送信者のメールアドレス' strDPadr = "テスト" '(送信者の表示文字列) strPW = "" '(送信者メールアドレスのパスワード) mailfrom = strDPadr & "<" & strMLadr & ">" & vbTab & id & ":" & strPW '件名 subj = "送信テスト" '本文 改行はvbCrLf body = "おはようございます。" & vbCrLf & "今日は良い天気ですね。" 'メール送信 msg = bobj.SendMail(svname, mailto, mailfrom, subj, body, "") ' 送信チェック If msg <> "" Then MsgBox "送信できませんでした。" & vbCrLf & msg, vbOKOnly + vbCritical, "エラー" Else MsgBox "送信に成功しました。", vbOKOnly + vbInformation, "完了" End If End Sub

専門家に質問してみよう