問題があります。最初の反復は正しく行われますが、2番目の反復はSet tdf = db.TableDefs("temp_table")
になります(上の行が作成されていても、アクセスは "temp_table"を見つけることができません)。間違いなく、新しいインポートされたテーブルのポインタが間違っています。MS Access VBA内でオブジェクトを操作する方法
dirfilename = Dir(strfilename & "\")
Do While dirfilename <> ""
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "temp_table",
strfilename & "\" & dirfilename, True
Set tdf = db.TableDefs("temp_table")
.
.
.
.
db.TableDefs.Refresh
dirfilename = Dir
Loop
お手伝いできますか?
以降の反復では、新しいテーブルを作成するのではなく、最初の反復で作成されたテーブルにレコードを追加しようとしています。複数のスプレッドシートをインポートしようとしていますか?なぜあなたはTableDefsが必要ですか? – June7
私は同じフォルダにある連続したブックからデータを追加しようとしています(したがって私は 'dir'関数を配置しました)。最初の反復の後、2番目の "temp_table"(以前の "temp_table"を削除する抜粋を投稿に貼り付けるのを忘れていました)には現代的な値が含まれていますが、新しいテーブルです。私は前のものを削除します。もちろん、私はそれらを "temp_table2"などと呼ぶことができますが、問題がまだ発生するのではないかと心配しています。プログラミング標準に関しては正しくありません。 –
個人的には、シートの構造が決して変わらない場合は、テーブルを作成して削除しません。私はちょうど挿入と永続的なテーブルのレコードを削除する - それは '一時的な'テーブルと呼ばれても、テーブルは永久的であり、レコードは一時的です。とにかくなぜテンポラリテーブルですか?これらの記録はどうなりますか? – June7