tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルvb6 をWindows 7 で実行したときのエラー回避方法
記事No14868
投稿日: 2010/08/27(Fri) 15:06
投稿者しん
はじめまして、よろしくお願いします。

vb暦 = 1年
os = win2000 pro sp4
バージョン = vb6.0

Private Sub Form_Load()
  '<< テキストボックスの設定 >>
  Text1.Text = "100"
  '<< ラベルの設定 >>
  Label1.Caption = ""
  '<< \編集 >>
  Text1.Text = Format(Text1.Text, "\\##,###,###")
  '<< 数値変換 >>
  Label1.Caption = CLng(Text1.Text)
End Sub

@上記のプログラムの実行可能ファイル(.exe)を作成。
Aこの実行ファイルをWindows 7で実行。
その際プロパティの”互換モードでプログラムを実行する”
 を Windows XP (Service Pack 3) にすると
 「実行時エラー '13' 型が一致しません」
となってしまいます。
※同条件で Vistaではエラーがでません  
B調べてみるとどうやら Clng(Text1.Text) でこのエラーが起きているようです。
C上記のプログラムは、一部のロジックであり、Access97等を使用しているため
 互換性モードはWindows XP (Service Pack 3)で実行しなければならない状況です。
Dどうすれば、Windows 7 で 互換性モード Windows XP (Service Pack 3) で
 正常に動くか御教示下さい。

[ツリー表示へ]
タイトルRe: vb6 をWindows 7 で実行したときのエラー回避方法
記事No14869
投稿日: 2010/08/27(Fri) 15:43
投稿者ハツ
確認してませんけど
>  「実行時エラー '13' 型が一致しません」
と、型変換エラーが出ているのですから、きちんと型を合わせればいいのでは?

"\\##,###,###" がLong型に変換できていないか、

>   Label1.Caption = CLng(Text1.Text)

でLong型をCaptionに入れようとして失敗しているか、
おそらくどちらかなのでは?

[ツリー表示へ]
タイトルRe^2: vb6 をWindows 7 で実行したときのエラー回避方法
記事No14871
投稿日: 2010/08/27(Fri) 16:13
投稿者しん
早速の回答ありがとうございます。

ハツさんのおっしゃるとおり修正すれば良いんですが、
どうしても XP や Vista ではエラーがでないのに
Windows7 で実行するとエラーになってしまうのが納得いかず。

環境で何か足りないものなどがあるのではないかと、ネット等で
調べたのですが、わからなかったもので......

[ツリー表示へ]
タイトルRe: vb6 をWindows 7 で実行したときのエラー回避方法
記事No14870
投稿日: 2010/08/27(Fri) 16:01
投稿者花ちゃん
>   Text1.Text = Format(Text1.Text, "\\##,###,###")
>   '<< 数値変換 >>
>   Label1.Caption = CLng(Text1.Text)

Text1.Text に 数字以外の \ が含まれているので、型が一致しないと エラーが
でているのですね。
IDE 上ではエラーとなりますが、EXE ではエラーにならないはずですが。
(Win 7 上のVB6.0 で実行結果)
最も、Windows 7 上で VB6.0 の動作は保証されていないようだし、このような現象は
他にも色々あるようですので注意が必要です。

[ツリー表示へ]
タイトルRe^2: vb6 をWindows 7 で実行したときのエラー回避方法
記事No14872
投稿日: 2010/08/27(Fri) 16:32
投稿者しん
回答ありがとうございます。

実行したOS は Windows7 pro なのですが、
やはり、exeの互換性モードを 「Windows XP (SP3)」 にして実行すると
実行時エラーが発生します。
しかし、互換性モードを「Windows Vista」にするときちんと実行されます。

※ Windows Vista Pro で exeの互換性モードを 「Windows XP (SP3)」にした場合
   でも正常に実行されます。  
 
すぐの回答本当に感謝します。


 

[ツリー表示へ]
タイトルその他同様の不具合
記事No14873
投稿日: 2010/08/27(Fri) 18:19
投稿者花ちゃん
その他、私が確認している同様の不具合

   Label1.Caption = CLng("\1234")                  'でエラー 13 が発生します。
   Label1.Caption = StrConv("パピプペポ", vbWide)  'でエラー 5 が発生します。
   Label1.Caption = DateAdd("m", 2, "2010/08/27")  'でエラー 5 が発生します。

※ 上記以外にも同様のエラーがあるものと思います。

多分、国別情報に関する部分の対応がうまくなされていないような感じ?。

IDE 上ではエラーとなるが、EXE 上では、エラーとならない。
互換性モードを Windows XP    で使用するとエラーとなる
互換性モードを Windows Vista で使用するとエラーとならない

Windows 7 上で、VB6.0 を使用する以上、ご自分でそれぞれ対応策を講じて使用するしか
ないので。
(どの道、OS 等が変わったら動作がしないといった機能は今までも色々あったので)

Windows Vista&reg;、 Windows Server 2008&reg;、および Windows 7 における
  Visual Basic 6.0 のサポートについて
http://msdn.microsoft.com/ja-jp/vbasic/cc707268.aspx

Microsoft Office 製品に関する Windows 7 の対応状況
http://www.microsoft.com/japan/office/2007/OScompatibility.mspx

[ツリー表示へ]
タイトルRe: その他同様の不具合
記事No14874
投稿日: 2010/08/27(Fri) 19:28
投稿者しん
回答ありがとうございます。

教えていただいたサイトで、少し調べてみます。
もしまた分かった事があれば教えてください。
よろしくお願いします。

[ツリー表示へ]
タイトルRe^2: その他同様の不具合
記事No14875
投稿日: 2010/08/29(Sun) 07:34
投稿者花ちゃん
> もしまた分かった事があれば教えてください。

Windows 7(32ビット版) 上で VB6.0 を使用する場合、

 IDE 上で使用する場合は、VB6.EXE の互換モードを(無し)外して使用する。
  (Windows Vista 互換モード では、一部エラーとなる、Windows XP の互換モードでは使用しない事)

 EXE 版を使用する場合、Windows Vista 互換モードで使用する。
 (EXE 版でもWindows XP の互換モードでは使用しない)


現在のところ上記が最善の方法かな?と思っております。

[ツリー表示へ]
タイトルRe^3: その他同様の不具合
記事No14876
投稿日: 2010/08/30(Mon) 10:30
投稿者しん
引き続き調べていただき,そして回答ありがとうございます。

先日、教えていただきましたサイトに少し気になる記事があったので
これを、実験してみたいとおもいます。

http://windows.microsoft.com/ja-JP/windows7/install-and-use-windows-xp-mode-in-windows-7

[ツリー表示へ]