- ベストアンサー
フォルダやドライブ変更するとリネームできなくなります。
現在VB6でファイルリネームツールを作成しています。 DriveListBox・DirListBox・FileListBox・TextBox・コマンドボタンを配置しています。 ドライブ・ディレクトリ・ファイルを順に選択して、選択したファイル名をテキストボックスに表示させ、ファイル名を テキストボックスで直接編集してコマンドボタンでリネームを実行しています。 以下のコードで実行すると、 起動して最初に表示されるVB98フォルダ内のファイル名はコマンドボタン1・2どちらでも 変更できますが、ドライブやディレクトリを変更して、Textboxでリネームをしコマンドボタンを押すとエラーが出てリネームできません。 コマンド1ボタンエラー >Set fsofile = fso.GetFile(File1.FileName) コマンド2ボタンエラー >Name nname As newname となります。どちらもエラー番号53で"ファイルが見つかりません"とでます。 どのように記述すればディレクトリやドライブを変更しても名前を変えられるでしょうか?宜しくお願いします。 Private Sub Command1_Click() Dim fso As New FileSystemObject Set fsofile = fso.GetFile(File1.FileName) fsofile.Name = Text1.Text File1.Refresh End Sub Private Sub Command2_Click() Dim nname As String Dim newname As String nname = File1.FileName newname = Text1.Text Name nname As newname File1.Refresh End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub Drive1_Change() On Error GoTo Derr Dir1.Path = Drive1.Drive Exit Sub Derr: If Derr = 68 Then MsgBox "デバイスの準備ができていません。", vbCritical Else MsgBox "ドライブにエラーがあります。", vbCritical End If End Sub Private Sub File1_Click() Text1.Text = File1.FileName End Sub Private Sub Form_Load() Text1.Text = "" Dir1.Path = App.Path Drive1.Drive = App.Path End Sub
- robbie001
- お礼率66% (6/9)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
コマンド1ボタンエラー >Set fsofile = fso.GetFile(File1.FileName) これは File1.FileNameにはファイル名しか入っていないことが原因ではないでしょうか? ここはフルパス指定すれば解決すると思います。 Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName) のようにしてはどうでしょうか?
その他の回答 (1)
- Hayashi_Trek
- ベストアンサー率44% (366/818)
新しい名前の、ドライブやフォルダは存在してますか? Nameステートメントではフォルダの作成はしません。
関連するQ&A
- VB6・一括でファイル名の変更したいのですが
VB6でファイルリネームツールを作成しています。 DriveListBox・DirListBox・FileListBox・TextBox*2・コマンドボタン*3を配置しています。 実行して、ドライブ・ディレクトリを選択して、FileListBoxに表示されいるファイルをコマンド2ボタンで全部Text2に表示させています。 そこで、text2からファイル名を直接編集して、コマンド3ボタンで編集したファイル名で保存したいのですが、どう記述すれば良いのでしょうか。 Text1とコマンド1の状態は、FileListboxでクリックしたファイルをText1に表示・編集して、コマンド1でファイル名変更できる状態です。 コマンド3のコードですと、 >Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName) の行が、実行エラー53、ファイルが見つかりません。となります。 宜しくお願いします。 現在のコードです。 Private Sub Command1_Click() Dim fso As New FileSystemObject Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName) fsofile.Name = Text1.Text File1.Refresh end sub Private Sub Command2_Click() Text2.Text = Clear Dim fso As New FileSystemObject For Each myFile In fso.GetFolder(Dir1.Path & "\" & File1.FileName).Files Text2.Text = Text2.Text & myFile.Name & vbCrLf Next End Sub Private Sub Command3_Click() Dim fso As New FileSystemObject Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName) fsofile.Name = Text2.Text File1.Refresh End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub File1_Click() Text1.SetFocus Text1.Text = File1.FileName End Sub Private Sub Form_Load() Text1.Text = "" Text2.Text = "" Dir1.Path = App.Path Drive1.Drive = App.Path End Sub
- ベストアンサー
- Visual Basic
- 返ってくる値が違う
VBAでフォルダの中のファイルの個数を取得するコードなのですが Sub test1() Dim i As Long, buf, Path As String Path = ActiveWorkbook.Path & "\" buf = Dir(Path & "*.*") Do While buf <> "" i = i + 1 buf = Dir() Loop MsgBox "「" & ActiveWorkbook.Path & "」には、全部で" & i & "個のファイルがあります。" End Sub Sub test2() Dim Path As String Dim i As Long, FSO As Object, f As Object Path = ActiveWorkbook.Path & "\" Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox "「" & ActiveWorkbook.Path & "」には、全部で" & FSO.GetFolder(Path).Files.Count & "個のファイルがあります。" Set FSO = Nothing End Sub Test1とtest2では返ってくる値が違うのですが なぜでしょうか? Test2はフォルダの個数も取得されてるのですか?
- 締切済み
- Visual Basic
- EXcelマクロで同じフォルダ内のファイル全て開く。ドライブまたいでも対応
以前以下のVBAを教えていただいたham-kamoさんに質問があります。もちろん違う方でも構いません。 「同じフォルダ内のブックを開くマクロ」についてですが、以下のVBAだとカレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが、解決法はありますでしょうか? 例えば\\AAAA\BBというアドレスのフォルダ内にマクロを起動するファイルがあり、C:\Documents and Settings\XXXXがカレントフォルダに設定されるとC:\Documents and Settings\XXXX内のExcelファイルが開かれてしまうということです。 -------------------------- Sub OpenAllBooks() Dim FileName As String Dim OpenedBook As Workbook Dim IsBookOpen As Boolean ChDir (ThisWorkbook.Path) FileName = Dir("*.xls") Do While FileName <> "" IsBookOpen = False For Each OpenedBook In Workbooks If OpenedBook.Name = FileName Then IsBookOpen = True Exit For End If Next If IsBookOpen = False Then Workbooks.Open (FileName) End If FileName = Dir() Loop End Sub
- ベストアンサー
- Windows系OS
- ファイル名がテキストボックスにうまく表示できない
お世話になります。 filelistboxで選択したファイル名を選択した順に テキストボックスに表示させたいのですが、ファイル名の 後に改行コードを入れても改行して表示してくれません。 何が原因なんでしょうか?よろしく御教授願います。 例 aaa.txtを選択、テキストボックスに表示させ、 その後bbb.txtを選択するとテキストボックスの表示が ”aaa.txt‥bbb.txt”となる --------- aaa.txt(改行) bbb.txt --------- と表示したい。 (コード) Dim fname As String Private Sub File1_Click() fname = Dir1.Path & "\" & File1.FileName End Sub Private Sub Command3_Click() Call macappend End Sub Private Sub macappend() 'text1に選択マクロを追加 Dim macbuff1 As String Dim macbuff2 As String macbuff2 = Text1.Text macbuff1 = fname + Chr(13) + Chr(11) macbuff2 = macbuff2 + macbuff1 Text1.Text = macbuff2 End Sub
- ベストアンサー
- Visual Basic
- ドラッグ&ドロップの対象をフォルダに限定したい
こんばんは。 テキストボックスにドラッグ&ドロップされたフォルダのパスを取得させたいのですがドラッグの対象をフォルダに限定させたい、もしくはファイルがドラッグ&ドロップされたらそのファイルのカレントディレクトリまでのパスを取得させたいのですが、下記のコードでは取得までは出来るのですがファイルがきた場合にファイルまでのパスが取得されてしまいまいます。 よろしくお願いします。 Dim ddpath As String Private Sub TxtPath_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TxtPath.DragEnter If e.Data.GetDataPresent(DataFormats.FileDrop) Then e.Effect = DragDropEffects.Copy Else e.Effect = DragDropEffects.None End If End Sub Private Sub TxtPath_DragDrop(ByVal sender As Object, ByVal e As _System.Windows.Forms.DragEventArgs) Handles TxtPath.DragDrop ddpath = e.Data.GetData(DataFormats.FileDrop)(0) If Dir(ddpath, FileAttribute.Directory) <> "" Then TxtPath.Text = ddpath End If End Sub
- ベストアンサー
- Visual Basic
- DVD(Eドライブ)に新規ファイルを作成
VBAの初心者です。DVD(Eドライブ)に新規ファイルを作成しようと思い、WEBから拝借したコード: Sub test5() 'E:\Work\フォルダにSubフォルダを作成します。 Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CreateFolder "E:\Work\Sub" Set FSO = Nothing End Sub を実行したところ、 FSO.CreateFolder "E:\Work\book1"の行で「パスが見つかりません」というエラーが出ます。解決法を教えてください。
- 締切済み
- その他MS Office製品
- VBAでフォルダにあるエクセルファイルを開く
こんにちは このコードがうまく動かないのですが、 どこがいけないのかわからなく助けてください。 なおフォルダの中には******データ.xlsと言うファイルがあり、アスタリスク部分は日付が不規則に変化して上書きされるのです。 このファイルを開くマクロを作りたいのですが。 うまく行きません。 よろしくおねがいします。 Sub excelopen() ' ' Dim エクセル As String 'エクセル = Dir(ActiveWorkbook.Path & "\*データ.XLS") If エクセル = "" Then Exit Sub エクセル = ActiveWorkbook.Path & "\" & エクセル Workbooks.Open Filename:=エクセル End Sub
- ベストアンサー
- オフィス系ソフト
- EXCEL フォルダだけを検索したい
EXCEL2003を使っています。 開いているファイルと同じフォルダ内に「テストフォルダ」があるかどうかを調べ、存在した場合に削除したいのですが、以下のような書き方ではフォルダだけでなくファイルも検索してしまうようです。 フォルダだけを検索するにはどうしたらいいでしょうか? FSOでできることは分かっていますが、以下の方法で試してみたいのです。どうぞ宜しくお願い致します。 Sub test() my_path = ActiveWorkbook.Path & "\" f_name = Dir(my_path, 16) Do Until f_name = "" If f_name = "テストフォルダ" Then RmDir "テストフォルダ" End If f_name = Dir() Loop End Sub
- ベストアンサー
- オフィス系ソフト
- vbのsavefiledialogについて
vbで、テキストボックスに、文字を入力し、ボタン2をクリックすると、ユーザーが指定したところに、指定した名前で、txt形式、html形式、doc形式(このうち、txtと、htmlは必須。)で保存するプログラムを作りたいと思っております。 サイトを見てみますが、なかなかよいものが見つかりません。どなたか教えてください。 書きかけのプログラムと、フォーム図を載せておきます。 また、変更した方がよければ、そちらもおしえてください。 Public Class Form1 Dim texta As String Dim a Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Button1.Text = "リセット" Button2.Text = "保存" texta = TextBox1.Text End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged texta = TextBox1.Text End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click a = DialogResult SaveFileDialog1.OverwritePrompt = True SaveFileDialog1.FileName = "" SaveFileDialog1.Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*" a = SaveFileDialog1.ShowDialog If a = Windows.Forms.DialogResult.OK Then Label1.Text = IO.Path.GetDirectoryName(SaveFileDialog1.FileName) Label2.Text = IO.Path.GetFileName(SaveFileDialog1.FileName) Else Label1.Text = "キャンセルされました。" Label2.Text = "" End If End Sub End Class
- ベストアンサー
- Visual Basic
- FSOを使いサブフォルダのファイル操作
同じ階層のサブフォルダにxlsm入るが入っており、VBAによりモジュールを解放しようと試みています。 まずは、FSOを使ってサブフォルダにアクセスしようとしましたが、下から6行目でエラー(424 オブジェクトが必要です)が出てしまい、解決できませんので、ご教示いただけないでしょうか? よろしくお願いします Sub DeleteMain() With Application.FileDialog(msoFileDialogFolderPicker) If Not .Show Then Exit Sub Call DeleteSub(folderPath:=.SelectedItems(1)) End With End Sub Sub DeleteSub(folderPath As String, Optional mycount As Long = 0) Dim fso As Object, myFolders As Object, myfile As Object Set fso = CreateObject("Scripting.FileSystemObject") Set myFolders = fso.GetFolder(folderPath).SubFolders For Each myfile In fso.GetFolder(folderPath).Files mycount = mycount + 1 ' Cells(mycount, 1) = myfile.Path Debug.Print myfile.Path Next For Each myFolders In fso.GetFolder(folder.Path).SubFolders Call DeleteSub(myFolder.Path, mycount) Next Set fso = Nothing Set myFolders = Nothing End Sub
- ベストアンサー
- Excel(エクセル)
お礼
そのコードで無事出来ました。ありがとうございます。