ACCESS上でエクセルファイルをインポートするにおいてそのファイルが存在するかの判定用IF文は
If Dir("C:\インポートファイル.xls") = "" Then MsgBox "インポートファイル.xlsファイルがありません。"
End If
でうまくいくのですが
インポートファイル.xls
______________________________
/シート2/シート3/シート4/
インポート用EXCELファイルのシート1が無いことを判定するときの設定方法がネットを調べても発見することが出来ませんでした、やり方があるようなら教えてください
If Dir("C:\インポートファイル.xls" ※恐らくここに何か追加が必要だとは思うのですが※ ) = "" Then
MsgBox "インポートファイル.xlsファイルのシート1がありません。"
End If
一度質問を登録したのですが、登録失敗していたので再度質問しました。よろしくお願いします。
No.4ベストアンサー
- 回答日時:
下記の文で一応テストしましたが、内容通り動いてくれました。
(わざとシートを抜けた状態でインポートしてみました。)但し、#3の方のエラーコードと違うのでちょっとその辺がどうなのか実際のシートで試してみればいかがですか?又、TransferSpreadsheetの各スイッチ等については、実際の環境の数値に合わせて下さい。くわしくはヘルプに出ていますので確認して下さい。
Private Function インポート()
On Error GoTo Errインポート
Dim strテーブル名 As String
Dim strシート名 As String
Dim intカウント As Integer
Dim strエラーメッセージ As String
intカウント = 1
strエラーメッセージ = ""
DoCmd.RunSQL "delete * from 売上1テーブル"
DoCmd.RunSQL "delete * from 売上2テーブル"
DoCmd.RunSQL "delete * from 売上3テーブル"
DoCmd.RunSQL "delete * from 売上4テーブル"
Do While intカウント <= 4
strテーブル名 = "売上" & intカウント & "テーブル"
strシート名 = "シート" & intカウント & "!"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, strテーブル名, "C:\インポートファイル.xls", True, strシート名 & "A1:C5"
intカウント = intカウント + 1
Loop
MsgBox ("処理終了しました。" & Chr(13) & strエラーメッセージ)
Exit Function
Errインポート:
Select Case Err.Number
Case 3011
strエラーメッセージ = strエラーメッセージ & "," & strシート名 & "が存在しませんでした。"
Resume Next
Case Else
MsgBox (Err.Number & ":" & Err.Description)
Exit Function
End Select
End Function
No.3
- 回答日時:
シート1~4までインポートする構文をそれぞれ作成し、実際にシートが存在したか否かをそのエラーコードで判定してはどうでしょうか?
該当のシートが存在しない場合には、
エラーコード=3125
「'Sheet1$'が見つかりません。有効なパラメータやエイリアス名になっているか、無効な文字や区切り記号がふくまれていないか、または名前が長すぎないかを確認してください。」
が出ます。
このエラーコードをハンドリングして、次処理の分岐を考えては!?
No.2
- 回答日時:
シートが存在しない場合のみテーブルクリアとありますが、シートが存在する場合は、テーブルデータをクリアせずに追加でインポートするとい
う事でしょうか?この回答への補足
VBAで組んでいる流れ的には
【開始】
売上1テーブル(シート1用)をクリア
売上2テーブル(シート2用)をクリア
売上3テーブル(シート3用)をクリア
売上4テーブル(シート4用)をクリア
EXCELファイルにシート1が存在すれば
売上1テーブル(シート1用)にインポートする
存在しないときは
シート1がありませんと表示する
EXCELファイルにシート2が存在すれば
売上2テーブル(シート2用)にインポートする
存在しないときは
シート2がありませんと表示する
EXCELファイルにシート3が存在すれば
売上3テーブル(シート3用)にインポートする
存在しないときは
シート3がありませんと表示する
EXCELファイルにシート4が存在すれば
売上4テーブル(シート4用)にインポートする
存在しないときは
シート4がありませんと表示する
各シートごとに集計処理をする
【終了】
という感じになります。
IF文にてシートの有無の判定ができればそれで問題なくいけると思っているのですが
IF文のみでのシートの有無の判定はできないのでしょうか?
No.1
- 回答日時:
最初に存在判定を行い、全てのシートが無くては実行をキャンセルしなくてはいけないのでしょうか?
Dir関数ではなくて、TransferSpreadsheetを使い、インポートを実行する際に、シート名指定でLoopさせて、シートが存在しなくてErrの時にそのシート名を変数かテーブルに格納しておき、最後にErrのシート名をログにはきだすか、メッセージを出すというのではどうでしょうか?
この回答への補足
早速のご回答ありがとうございます。私の説明不足でデータ読み出しの流れを記入していませんでした。
流れ的には
シート1がある場合はシート1テーブルへインポート
シート1が無い場合はシート1テーブルをクリア
シート2がある場合はシート2テーブルへインポート
シート2が無い場合はシート2テーブルをクリア
という感じになります。
ですのでそのシートが存在しないときはそのシートを無視してつぎの処理に行くという感じになるのです。
なのでシートが有るか無いかの判定文さえ出来ればいいかなと思ってます。
へたくそな説明で申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Access VBAよりシート名を取得したい
その他(データベース)
-
ACCESSのVBで、エクセルファイルの最終行を取得
Excel(エクセル)
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
-
4
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
5
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
6
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
7
アクセスからエクセルのシートを追加して、名前をつける方法
Excel(エクセル)
-
8
Access VBAよりExcelのシート名を取得
その他(データベース)
-
9
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
10
Excelのデータ(数字)をテキスト型としてaccessにインポートする方法
Excel(エクセル)
-
11
ACCESSのクエリで抽出条件「または」は9個までしかかけませんよね…
Access(アクセス)
-
12
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
13
accessへエクセルの複数のシートのインポートの仕方
Access(アクセス)
-
14
ACCESS VBAでのインポート
Access(アクセス)
-
15
ACCESS、フィールドが異なるデータのインポート
Access(アクセス)
-
16
フォームのコントロールのバックカラーの色を変えたい
Visual Basic(VBA)
-
17
Access テキスト型に対する指定桁での0埋め方法
その他(データベース)
-
18
Access インポート
Access(アクセス)
-
19
Accessのスプレッドシートエクスポートで、シートが追加されてしまう
Access(アクセス)
-
20
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのリンクテーブルについて
-
AccessでCSVインポートのゼロサ...
-
ACCESSでのエクセルインポート...
-
accessのエクスポートエラーに...
-
bcpによる、テーブル→CSVファイ...
-
SQL Server 2000 - bulk insert
-
bcpインサートでのフォーマ...
-
DBMAGICのプログラム解析
-
エクスポート時の改行コードに...
-
既に使用されているので、使用...
-
「マスタ」と「テーブル」の違...
-
ACCESSのSQLで、NULLかNULLでな...
-
2つのテーブルから条件に一致...
-
3つ以上のテーブルをUNIONする...
-
重複するキーから一番古い年月...
-
[ BETWEEN ] vs [ >= AND <= ]
-
ACCESS 一番最新の日付の金額...
-
ACCESS2007 フォーム 「バリア...
-
Access VBA Me.Requery レコー...
-
accessテーブル作成クエリを実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessのエクスポートエラーに...
-
Accessのリンクテーブルについて
-
bcpインサートでのフォーマ...
-
エクスポート時の改行コードに...
-
ACCESSでのエクセルインポート...
-
AccessでCSVインポートのゼロサ...
-
SQL Server のデータをCSVファ...
-
SQLServer2005でフラットファイ...
-
既に使用されているので、使用...
-
symfowareのSQL文in句をバッチ...
-
MS-SQLプロシージャでファイル...
-
SybaseのBCPでファイル上書き
-
アクセスのテーブルからエクス...
-
bcpによる、テーブル→CSVファイ...
-
sqlite(spatialite_gui)での...
-
SQLServer2005 クエリ結果のフ...
-
スクリプトファイルの一括実行
-
ACCESSでのCSVデータの自動取り...
-
DBMAGICのプログラム解析
-
CSVファイルのインポートについて
おすすめ情報