質問があります。
あるディレクトリの配下のファイル名を取得するには
どのようにしたらよいのでしょうか?
またその場合、どういった形式で取得できるのでしょうか?

もうひとつファイルをオープンして一行しかない
ファイルの場合だけ編集を行い、
上書きするという処理をご存知のかた
いましたら、教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

1つ目の質問の回答ですが、「Dir関数」を使えばできます。


やり方は、ヘルプに載っているので見てください。

2つ目の質問の回答ですが、
--------------------------------
Dim strFile As String
Dim strLine As String

'☆☆☆☆1行取り出し☆☆☆☆
'ファイルを開く
Open strFile For Input As #1
'ファイルから1行読み取る
Line Input #1, strLine
'ファイルを閉じる
Close #1

'☆☆☆☆書き込み☆☆☆☆
strLine="書き込むよ!!"
Open strFile For Output As #1
Print #1, strLine
Close #1

--------------------------------
ただし、エラー処理は、省略してます。
こんなんでどうでしょう?
    • good
    • 0
この回答へのお礼

ありがとうございました。
Dir関数でできました。
引数を省略すると次のファイル名が
取得できるようです。
あとはOutput,Inputを
使って解決することができました。

お礼日時:2001/06/08 10:17

最初のファイル名取得ですが、4つほどあります。



1.Dir関数を使用する
osaosa42さんが紹介されてますね。最も一般的な方法です。

2.ファイルシステムオブジェクトを使用する
VB6からだと思います。
Dirよりも高機能・・・だったと思います。

3.WindowsAPIを使用する
FindFirstFile,FindNextFile,FindCloseを使用します。Dir関数では取れない情報をとったり、再帰的にフォルダの内容を取得したりしたい場合に使用したりします。Dirより高速。

4.ファイルリストボックスを利用する
ファイルリストボックスをフォームに貼りつけて、VisibleをFalseにしておいて、利用します。

こんなところでしょうか。
用途によって使い分けます。使い方が載っているページを紹介しておきます。

http://www.galliver.co.jp/writing/vbm_tokushu/ap …
http://www.vbvbvb.com/jp/gtips/0051/gFindFirstFi …
    • good
    • 0

こんにちは、honiyonです。


 今手元にVBがないので分かりませんが、ヘルプにのっているはずです。(ファイル名の取得)
 因みにDelphiでは FindFirst, FindNextを使います。
 検索エンジンで、「VB ファイル名 取得」で検索したら色々と参考文献が見つかると思います。(試してません^^;)

 一行しかないファイルの検索方法ですが、まずファイルを開くまではOKですよね? その後「一行だけのファイルである」と判断の仕方を提示します。
 一行だけのファイル(テキスト形式)であるのは、

   1.データ(文字)が書かれているけど改行コードが含まれていない。
   2.改行コード以降にデータ(文字)がかかれていない。

 のどちらかだと思います。
 改行コードは 0x0D 0x0Aです。 (0D,0A,ひょっとしたら逆かも^^;)

 曖昧なアドバイスですが、参考になれば幸いです(..
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QDIR関数を使ったファイル名の取得

おはようございます。

txtファイル名とdocファイル名を取得したく、以下のコードを作成してみました。
DIR関数を使って、ファイルリストボックスのPatternプロバディのように、複数の形式のファイル名を同時に取得する方法はあるのでしょうか?

是非、教えてください。よろしくお願いします。

-----------------------------
Private Sub Form_Load()
Dim MyName

MyName = Dir("C:\My Documents\*.txt")
Do While MyName <> ""
MsgBox MyName
MyName = Dir
Loop

MyName = Dir("C:\My Documents\*.doc")
Do While MyName <> ""
MsgBox MyName
MyName = Dir
Loop
End
End Sub
-------------------------------------

おはようございます。

txtファイル名とdocファイル名を取得したく、以下のコードを作成してみました。
DIR関数を使って、ファイルリストボックスのPatternプロバディのように、複数の形式のファイル名を同時に取得する方法はあるのでしょうか?

是非、教えてください。よろしくお願いします。

-----------------------------
Private Sub Form_Load()
Dim MyName

MyName = Dir("C:\My Documents\*.txt")
Do While MyName <> ""
MsgBox MyName
MyName = Dir
...続きを読む

Aベストアンサー

VBのForm1の上にドライブ、ディレクトリ、ファイルリストボックスを
貼りつけ、それぞれのコントロールをダブルクリックして
Private Sub Drive1_Change()
Dir1.Path=Drive1.Drive
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
File1.Pattern = "*.txt;*.doc"
End Sub

Private Sub File1_Click()
flnam= File1.FileName
MsgBox flnam
End Sub
と入力して見ました。実行すると
ファイルリストボックスに拡張子が「txt」と「doc」の2つが
現われます。そしてクリックして指定したファイル名が
MsgBoxに現われます。
本件の質問は、この「Pattern」プロパティと、拡張子を列記する
方法「;」に付いての質問ではないのでしょうか。
「Pattern」の語が出ているので多分ご存知の様子ですね。
-----
またDir関数で下記を実行してみました。ご参考になれば。
Private Sub Form_Click()
a = Dir("c:\My Documents\*.*")
For i = 1 To 40
 a = Dir()
 a = Trim(a)
 b = Right(a, 4)
  If b = ".doc" Then
     Form1.Print a
  ElseIf b = ".txt" Then
     Form1.Print a
  End If
Next i
End Sub
仮に繰り返し回数を「40」としていますが、ファイル数より回数が進んだ時の「エラーの検知方法」が思い出せず不完全です。すみません。全般について、ご存知の方やダメな点を私も教わりたいです。

VBのForm1の上にドライブ、ディレクトリ、ファイルリストボックスを
貼りつけ、それぞれのコントロールをダブルクリックして
Private Sub Drive1_Change()
Dir1.Path=Drive1.Drive
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
File1.Pattern = "*.txt;*.doc"
End Sub

Private Sub File1_Click()
flnam= File1.FileName
MsgBox flnam
End Sub
と入力して見ました。実行すると
ファイルリストボックスに拡張子が「txt」と「doc」の2つが
...続きを読む

Qバッチファイルでユーザーに入力させた値を取得するには?

バッチファイルで処理を行い、処理の途中で
ユーザーに何かコードなどを入力させて
その値を取得して処理を行いたいのですが
そのような方法はありますでしょうか?

どなたか、よろしくお願いします。

Aベストアンサー

OSがWindows 2000/XP なら

echo 前処理
set /P IN=コードを入力してください:
echo 入力されたコードは %IN% です。

というふうに set コマンドで取得できます。

Windows 98/Me ですと標準のコマンドでは無理なので、フリーソフトを使うことになります。BATUTY なんかが有名です。(参考URL)

参考URL:http://www.vector.co.jp/soft/dos/util/se023753.html

Q文字列(セル)から一部の文字だけ削除する方法

質問させて頂きます。

エクセル等で下記のような編集をしたいと考えております。

A列      A列
12345     123
67890     678
01234  ⇒  012
56789     567
98765     987

ようは、右側の2文字などを指定して削除をする方法です。

少し説明が分かり辛いかもしれませんが、もし、分かりましたら、ご教授いただければ、幸いです。

どうぞ、宜しくお願い致します。

Aベストアンサー

右側の2文字を削除するなら、セルA1に文字が入っているとき
=LEFT(A1,LEN(A1)-2)
とすれば、取り出せます。
「LEFT」関数は文字列の左側から指定文字数分取り出す関数。
「LEN」関数は、指定文字列の長さを計算してくれる関数です。
なので、左側から「文字数-2」文字取り出せば質問のとおりになります。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qフォルダ内の全てのBookに同じ処理を繰り返す

フォルダ内にエクセルファイルが約3,000個あります。
この全てのBookに同じ処理をしたいのですが、マクロで繰り返す方法がわからないので教えて下さい。
処理をする内容は簡単なもので、マクロで作りました。

・ 各Bookには1つのシートしか存在せず、シート名は重要ではないので全て「Sheet1」になっています。
・ 各Bookのデータの配置や表形式は同じです。
・ レコードの行数がBookによって異なります。

処理の内容をマクロで作るところまではできましたが、知識がないためタイムアウトです。

ご教示宜しくお願い致します。

Aベストアンサー

だいたいこんな流れで。

sub macro1()
 dim myPath as string
 dim myFile as string

 mypath = "C:\test\"

’指定フォルダのブックを順繰り拾う
 myfile = dir(mypath & "*.xls*")
 do until myfile = ""

 ’ブックを開いて処理を行い保存して閉じる
  workbooks.open mypath & myfile
  activesheet.range("A1") = "DONE"
  activeworkbook.close true

  myfile = dir()
 loop
end sub


必要に応じて
・画面の表示を抑制する
・再計算を手動にする
といった手管を追加して高速化を図ります。


人気Q&Aランキング