Microsoft Access 掲示板

VBAでインポート処理ができたエクセルファイルのみ別フォルダへ移動したい / 10

21 コメント
views
4 フォロー
10
hatena 2023/01/10 (火) 23:06:53 修正

初心者さんのコードについてのアドバイス

コードには適切なインデント(字下げ)を付けましょう。それがいい加減だとコードが読みづらいし、バグが入り込む原因になります。

dname, tblname, sname, destinationFolder に代入するコードがFor Each ... Eachループ内にあるのは無駄ですね。
固定値なので繰り返し代入する必要はないので、For Each ... Eachの前に移動した方がいいでしょう。

For Each f In fl.Filesはフォルダー内のすべてのファイルを取得しますので、拡張子がxlsxかどうか確認するコードが必要になります。私の回答のコードでは、GetExtensionNameで拡張子を取り出して確認してますが、他にLike演算子で下記のようなコードでも可能です。
If f.Name Like "*.xlsx" Then

まずはエラー処理なしのコードで実行してみて、インポートに失敗するのかどうか、エラーが出るのかどうか、確認しましょう。そしてその原因が何か特定しましょう。
その原因によって、コードにエラー処理(エラー無視も含む)をすべきなのか、それとも別の対処法がいいかのか、変わってくるでしょう。(エクセルファイルが壊れている、フィールド名が異なっている、他のユーザーがエクセルをファイルを編集中など....)

通報 ...