OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Dirで取得したFile名をTblに書き出したいのですが・・・

  • すぐに回答を!
  • 質問No.173489
  • 閲覧数68
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 80% (25/31)

何のカテゴリで質問すればいいのか・・・すみません
お願いします。
>Access97のVBAを使用してNT4.0Server上にあるフォルダ内のFile名
を取得し存在チェックをかけられないか?と考えております。
Dosバッチみないな物を考えていましたが、どのような記述が適切
なのか迷っております。
・変数内で処理する方法が適切か?
・TBLに書き出した方が適切か?
>双方の記述方法をご教授お願い致します。
>また、どちらが適切なのかを教えて頂けたら幸いです。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル9

ベストアンサー率 48% (24/49)

忘れてましたけどさっきのサンプルは
アクションクエリを使用しているため
ファイル名に’があるとエラー起こします。

回避方法は、アクションクエリをやめて、テーブルをOpenしてレコードに
AddNewしていってください。
ではでは
補足コメント
pooh_200x

お礼率 80% (25/31)

できました!
今回は本当にありがとうございました。
VBAの知識が足りず、何度も補足のお手間を取らせすみません。
自分でもう少し解決できるようがんばります。
>では失礼します。
投稿日時 - 2001-11-28 11:09:20
お礼コメント
pooh_200x

お礼率 80% (25/31)

ありがとうございます。
ちょうどVBからVBAに変更している最中でした。
察して頂いたAddItemの所で引っかかって・・・(泣)
すぐ置き換えてみたいと思います。
投稿日時 - 2001-11-28 10:55:16
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル9

ベストアンサー率 48% (24/49)

こんにちは えっと、質問の内容がいまいち理解できなかったので回答の仕方が わからないのですが・・・ Dirでファイル名を取得できた時点で存在チェックは、できているのでは? あと >フォルダ内のFile名を取得 とありますが、Do文でできます。 やり方はテーブルの場合も変数の場合も一緒で、DoとLoopの間(ネスト)部分 がテーブルに格納か変数に格納かの違いです。 あと、サブフォルダ ...続きを読む
こんにちは
えっと、質問の内容がいまいち理解できなかったので回答の仕方が
わからないのですが・・・
Dirでファイル名を取得できた時点で存在チェックは、できているのでは?
あと
>フォルダ内のFile名を取得
とありますが、Do文でできます。
やり方はテーブルの場合も変数の場合も一緒で、DoとLoopの間(ネスト)部分
がテーブルに格納か変数に格納かの違いです。
あと、サブフォルダもチェックする場合は、再起(ある関数内で現在の関数をもう一度呼ぶ)など使用してチェックします。
お礼コメント
pooh_200x

お礼率 80% (25/31)

返事が遅くなり申し訳ございません!
早速の回答ありがとうございます。
>Dirでファイル名を取得できた時点で存在チェックは、できているのでは?
>>おっしゃる通りです。(笑)
質問がわかりにくく申し訳ありません。
Dirで取得した際の記述方法を教えて頂けますでしょうか?
>>お願い致します。
投稿日時 - 2001-11-27 09:51:40


  • 回答No.2
レベル9

ベストアンサー率 48% (24/49)

返答遅れました。 ほんとは、自分で考えるのが一番なんですけど サンプルで取得できます。 フォームにテキスト、ボタン、コンボBOXを置いてください。 再起部分など、STEPで動きを確かめて理解したほうがいいかも 失敗すると永久ループになったりするから・・・ ソースサンプル↓↓↓↓↓↓↓↓↓↓↓↓ Private Sub Command1_Click() ...続きを読む
返答遅れました。
ほんとは、自分で考えるのが一番なんですけど
サンプルで取得できます。

フォームにテキスト、ボタン、コンボBOXを置いてください。

再起部分など、STEPで動きを確かめて理解したほうがいいかも
失敗すると永久ループになったりするから・・・

ソースサンプル↓↓↓↓↓↓↓↓↓↓↓↓


Private Sub Command1_Click()

Dim sDirNm As String

Combo1.Clear
'検索フォルダ
If Right$(Text1.Text, 1) <> "\" Then
sDirNm = Text1.Text & "\"
Else
sDirNm = Text1.Text
End If

Call FlFileChk(sDirNm)

End Sub

Private Sub Form_Load()

Text1.Text = ""
Combo1.Clear
Text1.Text = CurDir

End Sub

Private Function FlFileChk(ByVal sDirNm As String)

Dim sFileNm As String 'ファイル名
Dim sTmpDir() As String 'フォルダ名配列
Dim lCnt As Long '配列カウント

ReDim sTmpDir(0) '配列初期化

'※※※※※※※※※
'ファイル名追加
'※※※※※※※※※
sFileNm = Dir(sDirNm, vbDirectory)

Do Until sFileNm = ""

If sFileNm <> "." And sFileNm <> ".." Then
'ビット単位の比較を行い、フォルダかどうかを調べます。
If (GetAttr(sDirNm & sFileNm) And vbDirectory) = vbDirectory Then
'配列追加
lCnt = UBound(sTmpDir) + 1
ReDim Preserve sTmpDir(lCnt)
sTmpDir(lCnt) = sFileNm
Else
'ファイル名追加
Combo1.AddItem sDirNm & sFileNm
End If
End If

sFileNm = Dir()

Loop

'※※※※※※※※※
'サブフォルダ検索および再起
'※※※※※※※※※
For lCnt = 1 To UBound(sTmpDir)
sFileNm = sTmpDir(lCnt)

If sFileNm <> "." And sFileNm <> ".." Then
'ビット単位の比較を行い、フォルダかどうかを調べます。
If (GetAttr(sDirNm & sFileNm) And vbDirectory) = vbDirectory Then
 ' フォルダであれば、再起します。
Call FlFileChk(sDirNm & sFileNm & "\")
End If
End If

Next

End Function
お礼コメント
pooh_200x

お礼率 80% (25/31)

こんばんわ!
またまた遅くなりすみません
>ほんとは、自分で考えるのが一番なんですけど
>サンプルで取得できます。
確かにおっしゃるとおりです。反省・・・
まだDocmdとIf文を使えるようになったばかりで勉強不足です。
さっそく明日・・・今日でした。試してみます。
では
投稿日時 - 2001-11-28 02:55:21
  • 回答No.3
レベル9

ベストアンサー率 48% (24/49)

どうも、度々先回のサンプルはVBで作成してしまい アクセスでは、一部修正が必要になります。すみません。 ※※※※※※ 変更点 ※※※※※※ オブジェクトの参照部分 .Textなどは使えないから削除した コンボBOXは AddItem がないのでテーブルを使用し連結させた Tbl01 というテーブルを作成 FileNm というフィールド名でデータ型 テキスト サイズは 100~250く ...続きを読む
どうも、度々先回のサンプルはVBで作成してしまい アクセスでは、一部修正が必要になります。すみません。

※※※※※※
変更点
※※※※※※
オブジェクトの参照部分 .Textなどは使えないから削除した
コンボBOXは AddItem がないのでテーブルを使用し連結させた

Tbl01 というテーブルを作成
FileNm というフィールド名でデータ型 テキスト サイズは 100~250くらい

オブジェクト名は、アクセスで使用するときのデフォルト名じゃないから
変更の必要あり
フォーム1 → Form1
など...

ソースサンプル↓↓↓↓↓↓↓↓↓↓↓↓

Option Compare Database

Private Sub Command1_Click()

Dim sDirNm As String
Dim sSqlStr As String

sSqlStr = "DELETE FROM Tbl01"
Call FlRunSQL(sSqlStr)

'検索フォルダ
If Right$(text1, 1) <> "\" Then
sDirNm = text1 & "\"
Else
sDirNm = text1
End If

Call FlFileChk(sDirNm)

Combo1.Requery

End Sub

Private Sub Form_Load()

Dim sSqlStr As String

text1 = ""
text1 = CurDir

sSqlStr = "DELETE FROM Tbl01"
Call FlRunSQL(sSqlStr)

End Sub

Private Function FlFileChk(ByVal sDirNm As String)

Dim sFileNm As String 'ファイル名
Dim sTmpDir() As String 'フォルダ名配列
Dim lCnt As Long '配列カウント
Dim sSqlStr As String


ReDim sTmpDir(0) '配列初期化

'※※※※※※※※※
'ファイル名追加
'※※※※※※※※※
sFileNm = Dir(sDirNm, vbDirectory)

Do Until sFileNm = ""

If sFileNm <> "." And sFileNm <> ".." Then
'ビット単位の比較を行い、フォルダかどうかを調べます。
If (GetAttr(sDirNm & sFileNm) And vbDirectory) = vbDirectory Then
'配列追加
lCnt = UBound(sTmpDir) + 1
ReDim Preserve sTmpDir(lCnt)
sTmpDir(lCnt) = sFileNm
Else

sSqlStr = ""
sSqlStr = sSqlStr & "INSERT INTO Tbl01 VALUES ('" & sDirNm & sFileNm & "')"
Call FlRunSQL(sSqlStr)

End If
End If

sFileNm = Dir()

Loop

'※※※※※※※※※
'サブフォルダ検索および再起
'※※※※※※※※※
For lCnt = 1 To UBound(sTmpDir)
sFileNm = sTmpDir(lCnt)

If sFileNm <> "." And sFileNm <> ".." Then
'ビット単位の比較を行い、フォルダかどうかを調べます。
If (GetAttr(sDirNm & sFileNm) And vbDirectory) = vbDirectory Then
' フォルダであれば、再起します。
Call FlFileChk(sDirNm & sFileNm & "\")
End If
End If

Next



End Function

'========================================================================================
' 関数名 FlRunSQL
' 処理内容 アクションクエリの実行
' 引数
' String vsSQL :SQL文

'========================================================================================
Public Function FlRunSQL(ByVal vsSQL As String) As Long

Dim sFncNm As String '関数名
Dim lFncRtn As Long '戻り値
Dim sMsg As String 'メッセージ
sFncNm = "[FlRunSQL():]"

sMsg = ""

On Error GoTo FncErr

DoCmd.SetWarnings False 'メッセージ表示Off
DoCmd.RunSQL vsSQL, True '実行
DoCmd.SetWarnings True 'メッセージ表示On

'***********
'正常
'***********
GoTo FncEnd

FncErr:
'***********
'異常
'***********
If sMsg = "" Then sMsg = "(" & Err.Number & ")" & Err.Description

FncEnd:
'***********
'終了
'***********


End Function
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ