こんにちは。VB初級者です。宜しくお願いします。
現在、VB6.0でエクセルの表を操作するようなプログラムを作っています。下に書いたプログラム(わかりにくいとは思いますが、ご教授お願いします。)で値の更新は出来たようなのですが、実際に表を開こうとすると”不正な処理が行われました”というエラーメッセージが出て開くことが出来ません。ADOオブジェクトでエクセルを扱うのがちょっとおかしい(?)のかもしれませんが、今回はEXCELオブジェクトは使わないという方針です。
自分ではどこが間違っているかわかりませんでしたので教えて頂ければと思います。宜しくお願い致します。
Private Sub Command1_Click()
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.Properties("Extended Properties") = "Excel 8.0"
cn.Properties("Data Source") = "C:\VB\株価管理\株価.xls"
cn.Open
Dim cmd As ADODB.Command
Dim mySQL As String
mySQL = "update [株価$] set 高値 =10000 where 高値 = 7"
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = mySQL
cmd.Execute
Set rst = New ADODB.Recordset
rst.Source = "Select * From [株価$]"
rst.ActiveConnection = cn
rst.CursorType = adOpenDynamic
rst.Open , , , , adCmdText
Do While Not rst.EOF
Debug.Print rst.Fields("高値")
rst.MoveNext
Loop
rst.Close
cn.Close
Set rst = Nothing
Set cn = Nothing
Set cmd = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
私は力なく、直接の答えを答えられそうにありません。
しかし、コーディング内容でなく、環境などの問題ではないでしょうか。私はVB6を使える環境になく、アクセス2000で下記やって見ました。うまくいくようですよ。
参考にしてください。
エクセルにシートの「Sheet1」で
下記を作りました。
(でたらめデータですみません)
A列 B列 C列
氏名株価高値
山田18.258
大田18.457
大川78
近藤77
下田18
大塚41
にしました。
Private Sub Command1_Click()
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.Properties("Extended Properties") = "Excel 8.0"
cn.Properties("Data Source") = "C:\Documents and Settings\xxx\xxxxxx\あああ.xls"
cn.Open
Dim cmd As ADODB.Command
Dim mySQL As String
mySQL = "update [Sheet1$] set 高値 =10000 where 高値 = 7"
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = mySQL
cmd.Execute
Set rst = New ADODB.Recordset
rst.Source = "Select * From [Sheet1$]"
rst.ActiveConnection = cn
rst.CursorType = adOpenDynamic
rst.Open , , , , adCmdText
'------
Do While Not rst.EOF
MsgBox Nz(rst.Fields("株価"))
rst.MoveNext
Loop
'-----
rst.Close
cn.Close
Set rst = Nothing
Set cn = Nothing
Set cmd = Nothing
End Sub
結果
氏名株価高値
山田18.258
大田18.4510000
大川78
近藤710000
下田18
大塚41
Msgboxも正しく出ます。
データ関連以外は変えてませんが、
NZ関数は、止まるのでアクセス用に入れました。
早速答えていただき有難うございます。
あのプログラムを実行すると最終的にEXCELファイルが壊れるという状況でしたが、ACCESS2000では問題なかったですか。ということはプログラムには問題がないのでしょうか? あと指摘して頂いた環境設定ではEXCELファイルのプロパティ等をいじってみましたが、うまくいきませんでした。とりあえずいじれる所をいじって頑張ってみます。
有難うございました。
No.2
- 回答日時:
見たところ全然動かない理由が不明です。
VB6.0Learning+EXCEL2003で実行しましたが
高値=7 のとき 10000になりました。
プロジェクトのツールバーで参照設定やコンポーネントでADOを使用可能にされてますか?
#1さんのMsgBox Nz(rst.Fields("株価"))は"高値"
ですね。
回答有難うございます。
まったく動かないという訳ではなく、更新したファイルが何故かエクセルでは開くことが出来ないという状態でした。
->プロジェクトのツールバーで参照設定やコンポーネントでADOを使用可能にされてますか?
確信したところ、チェックは入っていました。
結局、原因はわからずじまいでしたが、Recordsetに関連した余分なプログラム個所を取り除くことで正常動作しました。
有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルのVBAの標準モジュール...
-
PowerPointVBAでスライドマスタ...
-
[VBA]CDOメッセージ送信エラー
-
VBScriptでExcelのグラフを貼り...
-
VBAからPDFファイルにパスワー...
-
オブジェクトが見つかりません
-
VBA:オートシェイプの線の長...
-
Excel VBA グラフを任意sheetに...
-
sheetsメソッドの失敗
-
テキストボックス中の文字列の...
-
上下の位置揃えについて
-
EXCEL VBA オートシェイプナン...
-
VBScriptからDLL参照設定したい
-
TXTファイルをMDBファイ...
-
AccessからOutlookを立上げファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
PowerPointVBAでスライドマスタ...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルマクロエラー「'Cells'...
-
ある文字列が全て数字であるか...
-
VBAについてです。 初心者です...
-
VBScriptでファイルの日時順(降...
-
Excelでフィルタをかけると警告...
-
VBAからPDFファイルにパスワー...
-
VBで引数にDictionaryオブジェ...
-
このように書くべきですか? { ...
-
EXCEL VBA オートシェイプナン...
-
テキストボックス中の文字列の...
-
エクセルVBAでcode128のバー...
-
[VBA]CDOメッセージ送信エラー
-
オブジェクトが見つかりません
おすすめ情報