質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

30440閲覧

Excel2013 の VBA で実装上注意すべき点について

pi-chan

総合スコア5936

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2015/07/29 17:00

最近、自分が参画しているプロジェクトでもExcelのバージョンが 2007 ⇒ 2013 にアップされたのですが、これまで使用してきたExcelベースのツール類(VBA使用)がきちんと動作しなくなり、とても困っています。

主な原因は、これまで MDI(マルチ ドキュメント インターフェイス)だったものが、Excel2013になって SDI(シングル ドキュメント インターフェイス)に変更になったためのようですが、Microsoftの公式の情報を見てもなかなかスパッと解決できる良い方策が見つかりません。

Excel 2013 の単一ドキュメント インターフェイスのプログラミング

どうやら「ユーザーフォーム」や「WScript.Shell による外部コマンドの実行」に関連した箇所で多くの不具合が発生しているようなのですが、検索サイトで情報を収集しても皆様ご苦労されているようで、解決に至っていない例も多いです。

漠然とした質問になってしまい恐縮なのですが、以下の点について多くの皆様のご意見や情報をお寄せいただければ幸いです。

① 実装上特に気を付けているような処理はありますか?
② 不具合の発生したどのような処理を、どんな方策で解消できましたか?
③ 不具合の原因特定や問題解消に役立った情報源をご教示頂けますか?

ご多忙とは思いますが、どうぞお力をお貸しください。よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

2003から2007,2010のバージョンアップでも、様々な不具合があります。
Excel専門のシステム開発に携わっておりますので、色々と経験しました。
経験的には、オブジェクト(フォームも含め)での不具合が多いと思われます。

①オブジェクトを無闇やたらと使用しない。(処理が遅くなったり、メモリを消費するので)
また、オブジェクトを使用する際は、できるだけ型の合った変数に格納して使用する。

② 基本的には、真っ先にネットで検索します。
見つけられなかったら、自分で乗り越えるしかありません。
ステップ実行でバグを特定し、何故起こっているかを検証し、他の方法を模索する、だけです。

③ 情報源はまったくありません。
マイクロソフトに問い合わせしても、仕様レベルの例外的なバグなので、返答は無いと思ってください。

投稿2015/12/01 01:21

編集2015/12/01 01:22
ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pi-chan

2015/12/01 01:27

古い、かつ答えにくい質問を拾ってくださりどうもありがとうございます! やはり最後はステップ実行で問題を探り当て何とかするしか無いのですね。。 しかし、そうやって道を切り開いて来られたら諸先輩に感謝すると共に、少しでも近付けるよう頑張ってみます。
ExcelVBAer

2015/12/01 01:58

稀にですが、WindowsUpdateの影響で、Excelで動いていたプログラムが動かなくなるケースがあります。(顧客から不具合連絡があり、嵌まったことがあります) この場合、アップデートの更に修正版が出るのを待つか、アップデートをロールバックすることになります。 teratailがこういうコアな情報もやりとりできる場になると嬉しいですね。
pi-chan

2015/12/01 02:51 編集

貴重なコメントありがとうございます! 真の意味での「情報共有の場」になれば本当に有り難いです!!
guest

0

1.GDI /GDI+ 系の問題が発生するかもしれません。
VBAで、多量のシート上(目安としては、数万セルまたは、数万回)のセルデータを更新すると、
画面更新が遅れ始めて、やがて更新されなくなる場合があります。(EXCEL2010/2013)
VBAの動作終了⇒アイドル状態で、画面が再度更新される場合、されない場合。
2.ネットワークドライブへのセキュリティの考え方が変わったので(OS含めて)、
VBAから、ネットワークドライブ越しのブックを開くときに、動作の違いが発生するかも。
⇒ドライブレター(A:~Z:)の設定が有る無しは、あまり関連しない様子。
3.OFFICE2013のインストールメディアからインストールした場合と、
ライセンスキーのみの場合で、
ライセンスキーのURLの場所からダウンロードするインストーラで、インストールした場合では、
x86(x32)版では、
インストール先が異なる場合があります。
OS(Win8.1x64 / Win10x64)にて、OFFICEは、x86(x32)版にも関わらず、
C:\Program Files\Microsoft Office 15\root\office15
へ、インストールされる現象を確認済み。
4.Windows 8.1 x64 / Windows 10 x64 で確認した限りですが、
OFFICE他を入れていない素のWin8.1/Win10 ACC97形式MDBを扱える。
OFFICE 2013 Personal : ACCESS 2013 RUNTIME 無、ACC97形式MDBを扱える。
OFFICE 2013 Personal:ACCESS 2013 RUTIME 有、ACC97形式MDBはサポートされない。
OFFICE 2013 Professional:ACCESS のインストールする、しないに関わらず、
ACC97形式MDBはサポートされない。(ACCESS付属かどうかが、考慮対象)
⇒これが問題なのは、拡張子を変えたMDBが使われている場合があるので、拡張子MDBだけで
検索しても、解決しない、アプリ提供側でのサポートが必要。

投稿2015/12/01 01:48

編集2015/12/01 01:50
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pi-chan

2015/12/01 02:57

非常に貴重な情報をありがとうございます! 非常に『深い』ですねー深すぎて直ぐには理解仕切れない部分もありますが、こういう情報こそ、いざという時に役立つモノなので、記憶に留めておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問