アクセスでの文字抽出について

このQ&Aのポイント
  • ファイル名のフルパスからフォルダ名だけを取り出す方法を質問しました。
  • 質問に対して、ファイル名をフルパスを fullpath とし、フォルダ名を foldername とすると、下記のコードで取得できるとの回答をいただきました。
  • しかし、実行すると、「プロ-ジャーの呼び出し、又は引数が不正です。」というエラーメッセージが表示されてしまいます。
回答を見る
  • ベストアンサー

アクセスでの文字抽出について

以前に、ファイル名のフルパスからフォルダ名だけを取り出す方法を質問しました。  ファイル名フルパス=D:\test\image\image.bmp  フォルダ名=D:\test\image\  この質問に対して、ファイル名をフルパスを fullpath とし、フォルダ名を foldernameとすると、下記のコードで取得できるとの回答をいただきました。 foldername = left(fullpath, instrrev(fullpath, "\"))  そこで、フォームに、「フルパス」という名前のテキストボックスと、「フォルダ名」という名前のテキストボックスを作成し、コマンドボタンのクリック時イベントに、下記のコードを記述しました。  Me.フォルダ名 = left(Me.フルパス, instrrev(Me.フルパス, "\"))  しかし、実行すると、「プロ-ジャーの呼び出し、又は引数が不正です。」というエラーメッセージが表示されてしまいます。  どうすればよいのでしょうか?

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

  • ベストアンサー
  • miya_777
  • ベストアンサー率31% (44/140)
回答No.1

instrrev関数は、office97に無いものです。 office2000からあった関数だと思います。 なのでやるとすれば、 Dim intLoc As Integer Me.フォルダ名 = "" intLoc = Len(Me.フルパス) Do   If intLoc = 0 Then     Exit Do   EndIf   If Mid(Me.フルパス,intLoc,1) = "\" Then     Exit Do   Endif   intLoc = intLoc - 1 Loop If intLoc > 1 Then   Me.フォルダ名 = Me.フォルダ名Mid(Me.フルパス, intLoc - 1) EndIf あまり良いプログラムでありませんが参考にして下さい。

patman2
質問者

お礼

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

関連するQ&A

  • 文字列の抽出方法について

    アクセス2000を使っています。 D:\test\image\image.bmp 上記したようなファイル名のフルパスから、下記のようにフォルダ名のみを取り出したいのですがうまくいきません。  D:\test\image\ InStr関数で"\"の位置を抽出して、left関数で抽出した位置より左側のデータを取り出そうと思ったのですが、InStr関数では、最初に見つかった"\"の位置を抽出してしまうため、left関数で取り出した値が下記のようになってしまい、正確なデータが取り出せません。どうしたらいいでしょうか?  d:\

  • アクセス2000からのワード操作について

    アクセス2000で、所定のファイル名のhtmlファイルやtxtファイルを出力するようにコードを記述し、さらに、出力したファイルを自動的にワードで立ち上げるようにするために、フォーム内に fulpath というテキストボックスを作成し、この fulpath に出力ファイル名のフルパスが入力されるようにして、下記のようにコードを記述したのですが、「ファイルが見つかりません」というエラーが出てしまいます。 Call Shell("winword.exe" & Me!fulpath ) 申し訳ありませんが、解決方法を教えていただけないでしょうか?

  • ファイルが存在するのにエラーになる実行時エラー53

    vbaで Name FolderName & "\" & strBefore As FolderName & "\" & strAfter でファイル名を置換しているのですが、 「実行時エラー '53': ファイルが見つかりません」が発生します。 しかし、イミディエイトウィンドウで ?strBefore ?FolderName をやって、\でつなげて、フォルダのパスに入力すると、ちゃんとファイルは開きます。 ちなみにテキストファイルです。 手作業で開くのになぜVBAだとエラーになるのでしょうか?

  • アクセスで期間抽出

    お尋ねします アクセスで納品書のデータベースがあります   納品書データFormには 伝票番号、日付、客先名、数量のフィールドのフォームで テキストボックス1:始めの日 テキストボックス2:終了日 コマンドボタン1:期間で抽出 が配置しています テキストボックス1,2に日付、記入後、コマンドボタン1をクリックして 所要期間でフィルターで抽出するのですがうまく行きません コマンドボタン1クリック時のコード Private Sub コマンド1_Click() Me.Filter = "日付= 'Between" & Me![テキスト1] & "And" & Me![テキスト2] & "'" Me.FilterOn = True End Sub のコードで抽出してくれません、不都合をご指摘下さい なお 指定日での抽出は以下で出来ました。 Private Sub コマンド1_Click()  Me.Filter = "日付= '" & Me![テキスト1] & "'" Me.FilterOn = True End Sub エクセルのモジュールは少しかじったのですがアクセスは 始めたばかりでなかなか要領を得ません 宜しくお教え下さい。

  • Access2000ですが・・・・

    Access2000で人事カードを作成しています。顔写真(jpg画像)は別フォルダに保存し、フォーム上のテキストボックスに画像のパスを自動作成し、レコード移動時にイメージフレームにパスに対応する画像を呼び込むVBA(Me!フレーム.picture=パス)で処理しています。ところが画像がないレコードが何件かあり、そのレコードに移動した時は、前の画像が残ったまま「ファイル名.jpgを開けません」との表示が出ます。そこでパスに対応する画像がない場合はIF条件により別処理をしたいのですが、構文が分かりません。どなたか教えていただけないでしょうか。

  • アクセス フォームのテキストボックス内の文字列

    お世話になります。 アクセス使い始めて1ヶ月ぐらいの初心者です。 アクセスのフォーム1に、ファイル参照ボタンを作って フォーム1にテキストボックスも作り、参照ボタンで選んだ path?をテキストボックスに入るようにしました。 次にそのテキストボックスに入ったpathを利用して、外部からテキストファイルを インポートしたいのですが、 インポートボタンを作って、ボタンを押したらテキストボックスに参照して入ってるpathを 取得してインポートできるようにしたいのですが、、、 知恵をお貸しいただけたら嬉しいです。 今作ったのは Private Sub コマンド44_Click() Dim objFileDialog As Object 'FileDialog Dim stTitle As String 'タイトル Dim stPath As String 'ファイルパス Dim stInitialFileName As String '初期ファイルパス If Me.chk.Value = -1 Then stTitle = "ファイル参照" '★ stInitialFileName = "C:\Test\" '★ Set objFileDialog = _ Application.FileDialog(msoFileDialogFilePicker) Else Const msoFileDialogFolderPicker = 4 'フォルダの参照 stTitle = "フォルダ参照" '★ stInitialFileName = "C:\Test\" '★ Set objFileDialog = _ Application.FileDialog(msoFileDialogFolderPicker) End If With objFileDialog 'ダイアログボックスのタイトル .Title = stTitle '初期フォルダパス .InitialFileName = stInitialFileName If .Show = False Then 'キャンセル時 GoTo Exit_SUB Else '★選択時フォルダパス表示 stPath = .SelectedItems(1) Me.テキスト45.Value = stPath End If End With Exit_SUB: Set objFileDialog = Nothing End Sub とゆう感じでテキストボックス45に入ったpathを利用してインポートしたいのです、 文章が読みにくくて申し訳ないです、 よろしくおねがいします。

  • ExcelVBA一つ上までのフォルダ作成

    ExcelVBA2007以上で質問です。 現在のファイルのあるフォルダは例えば「11月分」という名前になっています。 もうひとつ上は「2014年」というフォルダになっています。 コードを実行すると、翌月のフォルダとファイルを作成するようになっています。 現在11月なので、実行すると「12月分」というフォルダを作成して、「AAA2014-12」というファイルを作成します。さらにこれを実行して、例えば "D:\YM\Desktop\AAA\2015年\1月分"\AAA2015-1.xlsm のように2015年のフォルダを作成してさらにその中に1月分のフォルダを作成したいのですが、2014年フォルダの中に1月分フォルダが作成されるだけで、どうすればいいのか分かりません。 今の所、月のフォルダと、ファイル名は翌月取得が下記のコードで実現できています。 最後のコードに手を加える必要があると思いますが、どうすればよいでしょうか? Sub AAA翌月ファイル作成() Dim myDir_path As String, myNew_path As String '現在ファイルがあるフォルダパスを取得 myDir_path = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, "\") - 1) '翌月分のファイル名を取得 myNew_path = "在庫数" & Format(DateAdd("m", 1, Replace(Replace(ThisWorkbook.Name, "AAA", ""), ".xlsm", "")), "yyyy-m") & ".xlsm" '翌月のファイルを保存するフォルダ名を取得   あとは、年が変わったら1年繰り上げたものを取得したい myDir_path = Left(myDir_path, InStrRev(myDir_path, "\")) & Format(DateAdd("m", 1, Replace(Replace(ThisWorkbook.Name, "AAA", ""), ".xlsm", "")), "m") & "月分\"

  • レコードセットからの抽出方法

    Access2000を使用しています。 下記のコードのとおり 入力用テキストボックスに座席コードを入力して seat テーブルから座席コードと入力したものからレコードを探して表示できているんですが、 レコードセットで抽出した座席番号が「P」のものだけ チェックボックス(pri.value=true) にしたいのですが動きませんどのようなコードを書けばいいんでしょうか? Dim rst As New ADODB.Recordset Set rst = New ADODB.Recordset rst.Open "select * from seat where 座席コード='" & Me.入力用テキストボックス & "'", _ CurrentProject.Connection, adOpenKeyset, adLockOptimistic If rst.EOF = True Then MsgBox ("座席情報はありません。") Me.入力用テキストボックス = "" End If If rst.EOF = False Then Me.座席コード = rst![座席コード] Me.座席番号 = rst![座席番号] Me.入力用テキストボックス = "" Me.受付時間 = Now() End If If Left(rst![座席番号], 1) = "P" Then Me.pri.Value = True

  • アクセス2000

    教えてください。 アクセス2000で下記の構文の’原価’という項目を追加したいのですが、 テキストに参照してきてくれません。’人工’は追加できたのですが・・・・ テーブル・クエリ・等はフィールド追加しているのですが・・・ 何が悪いのでしょうか・・・ Private Sub 商品コード_AfterUpdate() 'テキストボックスに商品コードコンボボックスの値を代入します Me!品名 = Me!商品コード.Column(1) Me!単位 = Me!商品コード.Column(2) Me!単価 = Me!商品コード.Column(3) Me!人工 = Me!商品コード.Column(4) Me!原価 = Me!商品コード.Column(5)

  • テキストファイルへの書き出し

    ExcelVBAについて教えてください。 Dim path As String Dim FullPath As String Path ="C:\" Dim FN As String FN ="abc.txt" Dim intFF As Integer intFF = FreeFile FullPath = Path & "\" & FN Open FullPath For Output As #intFF Print #intFF, FullPath Close #intFF とやると、Open FullPathのところで、実行時エラー 76、パスが見つかりませんと表示されてしまいます。 やりたいことは、Excel VBAでテキストファイルを新規につくり、そこへ書き出し、保存したいです。ファイル名はFullPathで指定したファイル名を新規で作り出し、それに対して書き出し、保存をしたいです。 何が間違っているのでこのようなエラーが表示されてしまうのでしょうか?回避方法がありましたらご教授お願いいたします。

専門家に質問してみよう