次の方法で共有

excel2003で作成されたマクロファイルを64bit版excel2013 で起動するとエラーする

Anonymous
2014-02-26T06:35:43+00:00

windows8.1 64bit版を使用しています。

Windows7でも64bit版では同じエラーが発生します。

WindowsXpにてexcel2003で作成したマクロ関数のワークシートが次のエラーメッセージが表示されます。

Windowsxpではexcel2007でも動作していました。

起動時のエラー画面

OKクリック後のエラー画面

MSCOMの設定は行いましたが、エラーは変わりませんでした。

32bit版→64bit版での移行は修正が必要なのでしょうか。

また、64bit版で動作可能なシリアル通信のコンポートネントはあるのでしょうか。

よろしくお願いします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2014-03-04T03:14:49+00:00

y sakuda さん、いつもアドバイスありがとうございます。

崇関根 さん、こんにちは。

マイクロソフト コミュニティへの投稿ありがとうございます。

y sakuda さんの書かれているように、別のフォーラムの方が情報が集まりやすいかも知れませんね。

どのフォーラムが適切か難しいところですが、VBA からの ActiveX コントロール参照設定についてなので、やはり 「VBA フォーラム」が一番良いのかなと思います。

よければ、そちらへの投稿も検討してみてくださいね。

※ その際にはこのスレッドのアドレスを貼り付けると、これまでの経緯が他の方にも分かりやすくなると思います。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2014-02-27T03:21:58+00:00

    失礼、最初の投稿の最後でシリアルポートの話だと書いておられますね。

    正直なところ、シリアルポートをVBAで操作した経験はもっておりませんし、64ビット環境を作っておりませんので、検証のしようもありませんので、お役にたてそうもありません。

    ただ、”シリアルポート X64”なんかで検索するとやはり問題ありと言った主旨の記事がたくさんでてきますので、問題がたくさんあるようです(と言うより基本的には使えないということかも)

    >場所の表記が、C:\windows\syswow64となっておりますが、実際は、c:\windows\system32 を指定しています。

    この意味が、参照設定の際32ビットのDDLを参照しているのだとすると参照設定できるのも不思議なようなものですが、多分インターフェースが違いますから動く方がおかしいように思えます。

    とにかく、Excelのフォーラムになじむ話ではなくなります。

    と言って、VBAのフォーラムとなじむとも思えません。むしろプログラム関係のフォーラムの方が適切な意見が得られるのではないかと思います。

    モデレータさん、適切なフォーラムを検討して移していただけませんか?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2014-02-27T02:38:04+00:00

    1、APIは使用しておりません。

    1、エラー箇所のSUBの始まりからエラーまでになります。

     下から3行目の「MSCOMM1」のシリアルポートのオープンがエラーになります。

    Private Sub UserForm_Initialize()

        Dim y           As Long

        CRLF = Chr(&HD) & Chr(&HA)

        CommPort = Sheets("発行資料").Cells(6, 2).Value

        UserFormCRW.StartUpPosition = 2

        PEitems.List = Sheets("発行資料").Range("E2:E41").Value         '発行担当者

        PEitems.ListIndex = 0                                           '20060929

        ComboBoxCS.List = Sheets("発行資料").Range("BE2:BE61").Value    '発行先会社名

        ComboBoxCS.ListIndex = 0                                        '20060929

        ComboBoxRE.List = Sheets("発行資料").Range("K2:K99").Value      '備考欄   2011/03/09

        ComboBoxRE.ListIndex = 0                                        '20060929

        For y = 2 To 41

            Worksheets("発行資料").Cells(y, 4).Value = y - 1    'D

            Worksheets("発行資料").Cells(y, 7).Value = y - 1    'G

        Next y

        OPFlag = 10

      If MSComm1.PortOpen = False Then

            Call PortOpenCD

        End If

    3、MSCOMのコンポーネントは参照設定にて割り当てています。

    場所の表記が、C:\windows\syswow64となっておりますが、実際は、c:\windows\system32 を指定しています。

    よろしくお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2014-02-26T12:09:42+00:00

    APIなどを使っておられると、ダメな場合が結構あるはずです。

    画像が小さくてよく見えないので、エラーの時表示されるコードの一番上の数行と、エラーとなっているところ(IF~ のところから End IFまで)をコピーして投稿してください。

    テキストでここの返信欄に張り付ければOKです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません