【お題】NEW演歌

■使用条件:
・Windows 10 Pro 64 bit
・Excel® 2019 MSO (バージョン 2202 ビルド 16.0.14931.20118) 32 ビット
・ .NET freamwork 3.5 and 4.8

■行っている事
・vbaでArraylistでリストを取得、SORT後に処理に利用していました。
・PCが故障して、OSも含めて再インストールを行い、EXCEL vbaの動作試験をしていました。
・vba の 「Arraylist,Add Sttring」部分で Add しなくなりました。
 ずっと問題なく動作していたので、vba のバグではありません。
・大分昔に作って動作させていたので忘れていたのですが、「mscorlib.tlb」参照設定しないと動作しない?と思い出しました。
・しかし、「mscorlib.tlb」を参照設定しても動作しません。
・予想される原因は、PC故障前まではEXCEL 64 bit を使っていて、今回は32bit がインストールしたためだと予想しています。
・64 bit PC/ 64bit OSに 32 bit EXCEL を使ったときは、32 biti の.NET FreamWork3.5 or 4.8 を使えば良いのでしょうか?
・ 64 bit マシン/OS に 32 bit の .NET freamworkをインストールを問題なく出来たでしょうか?

これで動作するのか、試す前に 悩んでいます。 ご存知の方教えてください。

質問者からの補足コメント

  • うれしい

    ★解決しました。
     「アプリと機能」の「プログラムと機能」の「Windowsの機能の有効化または無効化」
    というメニューから
    □ .NET Framework3.5にチェックを入れる事で解決しました。
    (□ .NET Framework4.8 Advanced Servicesにはチェックが既に入っていた。)

    結局、今回のPC故障のO/S再インストール時に、なぜかこのチェックが付いてなかったと言うことだと思います。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/03/27 10:26

A 回答 (3件)

当方、Windows 10 Pro 64 bitで


Microsoft® Excel® 2019 MSO (バージョン 2202 ビルド 16.0.14931.20118) 32 ビット
の環境ですが、問題なく使用できています。excelは32ビット版です。
すくなくとも、32ビットの.NETFRAMEWORKをインストールした記憶はありません。

.NETFRAMEWORK 4以上の場合
参照設定で
チェックを入れるのは、mscorlib.dllですね。

また、チェックをいれないで、
Dim aryList As Object
Set aryList = CreateObject("System.Collections.ArrayList")
aryList.Add "ABC"
のようにCreateObjectを使用しても、問題なく動作します。

ですので、32 bit の .NET freamworkをインストールする必要はないかと思われます。

私が解決案を提示できるわけではありませんが、参考までに
「Arraylist,Add Sttring」部分で Add しなくなりました。ということですが、エラーメッセージは何が表示されていますか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

うーん・・・

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

> 当方、Windows 10 Pro 64 bitで
Microsoft® Excel(…) 32 ビットの環境ですが、問題なく使用できています。
excelは32ビット版です。すくなくとも、32ビットの.NETFRAMEWORKをインストールした記憶はありません。
=> 32 bitの .net など入れなくても 問題なく動作していますか!
  以前の状態と差があるとすれば、Excel 64bit => 32 bit だけなので、.NET freamworkが原因かと考えました。

> 参照設定でチェックを入れるのは、mscorlib.dllですね。
=> C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb を参照させると、
  mscorlib.dll が現れるので、これにチェックを入れています。

> 「Arraylist.Add Sttring」部分で Add しなくなりました。ということですが、エラーメッセージは何が表示されていますか?
=> STEP実行して見ると、 string に文字列が入っているのに何も Addされず、空ListをSORTさせた後に
  For Each aString In Arraylist <== Error ! Arraylistが 空 !!!
こんな感じで、Err Stop します。

> また、チェックをいれないで、
… 省略 …
問題なく動作します。

=> とのお話ですので、この前提で数行のプログラムを作ってテストを行ってみます。

お礼日時:2022/03/24 22:43

確か64になるか32になるかにおいて、Officeは関係ない気もしました。


OSまたはVisual Studioなどで判断されたような?
大概VSインスト時に一緒に入って来ましたし。

過去に記事で4.7はともかく4.8が先に入ってると3.5のインストに失敗してたような?

なので最近はVBAの機能で解決するコードを書いてますね。
⇛うちは一応使えてますけど、使わないようになりました。
参照先(優先度?)がいつからか変更した感じでした。
VS立ち上げた際にそんなメッセージを見かけた覚えが。
    • good
    • 0
この回答へのお礼

ありがとう

回答有難うございます。

> 最近はVBAの機能で解決するコードを書いてますね。
=> 私もvba機能で作り込もうと思ったのですが、
 ArrayList.Sort を使いたくて .NetのArrayListを使いました。

⇛うちは一応使えてますけど …
 No 1の方も使えてるとのお話ですので、もう少し自分でしらべてみます。

お礼日時:2022/03/24 22:53

No1です。


添付図を忘れましたでアップします。
「VBAでArrayListを使う為の「m」の回答画像2
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報