• 締切済み

Windows2008上でVB6アプリの動作が異常

Windows2008上でVB6アプリの動作が異常です。 異常の概要) Collection のキーに漢字を使用すると、エラーが発生する場合がある。 Windows 2000/XP/2003 では再現しません。 またWindows2008でも、キーがANKである場合も再現しません。 エラー) 実行時エラー'5' プロシージャの呼び出し、または引数が不正です。 再現プログラム) フォームにボタンとリストボックスを貼って以下のコードを記述し 実行すると、20分程度でエラーが発生します。 Private Sub Command1_Click() Dim c As Collection Set c = New Collection c.Add 1, "明細KEY" c.Add 2, "販売区分" c.Add 3, "伝票NO" While True DoEvents List1.AddItem c("明細KEY") List1.AddItem c("販売区分") List1.AddItem c("伝票NO") List1.Clear Wend End Sub

みんなの回答

回答No.2

64-Bit Windows Visual Basic 6.0 runtime files are 32-bit. These files ship in 64-bit Windows Operating Systems referenced in the table below. 32-bit VB6 applications and components are supported in the WOW emulation environment only. 32-bit components must also be hosted in 32-bit application processes. The Visual Basic 6.0 IDE has never been offered in a native 64-bit version, nor has the 32-bit IDE been supported on 64-bit Windows. VB6 development on 64-bit Windows or any native architecture other than 32-bit is not and will not be supported. http://msdn.microsoft.com/en-us/vstudio/ms788708 基本てきにVB6から。Net移行おすすめします。

  • pcb39431
  • ベストアンサー率84% (16/19)
回答No.1

Windows2008へのアプリケーションの登録方法はどのようにされていますか? EXEファイルをコピーしているだけなら、アプリのSETUPを作って、それで登録してみてください。 また、漢字の文字コードの規格が変わっているので、そのあたりで影響が出ているかもしれません。 参考になるかどうかわかりませんが、VB6のサポートについてのサイトアドレスを付けておきます。

参考URL:
http://msdn.microsoft.com/ja-jp/vbasic/cc707268
soumusan
質問者

補足

回答ありがとうございます。 > Windows2008へのアプリケーションの登録方法はどのようにされていますか? VBのIDE をインストールしています。 また、Windows2008(x64)の環境もありましたのでこちらにはEXEのみこぴーして動作確認を行い、同様の問題を確認できました。ただ、こちらは、運用上インストール作業は難しいです。 間接的に、こちらのサイト(http://www.atmarkit.co.jp/fdb/rensai/ora_admin/06/oraadmin06_03.html)で紹介されている、JIS X 0213 の影響があるのかもしれませんね。

関連するQ&A

  • EXCEL VBA 多種のコンボボックス操作

    こんばんは。 現在ユーザーフォーム上に10個のコンボボックスを配置しています。 1-8は共通リストを、9と10は別々のリストを表示させたいのですが・・ Private Sub UserForm_Initialize() Dim X, No, Y As Integer With UserForm2 For No = 1 To 8 For X = 0 To 7 .Controls("ComboBox" & No).AddItem Worksheets("Letter").Cells(X + 1, 10).Value Next Next For Y = 0 To 7 .ComboBox9.AddItem Worksheets("Letter").Cells(Y + 1, 11).Value .ComboBox10.AddItem Worksheets("Letter").Cells(Y + 1,12).Value Next End With End Sub 上記のコードですが、エラーが出てどうにも行き詰っています。 Private Sub UserForm_Initialize() Dim X, No As Integer For No = 1 To 8 For X = 0 To 7 UserForm2.Controls("ComboBox" & No).AddItem Worksheets("Letter").Cells(X + 1, 10).Value Next Next End Sub ↑だと1-8まで問題なく動くのですが・・・ すみませんが、アドバイスお願いいたします。

  • ストアアプリ開発 C# ListViewについて

    ストアアプリ開発 C#初心者です。 サーバーからデータ取得後、 ListViewにデータを追加したいのですがよくわかりません。 ListViewに表示させたいのは日付、タイトル、画像です。 xaml↓ <ListView Grid.Row="1" x:Name="ListView1"></ListView> C# foreach (var item in blog_list){ ListViewItem addItem = new ListViewItem(); addItem.Tag = item.GetObject().GetNamedString("id"); addItem.Content = item.GetObject().GetNamedString("name"); ListView1.Items.Add(addItem); } 本当に初心者で申し訳ないのですがわかりやすい 解説等してるサイトありましたら教えてください。

  • 他のテーブルの抽出条件で更新したい。

    ・売上ヘッダ  伝票NO,売上金額合計 ・売上明細  伝票NO,明細NO,商品番号,売上金額 上記のようなテーブル構成の2つのテーブルがあります。 売上ヘッダの主キーは、伝票NOで売上明細の主キーは、伝票NOと明細NOです。 ここで、商品番号1の、売上金額に500円の差額があるため、、修正をしたいと考え、売上ヘッダと売上明細にある売上額を変更したいのですが、売上ヘッダの売上金額合計を更新する方法がわかりません。 ご教授いただけないでしょうか。

  • 更新時の「同時実行エラー」の対策

    VB.NET2003+Access2000で開発練習中です。 今二つのテーブルにリレーションをかけて、サブフォームからデータの変更・更新をしようとしています。 新規追加は問題なくできていますが、少しデータを変更したり、削除しようとすると「同時実行エラー」が起こります。 テーブルは「メイン」と「サブ」の二つで、それぞれのテーブルにある「伝票No」がキーになっています。 (メイン伝票1枚に複数のサブ伝票がついています) データセットは「DsDenpyou」という名前で両テーブルをセットしています。 データ更新のために   dataadapter1.update(DsDenpyou,"メイン")   dataadapter1.update(DsDenpyou,"サブ") と続けて記述すると、必ずサブのテーブルを更新にいったときにエラーになります。 なにかチェックの方法がありましたらご教示いただけませんか? なお主キーはメインのテーブルの「伝票No」に設定しており、サブには設定していません。 よろしくお願いします。

  • Excel VBのComboBoxで横一列の選択

    日程表マクロを作っています。セルのC3からAG3の横列31個のセルに1日から31日までの日付を作成してあります。 コンボボックス5で日付選択をしたいので、この列を参照したいと考え、下記のプログラムを作成しました。実行すると「コンパイルエラー」、参照されません。 Private Sub ComboBox5_Enter() ComboBox5.ColumnSource = "C3:AG3" ’ComboBox5をActiveSheetに変更するとサポートされず。 End Sub マクロで With ComboBox5 .AddItem"1" .AddItem"2" : .AddItem"31" ではなくてRowSourceに代わる指定セル範囲の横列参照はできないのでしょうか? あるいはもっとスマートな指令方法があれば教えてください。 Excel2007 VB6.5です。

  • VB.netでコレクションを変更させないようにするには

    C#、VB.net(.net framework 2.0)で開発しております。 FamilyクラスのListフィールド_peopleには外部からの変更操作(Add、Remove等)を許可したくないのですが、 以下のようにReadOnlyのプロパティを設けても、代入操作はできないもののコレクション自体への変更は可能となってしまいます。 ※family.People.Add(mem) 等 IListやICollectionインターフェースをImplementして独自のコレクションを作り、 AddやRemoveメソッド内で例外を投げたりすることも考えたのですが、 そもそもコンパイルを通したくありません。 こういった場合、どのように実装するのが定石でしょうか? 宜しくお願い致します。 以下コード例 Public Class Family Dim _people As List(Of Member) Public ReadOnly Property People() As Member Get Return _people End Get End Property End Class

  • VBA コンボボックスの値による条件分岐

    12カ月分のブックがあり、 コンボボックスで指定した月のブックを開くマクロはどう記述すれば良いでしょうか? BOOK("1月")のSheet1にコンボボックス1と コマンドボタン1があります。 コンボボックスには下記をリストにしています。 Private Sub Workbook_Open() With Worksheets("Seet1").ComboBox1 .AddItem (" 2月") .AddItem (" 3月") .AddItem (" 4月") .AddItem (" 5月") .AddItem (" 6月") .AddItem ("7月") .AddItem ("8月") .AddItem ("9月") .AddItem ("10月") .AddItem ("11月") .AddItem ("12月") End With End Sub Private Sub CommandButton1_Click() If ComboBox1.Value = "2月" Then Workbooks.Open Filename:="C:\testBook\2月.xlsm" ElseIf ComboBox1.Value = "2011年度 3月売上" Then Workbooks.Open Filename:="C:\testBook\3月.xlsm"     中略 End If End Sub 上記ではエラーとなります。 基本もままならない素人で申し訳ありませんが、 ご教授願います。

  • LEFT JOIN あいまいな外部結合

    Access2000でクエリを作成します。 SQLで SELECT お支払.ID_支払, お支払.N_伝票No, お支払.N_支払金額, お支払.N_支払区分コード FROM 伝票 LEFT JOIN (支払区分マスター INNER JOIN お支払 ON 支払区分マスター.N_支払区分コード = お支払.N_支払区分コード) ON 伝票.N_伝票No = お支払.N_伝票No; とすると あいまいな外部結合が含まれている・・というエラーがでてしまいます。どうしたらいいでしょうか。 伝票は全て表示して、その中のお支払には、区分コードを割り当てたいだけなのですが。 宜しくお願い致します。

  • insert時に日付のフィールドにnullを入れたい

    テーブルに以下のフィールドがあります。 [No],[区分],[キーNo],[日付] このテーブルに日付のデータのない、以下のようなデータをインサートしたいのですが、 [No],[区分],[キーNo] 1 ,kbn1 , key1 strSQL1 = "INSERT INTO テーブル1" & " ([No],[区分],[キーNo],[日付])" _ & " VALUES ("1","kbn1","key1",NULL )" とするとエラーが出てしまいます。日付フィールドに何も入れないようにinsert文を書くにはどうしたらよいでしょうか。 すみません、アドバイス等宜しくお願いします。

  • リストボックス

    すいません以下の処理に困っております。 リストボックスで値を取得して他のリストボックスにその値を 出力したいのですがまったくできません。 <例> リストボックス1 a b c リストボックス2(上で選択した値を出力) a ちなみに構文は、 ------------------------------------------------------------ Private Sub btn選択_Click() ListBox2.Text = ListBox1.Text 'ListBox1.ListIndex + 1 & ": " & ListBox1.Text End Sub Private Sub CommandButton1_Click() End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub UserForm_Initialize() With ListBox1 .AddItem "スケジューラ" .AddItem "データ変換" .AddItem "DWH Server" .AddItem "PPP Server" .AddItem "ファイヤーウォール" .AddItem "暗号オプション" End With End Sub ---------------------------------------------------- 初心者でまったくできません。 御教授をお願いします。