Access VBA質問箱 IV

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

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


65 / 500 ページ ←次へ | 前へ→

【12011】Re:CSVファイルの取込方法
回答  よろずや  - 11/6/21(火) 21:42 -

引用なし
パスワード
   ▼あおぎん さん:
>この手のファイルはいつもインポート定義を利用して取り込んでいたので、
>今回1行ずつ確認しながら取り込む方法がないかと検索してみたのですが、
>Line Input #1 や Split関数を利用して、主データを取り込むのがせいいっぱいでした。

何が問題なのでしょう。
Line Input で読み込んだデータを Split関数で分割し、
左端が DT なら直前のデータと紐付ける。
それを地道にやるだけです。
・ツリー全体表示

【12010】CSVファイルの取込方法
質問  あおぎん  - 11/6/21(火) 19:27 -

引用なし
パスワード
   いつも参考にさせていただいています。

現在、外部システムを使用して行った処理の結果データが下記のようなCSVファイルで出力されます。
結果データの確認のために、データを取り込んで処理を行いたいのですが、不定形なデータのため、取込みに苦労しています。

◆CSVファイル◆
番号,年月,形式,都道府県,処理コード,・・・
0001,42304,AA,福岡県,1転出,
DT,1,転出先,山口県, 
DT,2,転出日,H2305,
0002,42304, AA,山口県,3死亡,
DT,5,死亡日,H2305,
0003,42304,AA,福岡県,6他会社,
DT,7,事業所名,●●会社,
DT,8,所在地,福岡県福岡市●●,
DT,9,入社日,H2304,
・・以下続く

番号:0001のデータを 処理コード:1転出 として処理した際、
処理コードごとに設定されている副処理項目を記入してデータ処理を行うのですが、
結果データの出力が上記のように、主データ+不特定行数の副処理データ(頭にDTがつく・また先頭行とは無関係の内容)という形式で出力されます。

この副処理データが不特定の複数行でありかつ主データと紐ついていないため、
取込に苦労しています。

この手のファイルはいつもインポート定義を利用して取り込んでいたので、
今回1行ずつ確認しながら取り込む方法がないかと検索してみたのですが、
Line Input #1 や Split関数を利用して、主データを取り込むのがせいいっぱいでした。

以下の(ア)か(イ)のように、主データの番号データをもった形式で取り込みたいのですが、可能でしょうか?

こういう関数が使えるとか、考え方のヒントになるようなものでもじゅうぶんです。

よろしくご教示のほど、お願いいたします。


(ア) (副処理項目は最大でも20程度)
番号 処理コード 転出先 転出日 死亡日 事業所名   所在地  入社日
1   1     山口県 H2305
2   3                H2305
3   6                     ●●会社 福岡県福岡市●● H2304

(イ)
番号 項目コード 項目内容
1   転出先  山口県
1   転出日  H2305
2   死亡日  H2305
3   事業所名 ●●会社
3   所在地  福岡県福岡市●●
3   入社日  H2304

(win2000 Access2000)
・ツリー全体表示

【12009】Re:アクセス初心者です バックアップに...
お礼  初心者です  - 11/6/8(水) 10:19 -

引用なし
パスワード
   ▼YU-TANG さん:
>▼はしもと さん:
>>これは何が原因でしょうか?
>
>この辺とか、関係ないでしょうか。
>
>detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1344112313

有難うございました。
参照してみました。助かりました。
・ツリー全体表示

【12008】アクセスを立ち上げる際に・・・
質問  初心者です  - 11/6/8(水) 10:16 -

引用なし
パスワード
   会社の業務管理データを以前に誰かが作成したようなのですが
そのデータベースを開く際に

1.シフトを押しっ放しにして開く⇒レポートやフォームの編集ができる
2.そのまま開く⇒打ち込みをする(編集は全くできない)

という状態になります。
これはどういうことでしょうか???

また、どの部分がどこと関連しているか?
を確認する方法などはありますでしょうか?

全く初心者で質問自体が失礼かと思いますが
よろしくお願い致します。
・ツリー全体表示

【12007】Re:アクセス初心者です バックアップに...
回答  YU-TANG  - 11/6/3(金) 9:31 -

引用なし
パスワード
   ▼はしもと さん:
>これは何が原因でしょうか?

この辺とか、関係ないでしょうか。

detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1344112313
・ツリー全体表示

【12006】Re:条件付き書式
お礼  北風  - 11/6/2(木) 11:00 -

引用なし
パスワード
   ▼小僧 さん:
>▼北風 さん:
>こんにちは。
>
>> フォームのテキストボックス内の特定コメント(新価)文字のみ
>> 色をつけたいのですが出来ますでしょうか。
>
>
>残念ながら、条件付き書式では対応が難しそうですね。
>
>Accessのバージョンに因って方法は違いますが
>幾つかの方法によって特定文字だけ色を付ける事はできそうです。
>
>YU-TANGさんのサイトに詳しい解説がありますので
>参照されてみてはいかがでしょうか。
>
>
>YU-TANG's MS-Access Discovery
>検索語句を強調表示する方法
>h tp://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmImpressiveSearchWord

回答有難うございます。
断念します。。
・ツリー全体表示

【12005】Re:条件付き書式
回答  小僧  - 11/6/2(木) 9:29 -

引用なし
パスワード
   ▼北風 さん:
こんにちは。

> フォームのテキストボックス内の特定コメント(新価)文字のみ
> 色をつけたいのですが出来ますでしょうか。


残念ながら、条件付き書式では対応が難しそうですね。

Accessのバージョンに因って方法は違いますが
幾つかの方法によって特定文字だけ色を付ける事はできそうです。

YU-TANGさんのサイトに詳しい解説がありますので
参照されてみてはいかがでしょうか。


YU-TANG's MS-Access Discovery
検索語句を強調表示する方法
h tp://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmImpressiveSearchWord.html
・ツリー全体表示

【12004】アクセス初心者です バックアップについ...
質問  はしもと  - 11/6/1(水) 15:31 -

引用なし
パスワード
   アクセスでデータベースを作成していたのですが
いつの間にか自動バックアップ? でしょうか?
新しいアクセスがデスクトップに出来ていました。

元=管理H23.5
新=管理H23.5_2011-05-23_Backup

これができてから、元のファイルを開くのに
シフトを押しっ放しにしないと開かない状況になりました。

これは何が原因でしょうか?
・ツリー全体表示

【12003】条件付き書式
質問  北風  - 11/6/1(水) 11:03 -

引用なし
パスワード
   フォームのテキストボックス内の特定コメント(新価)文字のみ色をつけたいのですが出来ますでしょうか。条件付き書式で(新価)と等しいと設定すると色は付くのですが、その後に続く文字を入力すると色が消えてしまいます。
・ツリー全体表示

【12002】Re:フォーム上のボタンをコントロール「...
お礼  さと  - 11/5/29(日) 23:22 -

引用なし
パスワード
   ▼小僧 さん:
>▼さと さん:
今晩は
>の 丸投げに相当していませんか?
いや!!
・ツリー全体表示

【12001】Re:二つのテーブルを比較する方法
お礼  KANA  - 11/5/25(水) 17:22 -

引用なし
パスワード
   ▼小僧 さん:

なるほどです。
9.2の下桁にも数値があるのかもしれないということも
考えられるんですね。
もう一度データを確認してみます。
Accessをやるときは、いつも何かトラブルに見舞われ、
必死になってしまいます。

今回は、本当にありがとうございました。


>▼KANA さん:
>こんにちは。
>
>> うまくいきました。
>
>まずは結果が出まして何よりです。
>
>
>> 数字の箇所なんですが、
>> たとえば、新データ9.2 旧データ9.2 TypeName 両方ともDouble
>
>当方の手元にデータがある訳ではないので
>かなりあてずっぽうになってしまいますが、
>
>フィールドやコントロールに表示する小数点以下桁数の定義について
>h tp://office.microsoft.com/ja-jp/access-help/HP005248499.aspx
>
>に書いてある通り、表示する桁数のみ変更する事が可能です。
>
>小数1桁までを表示する様な設定になっていると、
>実際のデータは 9.15 だったり 9.24 だったりしても
>見た目は同じ 9.2に見える事になります。
>
>まずはこの辺を疑ってみましょう。
・ツリー全体表示

【12000】Re:二つのテーブルを比較する方法
発言  小僧  - 11/5/25(水) 12:12 -

引用なし
パスワード
   ▼KANA さん:
こんにちは。

> うまくいきました。

まずは結果が出まして何よりです。


> 数字の箇所なんですが、
> たとえば、新データ9.2 旧データ9.2 TypeName 両方ともDouble

当方の手元にデータがある訳ではないので
かなりあてずっぽうになってしまいますが、

フィールドやコントロールに表示する小数点以下桁数の定義について
h tp://office.microsoft.com/ja-jp/access-help/HP005248499.aspx

に書いてある通り、表示する桁数のみ変更する事が可能です。

小数1桁までを表示する様な設定になっていると、
実際のデータは 9.15 だったり 9.24 だったりしても
見た目は同じ 9.2に見える事になります。

まずはこの辺を疑ってみましょう。
・ツリー全体表示

【11999】Re:二つのテーブルを比較する方法
質問  KANA  - 11/5/24(火) 16:12 -

引用なし
パスワード
   ▼小僧 さん:

とても分かりやすいアドバイスをありがとうございました。
言われたとおりに、Valueを付け加えたところうまくいきました。

小僧さんに教えてもらったSQLも試してみました。

ありがとうございました。

一つだけ、どうしても分からないことがあるのですが、

一部、どんなに値を確認してみても、TypeNameも値も一緒なのに、値が違うというように認識されてしまうものがありました。

Dictionary でやってみても、SQLでやってみても、全く同じ結果になりました。

数字の箇所なんですが、
たとえば、新データ9.2 旧データ9.2 TypeName 両方ともDouble

私にはすべて同じように感じるのですが、原因があるとすれば、何が考えられるのでしょうか?

度々、すみません。

>▼KANA さん:
>こんにちは。
>
>>>      MyDic.Add "1", rs(0)
>>>      MyDic.Add "2", rs(0).Value
>>
>> 上記の部分で rs(0)とrs(0).value の意味が
>> いまいちわかりませんので教えていただけないでしょうか?
>
>ごめんなさい。
>KANAさんの記述を使うと
>
>Midic.Add "1", rs![F1]
>Midic.Add "2", rs![F1].Value
>
>の方が解りやすかったですね。
>
>rs(0) は rs の一番初めのフィールドを表しています。
>
>
>>rs(0)のほうはFieldとでてきてて
>
>rs![F1] をDictionary オブジェクトの Item 値に代入すると
>rs![F1] の値ではなく、ADODB.Recordset で定義されている
>フィールドオブジェクトへの参照を代入してしまっている事を意味します。
>
>初めに投稿されたコードですと、
>
>>>> rs.Close
>>>> Set rs = Nothing
>
>の箇所で rs への参照が切れてしまっている為、
>フィールドも参照できなくなりエラーが発生しております。
>
>値だけをDictionaryオブジェクトに入力するのであれば
>rs![F1].Value と明示的に指定しなければいけないという事です。
>
>
>KANAさんのコードをそのまま生かすとなると、
>
>>  MyVal = Array(rs![F1], rs![F2], rs![F3], rs![F4], rs![F5], rs![F6], rs![F7], _
>>        rs![F8], rs![F10], rs![F11], rs![F12], rs![F13], rs![F14], rs![F17])
>
>  MyVal = Array(rs![F1].Value, rs![F2].Value, rs![F3].Value, rs![F4].Value, rs![F5].Value, rs![F6].Value, rs![F7].Value, _
>        rs![F8].Value, rs![F10].Value, rs![F11].Value, rs![F12].Value, rs![F13].Value, rs![F14].Value, rs![F17].Value)
>
>となりますね。
>
>
>> Accessで、こういうことをやる場合は、
>> Dictionaryはあまり使わないほうがいいのでしょうか?
>
>当方でしたら、SQLで片づけてしまうかと思われます。
>提示されたコードのうち、左3つを比較するSQLでしたら
>
>SELECT
>  旧TBL.key
> , IIf([旧TBL]![F1]=[新TBL]![F2],"",[新TBL]![F2]) AS 比較1
> , IIf([旧TBL]![F2]=[新TBL]![F3],"",[新TBL]![F3]) AS 比較2
> , IIf([旧TBL]![F3]=[新TBL]![F4],"",[新TBL]![F4]) AS 比較3
>FROM
>  旧TBL
>INNER JOIN
>  新TBL
>ON 旧TBL.key = 新TBL.key
>WHERE NOT(
>     ([旧TBL]![F1]=[新TBL]![F2])
>   AND ([旧TBL]![F2]=[新TBL]![F3]) 
>   AND ([旧TBL]![F3]=[新TBL]![F4])
>         )
>
>
>上記のSQLをクエリのSQLビューに張り付け実行すると
>結果が出るかと思われます。
>(コピーペーストする際は
> 全角スペースは半角スペースに変換して下さい)
>
>ただ、自分に慣れている方法で結果を出すことは
>決して悪い事だと思いませんので
>まずはコードの問題を解決した後
>ご興味があればSQLにも挑戦されてみてはいかがでしょうか。
・ツリー全体表示

【11998】Re:二つのテーブルを比較する方法
回答  小僧  - 11/5/23(月) 16:17 -

引用なし
パスワード
   ▼KANA さん:
こんにちは。

>>      MyDic.Add "1", rs(0)
>>      MyDic.Add "2", rs(0).Value
>
> 上記の部分で rs(0)とrs(0).value の意味が
> いまいちわかりませんので教えていただけないでしょうか?

ごめんなさい。
KANAさんの記述を使うと

Midic.Add "1", rs![F1]
Midic.Add "2", rs![F1].Value

の方が解りやすかったですね。

rs(0) は rs の一番初めのフィールドを表しています。


>rs(0)のほうはFieldとでてきてて

rs![F1] をDictionary オブジェクトの Item 値に代入すると
rs![F1] の値ではなく、ADODB.Recordset で定義されている
フィールドオブジェクトへの参照を代入してしまっている事を意味します。

初めに投稿されたコードですと、

>>> rs.Close
>>> Set rs = Nothing

の箇所で rs への参照が切れてしまっている為、
フィールドも参照できなくなりエラーが発生しております。

値だけをDictionaryオブジェクトに入力するのであれば
rs![F1].Value と明示的に指定しなければいけないという事です。


KANAさんのコードをそのまま生かすとなると、

>  MyVal = Array(rs![F1], rs![F2], rs![F3], rs![F4], rs![F5], rs![F6], rs![F7], _
>        rs![F8], rs![F10], rs![F11], rs![F12], rs![F13], rs![F14], rs![F17])

  MyVal = Array(rs![F1].Value, rs![F2].Value, rs![F3].Value, rs![F4].Value, rs![F5].Value, rs![F6].Value, rs![F7].Value, _
        rs![F8].Value, rs![F10].Value, rs![F11].Value, rs![F12].Value, rs![F13].Value, rs![F14].Value, rs![F17].Value)

となりますね。


> Accessで、こういうことをやる場合は、
> Dictionaryはあまり使わないほうがいいのでしょうか?

当方でしたら、SQLで片づけてしまうかと思われます。
提示されたコードのうち、左3つを比較するSQLでしたら

SELECT
  旧TBL.key
 , IIf([旧TBL]![F1]=[新TBL]![F2],"",[新TBL]![F2]) AS 比較1
 , IIf([旧TBL]![F2]=[新TBL]![F3],"",[新TBL]![F3]) AS 比較2
 , IIf([旧TBL]![F3]=[新TBL]![F4],"",[新TBL]![F4]) AS 比較3
FROM
  旧TBL
INNER JOIN
  新TBL
ON 旧TBL.key = 新TBL.key
WHERE NOT(
     ([旧TBL]![F1]=[新TBL]![F2])
   AND ([旧TBL]![F2]=[新TBL]![F3]) 
   AND ([旧TBL]![F3]=[新TBL]![F4])
         )


上記のSQLをクエリのSQLビューに張り付け実行すると
結果が出るかと思われます。
(コピーペーストする際は
 全角スペースは半角スペースに変換して下さい)

ただ、自分に慣れている方法で結果を出すことは
決して悪い事だと思いませんので
まずはコードの問題を解決した後
ご興味があればSQLにも挑戦されてみてはいかがでしょうか。
・ツリー全体表示

【11997】Re:二つのテーブルを比較する方法
質問  KANA  - 11/5/23(月) 15:18 -

引用なし
パスワード
   ▼小僧 さん:

頂いたコードを記述してみてみました。

>      MyDic.Add "1", rs(0)
>      MyDic.Add "2", rs(0).Value

上記の部分で rs(0)とrs(0).value の意味がいまいちわかりませんので教えていただけないでしょうか?

rs(0)のほうはFieldとでてきてて、rs(0).valueはタイプがでてきていたのですが、
Fieldはなにを指してくれているのか?わからない状態です。
タイプのほうは、値が入っていないとNullとなるのですね?

あと、For i をつかって、すべてのフィールドをチェックしてみようとすると、
  今まで、Nullやタイプ型など取得してきてくれるのに、全部Emptyとなってしまいます。

Accessで、こういうことをやる場合は、Dictionaryはあまり使わないほうがいいのでしょうか?

すみませんが、初心者のため、つまづきまくってます。

どうか、伝授よろしくお願いします

 
>▼KANA さん:
>こんにちは。
>
>普段Accessでコードを書いていると陥りがちな
>暗黙の型変換に問題がありそうですね。
>
>下記の様なコードをテストして
>Dictionaryオブジェクトに格納される値を確認されてみて下さい。
>
>
>Sub TypeNameTest()
>Dim rs As ADODB.Recordset
>Dim MyDic As Object
>
>  Set MyDic = CreateObject("Scripting.Dictionary")
>  Set rs = New ADODB.Recordset
>    rs.CursorType = adOpenKeyset
>    rs.LockType = adLockReadOnly
>
>    rs.Open "新TBL", CurrentProject.Connection, , adCmdTable
>
>    If rs.EOF Then
>      MsgBox "データ入ってないよ!"
>      Exit Sub
>    Else
>            
>      MyDic.Add "1", rs(0)
>      MyDic.Add "2", rs(0).Value
>            
>      Debug.Print TypeName(MyDic("1"))
>      Debug.Print TypeName(MyDic("2"))
>            
>    End If
>  rs.Close: Set rs = Nothing
>  Set MyDic = Nothing
>  
>End Sub
・ツリー全体表示

【11996】Re:フォーム上のボタンをコントロール「...
発言  小僧  - 11/5/23(月) 12:12 -

引用なし
パスワード
   ▼さと さん:
こんにちは。


>宜しくお願い致します。

まず、画面上部の

>本サイトの基本方針をまとめました。こちら をご一読ください。

の こちら のリンク先をお読みになって下さい。

> してはいけない質問について

の 丸投げに相当していませんか?


まずはご自分でできる所までやってみて
解らない所をご質問された方が回答が付きやすくなると思いますよ。


> そのフォーム上に削除実行ボタンを作成しました。

削除ボタンがフォームのヘッダー(またはフッター)部分にあるのか、
詳細の部分にあるのかによって、
データがなかった場合のAccessの動作が異なります。

また、削除ボタンが詳細部分にあった場合は
そのフォームの種類(単票フォーム、帳票フォーム)や
フォームのプロパティにある「追加の許可」によっても
解決する方法が変わってきますので
次回ご質問される際にはそういった情報があると
回答が付きやすくなるかと思われます。
・ツリー全体表示

【11995】Re:二つのテーブルを比較する方法
発言  小僧  - 11/5/23(月) 11:49 -

引用なし
パスワード
   ▼KANA さん:
こんにちは。

普段Accessでコードを書いていると陥りがちな
暗黙の型変換に問題がありそうですね。

下記の様なコードをテストして
Dictionaryオブジェクトに格納される値を確認されてみて下さい。


Sub TypeNameTest()
Dim rs As ADODB.Recordset
Dim MyDic As Object

  Set MyDic = CreateObject("Scripting.Dictionary")
  Set rs = New ADODB.Recordset
    rs.CursorType = adOpenKeyset
    rs.LockType = adLockReadOnly

    rs.Open "新TBL", CurrentProject.Connection, , adCmdTable

    If rs.EOF Then
      MsgBox "データ入ってないよ!"
      Exit Sub
    Else
            
      MyDic.Add "1", rs(0)
      MyDic.Add "2", rs(0).Value
            
      Debug.Print TypeName(MyDic("1"))
      Debug.Print TypeName(MyDic("2"))
            
    End If
  rs.Close: Set rs = Nothing
  Set MyDic = Nothing
  
End Sub
・ツリー全体表示

【11994】フォーム上のボタンをコントロール「使用...
質問  さと  - 11/5/20(金) 23:20 -

引用なし
パスワード
   初心者です。
宜しくお願い致します。
データ削除用フォームを作成しました。
フォーム名はF_データ削除です。
そのフォーム上に削除実行ボタンを作成しました。
 名前はcmd削除です。
その削除実行ボタン“cmd削除”を使用可能、不可能に設定したいのです。

削除する、データがフォーム上ある時は、“cmd削除”は使用可能
データが無い時は使用不可能と設定したいのですが。
宜しくお願い致します。

※データのテキストボックス名は管理番号です。
この、テキストボックス(管理番号)をキーにして、
データある、無いと判断をしたいのですが
御願い致します。
・ツリー全体表示

【11993】二つのテーブルを比較する方法
質問  KANA  - 11/5/20(金) 9:09 -

引用なし
パスワード
   二つのテーブル新TBLと旧TBLが存在します。
この二つのテーブルは全く同じ項目が載っているわけではないので、必要な項目列だけをチェックしたいと思っています

二つのデーブルを比較して、新と旧で中身が変更となっているものはどれなのか?を調べ、
変更TBLに変更を生じた箇所だけをリストアップしていきたいと思ってます。

下記のように作ってみたのですが、途中でどうしてもエラーとなってしまい、先へ進まず悩んでます。

If Mydic.Item(strKey)(u) <> MyVal2(u) Then ’←ココでエラーがでます。(オブジェクトが有効ではありません)

どうかご教授お願いします。
Dictionaryオブジェクトの使い方が間違っているのでしょうか?

Option Compare Database

Sub ChangeData()

'変更した箇所のチェック

Dim rs As ADODB.Recordset
Dim rst As ADODB.Recordset
Dim rsC As ADODB.Recordset
Dim MyVal, MyVal2, MyVal3, MyVal4
Dim lCnt As Long
Dim Mydic As Object
Dim Dic_Change As Object
Dim strKey As String
Dim DC As Long


Set Mydic = CreateObject("scripting.dictionary")
Set Dic_Change = CreateObject("scripting.dictionary")


Set rs = New ADODB.Recordset
  rs.CursorType = adOpenKeyset
  rs.LockType = adLockReadOnly

Set rst = New ADODB.Recordset
  rst.CursorType = adOpenKeyset
  rst.LockType = adLockReadOnly
  
Set rsC = New ADODB.Recordset
  rsC.CursorType = adOpenKeyset
  rsC.LockType = adLockOptimistic


rs.Open "新TBL", CurrentProject.Connection, , adCmdTable
rst.Open "旧TBL", CurrentProject.Connection, , adCmdTable
rsC.Open "変更List", CurrentProject.Connection, , adCmdTable


旧TBLにデータがあったら差異箇所をチェック
DC = rst.RecordCount

If DC > 0 Then


’新TBLのデータをDictionaryオブジェクトを使用してデータを取得

rs.MoveFirst

Do Until rs.EOF
 strKey = rs![KEY]
If Not Mydic.Exists(strKey) Then
  MyVal = Array(rs![F1], rs![F2], rs![F3], rs![F4], rs![F5], rs![F6], rs![F7], _
        rs![F8], rs![F10], rs![F11], rs![F12], rs![F13], rs![F14], rs![F17])
       
  Mydic.Add strKey, MyVal
 
 End If
 rs.MoveNext
Loop

rs.Close
Set rs = Nothing

’もし、新データと同じKeyがあったら、旧データを配列格納し、新データと旧データを比較し、違うものがあれば、新データの値を配列格納し、同じ場合は、””値を格納する
rst.MoveFirst

Do Until rst.EOF
 strKey = rst![KEY]
 If Mydic.Exists(strKey) Then
   MyVal2 = Array(rst![F2], rst![F3], rst![F4], rst![F5], rst![F6], rst![F7], rst![F8], _
        rst![F10], rst![F11], rst![F12], rst![F13], rst![F14], rst![F15], rst![F16])
    

    If Mydic.Exists(strKey) Then
     For u = 0 To UBound(MyVal2)
      
      If Mydic.Item(strKey)(u) <> MyVal2(u) Then ’←ココでエラーがでます。(オブジェクトが有効ではありません)
        lCnt = UBound(MyVal3)
        ReDim Preserve MyVal3(lCnt)
        MyVal3(lCnt) = Mydic.Item(strKey)(u)’新データを格納
       Else
        lCnt = UBound(MyVal3)
        ReDim Preserve MyVal3(lCnt)
        MyVal3(lCnt) = "" ’空白を格納
       End If
     Next u
    End If
   
   Dic_Change.Add strKey, MyVal3
  
  
 End If
 rst.MoveNext
Loop
rst.Close
Set rst = Nothing

Dim MyKey, MyItem

MyKey = Dic_Change.Keys
MyItem = Dic_Change.Items


For i = 0 To UBound(MyKey)
rsC.AddNew
  MyVal4 = Array(rsC![F2], rsC![F3], rsC![F4], rsC![F5], rsC![F6], rsC![F7], _
        rsC![F8], rsC![F9], rsC![F10], rsC![F11], rsC![F12], rsC![F13], rsC![F14], rsC![F15])
 
  rsC![F1] = MyKey(i)
  For u = 0 To UBound(MyVal4)
   rsC!MyVal4(u) = Dic_Change(MyKey(u))(u)
  Next u
  rsC.Update
Next i

  rsC.Close
  Set rsC = Nothing

Else

rs.Close
Set rs = Nothing
rst.Close
Set rst = Nothing
rsC.Close
Set rsC = Nothing


End If

End Sub
・ツリー全体表示

【11992】Re:配列を利用したテーブルのインポート...
お礼  アクセスVBA初心者  - 11/5/18(水) 7:43 -

引用なし
パスワード
    hatena  様

 迅速な返信ありがとうございます。望むとおりの動作が実現いたしました。
 ADO接続に関してはもっと勉強してからにしたいと思います。
 それでは、失礼いたします。
・ツリー全体表示

65 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1078325
(SS)C-BOARD v3.8 is Free