Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4381 / 13644 ツリー ←次へ | 前へ→

【56984】アクセスとのやり取り Excelアクセス 08/7/16(水) 14:20 質問[未読]
【56985】Re:アクセスとのやり取り ハチ 08/7/16(水) 15:09 発言[未読]
【56988】Re:アクセスとのやり取り Excelアクセス 08/7/16(水) 15:54 質問[未読]
【56991】Re:アクセスとのやり取り ハチ 08/7/16(水) 17:08 発言[未読]
【56992】Re:アクセスとのやり取り neptune 08/7/16(水) 17:25 回答[未読]
【56993】Re:アクセスとのやり取り neptune 08/7/16(水) 17:28 発言[未読]
【56999】Re:アクセスとのやり取り kanabun 08/7/17(木) 0:29 発言[未読]
【57000】Re:アクセスとのやり取り kanabun 08/7/17(木) 0:31 発言[未読]
【57001】Re:アクセスとのやり取り kanabun 08/7/17(木) 0:34 発言[未読]
【57004】Re:アクセスとのやり取り Excelアクセス 08/7/17(木) 10:26 お礼[未読]
【57006】Re:アクセスとのやり取り Excelアクセス 08/7/17(木) 11:17 質問[未読]
【57012】Re:アクセスとのやり取り ハチ 08/7/17(木) 13:46 回答[未読]
【57015】Re:アクセスとのやり取り neptune 08/7/17(木) 14:08 発言[未読]
【57018】Re:アクセスとのやり取り Excelアクセス 08/7/17(木) 15:23 お礼[未読]

【56984】アクセスとのやり取り
質問  Excelアクセス  - 08/7/16(水) 14:20 -

引用なし
パスワード
   アクセスのDBへ保存と読み込みをする場合に何か設定することはあるでしょうか?
同じ、エクセル2003を使用して、あるパソコンでは動作してあるパソコンでは動作しないとという現象に悩まされています。パソコンは同一機種でエクセルも2003を使用しています。アクセスとリンクするのは初めてですので、お分かりの方いらっしゃいましたらお教えて下さい。
お手数おかけしますが、お願いいたします。

【56985】Re:アクセスとのやり取り
発言  ハチ  - 08/7/16(水) 15:09 -

引用なし
パスワード
   ▼Excelアクセス さん:
>アクセスのDBへ保存と読み込みをする場合に何か設定することはあるでしょうか?
>同じ、エクセル2003を使用して、あるパソコンでは動作してあるパソコンでは動作しないとという現象に悩まされています。パソコンは同一機種でエクセルも2003を使用しています。アクセスとリンクするのは初めてですので、お分かりの方いらっしゃいましたらお教えて下さい。
>お手数おかけしますが、お願いいたします。

『どうやって』アクセスとデータをやりとりしているのか? を、
書かないと、わかりませんよ。

【56988】Re:アクセスとのやり取り
質問  Excelアクセス  - 08/7/16(水) 15:54 -

引用なし
パスワード
   ▼ハチ さん:
>▼Excelアクセス さん:
>>アクセスのDBへ保存と読み込みをする場合に何か設定することはあるでしょうか?
>>同じ、エクセル2003を使用して、あるパソコンでは動作してあるパソコンでは動作しないとという現象に悩まされています。パソコンは同一機種でエクセルも2003を使用しています。アクセスとリンクするのは初めてですので、お分かりの方いらっしゃいましたらお教えて下さい。
>>お手数おかけしますが、お願いいたします。
>
>『どうやって』アクセスとデータをやりとりしているのか? を、
>書かないと、わかりませんよ。

申し訳ありませんです。

構文は以下の通りです。
Private Sub CommandButton1_Click()
Dim count_DATA As Integer
Dim IRow As Long

'シートクリア
Worksheets("DATA").Activate
Worksheets("DATA").Range(Cells(2, 1), Cells(500, 49)).Value = ""

'アクセスから情報取り込み
Dim myCon As ADODB.Connection
Dim myRS As ADODB.Recordset
 
Set myCon = New ADODB.Connection
myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=\データ.mdb"

 Set myRS = New ADODB.Recordset
 
 On Error Resume Next 'DB空の処理
  
 myRS.Open "データベース", myCon, adOpenDynamic, adLockOptimistic
 ⇒(adOpenDynamicがコンパイルエラーになります。)
 myRS.Update
 
 myRS.MoveFirst
 Do Until myRS.EOF = True
  
   count_DATA = 2
   Do Until Worksheets("DATA").Cells(count_DATA, "A").Value = ""
    count_DATA = count_DATA + 1
   Loop
   
   Worksheets("DATA").Cells(count_DATA, "A").Value = myRS![番号]

以上になります。お願いいたします。

【56991】Re:アクセスとのやり取り
発言  ハチ  - 08/7/16(水) 17:08 -

引用なし
パスワード
   ▼Excelアクセス さん:

> myRS.Open "データベース", myCon, adOpenDynamic, adLockOptimistic
> ⇒(adOpenDynamicがコンパイルエラーになります。)

あまり詳しくないのですが・・・参考までに

コンパイルエラーになる原因は、正直わかりません。
ですが、adOpenDynamicを使う必要があるんですか?

Jet.OLEDBでadOpenDynamicはサポートしてないようなことを、
以前に見た記憶があります。
自分の環境(Excel2000,Access2000,参照設定2.8 lib)で試してみましたが、
Debug.Print myRS.LockTypeの結果が"3"になりました(つまりadOpenStatic)

adOpenStatic か adOpenKeyset で試してみてはどうですか?

【56992】Re:アクセスとのやり取り
回答  neptune  - 08/7/16(水) 17:25 -

引用なし
パスワード
   ▼ハチ さん:
▼Excelアクセス さん:
こんにちは

ハチ さんwrote
>Jet.OLEDBでadOpenDynamicはサポートしてないようなことを、
>以前に見た記憶があります。
サポートしてません。
//////////MSDNより引用/////////////
動的カーソルは、サーバー カーソルエンジンで Access データベース
へのサポートはされていません。静的カーソルが代わりに返されます。
///////////////////////////////////////

>adOpenStatic か adOpenKeyset で試してみてはどうですか?
MSDNに書かれているようにadOpenStaticが返ってきます。ので一票。

ちょっと気になったのですが、
on error resume next を使われていますが、
recordsetがrecordを持たない時は
bof、eofプロパティが同時にtureになるのでそれで判断できます。

【56993】Re:アクセスとのやり取り
発言  neptune  - 08/7/16(水) 17:28 -

引用なし
パスワード
   書き忘れ
>サポートしてません。
が、使用しても暗黙の変換が行われてエラーにはならんと思います。
なぜエラーになるのかはわかりません。

PCのMDACのバージョンが違うとか?はないですか?

【56999】Re:アクセスとのやり取り
発言  kanabun  - 08/7/17(木) 0:29 -

引用なし
パスワード
   ▼Excelアクセス さん:

よこから失礼します。ぼくも詳しくないのですが、

> myRS.Update
って、 必要なんですか? Update するんですか?

単純化して、↓のようではだめなんでしょうか?

 '(途中から)
 'シートクリア
 Worksheets("DATA").Range(Cells(2, 1), Cells(500, 49)).ClearContents
 
 'アクセスから情報取り込み
 Dim myCon As ADODB.Connection
 Dim myRS As ADODB.Recordset
 Dim mySQL As String
 
 Set myCon = New ADODB.Connection
 myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
       & "Data Source=\データ.mdb"

 mySQL = "SELECT 番号 FROM テーブル名" '--- 適切な SQL文を書く
 
 Set myRS = New ADODB.Recordset
 myRS.Open mySQL, myCon
 Worksheets("DATA").Range("A2").CopyFromRecordset myRS
 myRS.clsoe
 myCon.Close

【57000】Re:アクセスとのやり取り
発言  kanabun  - 08/7/17(木) 0:31 -

引用なし
パスワード
   タイプミスしてました m(__)m
> myRS.clsoe
  ↓
 myRS.Close

【57001】Re:アクセスとのやり取り
発言  kanabun  - 08/7/17(木) 0:34 -

引用なし
パスワード
   なんどもすみません、
また、おかしな文をみつけました

> 'シートクリア
> Worksheets("DATA").Range(Cells(2, 1), Cells(500, 49)).ClearContents
   ↓

 With Worksheets("DATA")
   .Range(.Cells(2, 1), .Cells(500, 49)).ClearContents
 End With

【57004】Re:アクセスとのやり取り
お礼  Excelアクセス  - 08/7/17(木) 10:26 -

引用なし
パスワード
   ▼kanabun さん:
>なんどもすみません、
>また、おかしな文をみつけました
>
>> 'シートクリア
>> Worksheets("DATA").Range(Cells(2, 1), Cells(500, 49)).ClearContents
>   ↓
>
> With Worksheets("DATA")
>   .Range(.Cells(2, 1), .Cells(500, 49)).ClearContents
> End With

ハッチさん、ネプチューンさん、kanabunさん、お返事遅れてすいません。
これより会議に入ってしまいますので、お昼の休憩にトライします。
うまく動作しない場合はお願いします。

【57006】Re:アクセスとのやり取り
質問  Excelアクセス  - 08/7/17(木) 11:17 -

引用なし
パスワード
   ▼Excelアクセス さん:
>▼kanabun さん:
>>なんどもすみません、
>>また、おかしな文をみつけました
>>
>>> 'シートクリア
>>> Worksheets("DATA").Range(Cells(2, 1), Cells(500, 49)).ClearContents
>>   ↓
>>
>> With Worksheets("DATA")
>>   .Range(.Cells(2, 1), .Cells(500, 49)).ClearContents
>> End With
>
>ハッチさん、ネプチューンさん、kanabunさん、お返事遅れてすいません。
>これより会議に入ってしまいますので、お昼の休憩にトライします。
>うまく動作しない場合はお願いします。

adOpenStatic か adOpenKeyset に変更して実行したのですが、
”コンパイルエラー”
”プロジェクトまたはライブラリが見つかりません。”
のエラーが出てしまいます。
ちなみにMDACのバージョンとは・・?
すいませんよろしくお願いします。

【57012】Re:アクセスとのやり取り
回答  ハチ  - 08/7/17(木) 13:46 -

引用なし
パスワード
   ▼Excelアクセス さん:
>adOpenStatic か adOpenKeyset に変更して実行したのですが、
>”コンパイルエラー”
>”プロジェクトまたはライブラリが見つかりません。”
>のエラーが出てしまいます。

参照設定が違っているということでは?
ActiveX Data Objects 2.x を違うバーションを選択してください。

>ちなみにMDACのバージョンとは・・?

ネットで検索すれば、詳しい説明が出てきます。

【57015】Re:アクセスとのやり取り
発言  neptune  - 08/7/17(木) 14:08 -

引用なし
パスワード
   ▼Excelアクセス さん:
こんにちは

>adOpenStatic か adOpenKeyset に変更して実行したのですが、
>”コンパイルエラー”
>”プロジェクトまたはライブラリが見つかりません。”
>のエラーが出てしまいます。
ん〜。困りましたね。

ただ、言える事は、古いバージョンから新しいバージョンへUPDATEした場合は
全てのコンポーネント存在しますが、ver2.6以降の新しいバージョンのみを
インストールした場合は、jet関係のコンポーネントが含まれなくなりました。

出ているエラーからして、もしかしたらこの事が関係あるかもしれません。

それと、もし、同じPC内のmdbでは無く、別のPCのmdbに接続しようとしている
場合は、Host側とClient側のMDACのバージョンは同じでなければエラーに
なると思います。・・・この辺りはExcelアクセス さんの情報からは不明なので。

まぁ調べてみて下さい。

>ちなみにMDACのバージョンとは・・?
MDACってのはDAOやらADOやらのDBオブジェクトの塊?です。
MSの資料を紹介します。
「Microsoft Data Access Components (MDAC)」
h tp://msdn.microsoft.com/ja-jp/library/aa139673.aspx
「MDAC のバージョンを確認する方法」
h tp://support.microsoft.com/kb/301202/ja

【57018】Re:アクセスとのやり取り
お礼  Excelアクセス  - 08/7/17(木) 15:23 -

引用なし
パスワード
   ▼neptune さん:
>▼Excelアクセス さん:
>こんにちは
>
>>adOpenStatic か adOpenKeyset に変更して実行したのですが、
>>”コンパイルエラー”
>>”プロジェクトまたはライブラリが見つかりません。”
>>のエラーが出てしまいます。
>ん〜。困りましたね。
>
>ただ、言える事は、古いバージョンから新しいバージョンへUPDATEした場合は
>全てのコンポーネント存在しますが、ver2.6以降の新しいバージョンのみを
>インストールした場合は、jet関係のコンポーネントが含まれなくなりました。
>
>出ているエラーからして、もしかしたらこの事が関係あるかもしれません。
>
>それと、もし、同じPC内のmdbでは無く、別のPCのmdbに接続しようとしている
>場合は、Host側とClient側のMDACのバージョンは同じでなければエラーに
>なると思います。・・・この辺りはExcelアクセス さんの情報からは不明なので。
>
>まぁ調べてみて下さい。
>
>>ちなみにMDACのバージョンとは・・?
>MDACってのはDAOやらADOやらのDBオブジェクトの塊?です。
>MSの資料を紹介します。
>「Microsoft Data Access Components (MDAC)」
>h tp://msdn.microsoft.com/ja-jp/library/aa139673.aspx
>「MDAC のバージョンを確認する方法」
>h tp://support.microsoft.com/kb/301202/ja

いろいろとアドバイスありがとうございました。
参照設定とadOpenStaticに変えましたら動作するようになりました。
参照設定を設定したつもりが・・つもりでした・・
VBAは本当に奥が深いので今後も勉強したいと思います。
また、質問するときはよろしくお願いします。

4381 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free