
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
直感的にイヤなコードがあります。
>GoTo Exit_GetTextInformation
GoToは使うべきではありません。しかも、このラベルに
分岐する所が3ヶ所あって、いずれの理由で分岐するか
わかりません。
>If .FoundFiles.Count = 0 Then GoTo
WithブロックからWithブロック外への分岐も、とても
気持ち悪いコードです。
当方で試しましたが、やはり正しいパスが指定されれば
正しく処理されます。どこでExit_GetTextInformationに
分岐するか調べたでしょうか?
サンプル
★既存のデータ定義
Dim ファイル集合
Dim メッセージ As String
'GoToを避けるための制御
Do
★フォルダ名取得
If FolderName = "" Or FolderName = "False" Then
メッセージ = "キャンセルされました"
Exit Do
End If
★ディレクトリ確認
If Ret = "" Then
メッセージ = "該当フォルダがありません"
Exit Do
End If
★ファイル検索
With Application.FileSearch
中略
Set ファイル集合 = .FoundFiles
End With
If ファイル集合.Count = 0 Then
メッセージ = "ファイルが見つかりません"
Exit Do
End If
★各ファイルの処理
Open ファイル集合(i) For ~
Loop Until True
If メッセージ <> "" Then
MsgBox メッセージ
End If
この回答への補足
先日はありがとうございました。
以下のように作り直してみました。
iFilename.Countがカウントされず、エラーになってしまいます。
「Microsoft Scripting Runtime」の参照設定もしてみたのですが、だめでした。
それから、Do ~ Loopもエラーになってしまうので、現在、コメントにしてあります。
お手すきの時に助けていただけると嬉しいです。
自分でも引き続き、調べながら、テストしてみます。
***
Private Sub Button1_Click()
Dim msg As String
Dim FolderName As String
Dim Ret As String
Dim Buff As String
Dim FNum As Integer
Dim i As Long
Dim sFilename As String
msg = "検索するフォルダのパスを指定してください"
FolderName = Application.InputBox _
(msg, "テキスト情報取得", "d:\", Type:=2)
sFilename = Dir(FolderName & "\*.htm", vbNormal)
'InputBoxがキャンセル、空白で返された場合のエラー処理
'Do
'★フォルダ名取得
If FolderName = "" Or FolderName = "False" Then
msg = "キャンセルされました"
Exit Sub
End If
' '★ディレクトリ確認
' If Ret = "" Then
' msg = "該当フォルダがありません"
' Exit Do
' End If
'★ファイル検索
With Application.FileSearch
'中略
Set iFilename = .FoundFiles
If iFilename.Count = 0 Then
msg = "ファイルが見つかりません"
Exit Sub
End If
'★各ファイルの処理
FNum = FreeFile 'ファイル番号確保
i = 1
For i = 1 To .FoundFiles.Count
'テキストファイルから一行目を取得
Open .FoundFiles(i) For Input As FNum
Line Input #FNum, Buff
If FNum = "http://system06/" Then
' "http://system06/" = "\\system04\共有\KMP\"
Close FNum
End If
Next i
'Loop
If メッセージ <> "" Then
MsgBox メッセージ
End If
End With
End Sub
早速ご回答いただき、ありがとうございます。
ExcelVBAを使ったことがないため、WEB上の情報をコピーして動かしていました。
いただいたサンプルで再度確認してみます。
後日、また報告させていただきます。
No.1
- 回答日時:
何か錯誤があるのでは?
正しくパスを指定すれば普通に入力できます。
但し、SJIS以外のコードで書かれたものは
Streamオブジェクトで変換しないと字化け
するので、正しく処理できません。
何をやって、どう上手くいかないのかを掲題
しないと的確な回答を得られませんよ。
ご回答、ありがとうございます。
以下、Excel VBAでのコードです。
パスが正しいことは確認したのですが、ファイル名を格納しません。
「検索できませんでした」という結果になります。
お時間のあるときにご確認いただけると助かります。
よろしくお願いいたします。
***
Private Sub Button1_Click()
Dim Msg As String, FolderName As String
Dim Ret As String, Buff As String
Dim FNum As Integer, i As Long
Msg = "検索するフォルダのパスを指定してください"
FolderName = Application.InputBox _
(Msg, "テキスト情報取得", "d:\", Type:=2)
'InputBoxがキャンセル、空白で返された場合のエラー処理
If FolderName = "" Or FolderName = "False" Then _
GoTo Exit_GetTextInformation
'指定フォルダの存在確認
Ret = Dir(FolderName, vbDirectory)
If Ret = "" Then GoTo Exit_GetTextInformation
'ファイル検索
With Application.FileSearch
.NewSearch
.Filename = "*.html"
.FileType = msoFileTypeAllFiles
.LookIn = FolderName '指定フォルダ
.SearchSubFolders = False
.Execute '検索実行
'検索結果が0の場合終了
If .FoundFiles.Count = 0 Then GoTo Exit_GetTextInformation
FNum = FreeFile 'ファイル番号確保
For i = 1 To .FoundFiles.Count
'テキストファイルから一行目を取得
Open .FoundFiles(i) For Input As FNum
Line Input #FNum, Buff
Close FNum
'テキストファイルの情報をセルに書き込み
'Cells(i, 1) = Dir(.FoundFiles(i), vbNormal) 'ファイル名取得
'Cells(i, 2) = FileDateTime(.FoundFiles(i)) 'ファイル更新日
'Cells(i, 3) = Buff 'テキスト一行目
Next i
End With
Exit Sub
Exit_GetTextInformation:
MsgBox "検索できませんでした"
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- アプリ MacBookでCLIP STUDIO PAINTから「写真」アプリを開いて、画像を読み込みたい 1 2023/08/05 12:34
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- フリーソフト mmfファイルからmp3に変換できる方法を教えてください(XMediaRecode以外で) 2 2022/03/22 22:25
- フリーソフト テキストファイル内を検索したい 1 2022/06/01 08:33
- C言語・C++・C# pythonで外部のファイルを読み込む際のエラー 2 2022/04/12 19:22
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- 教育ソフト・学習ソフト vbsで分割した値をそれぞれの変数に 1 2022/10/17 19:52
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルを複数選択した時のフ...
-
動かなくなってしまった古いVBA...
-
【VBAマクロ初心者】Excel VBA...
-
「エクセルファイルが開いてい...
-
【ACCESS VBA】アクセスからデ...
-
ファイル番号の取得について
-
MSHFlexGridコントロールについて
-
タイムスタンプの更新の方法2
-
VBAの初心者でやりたいことがあ...
-
EXCEL VBAを使ったファイル解析...
-
更新日が指定日以降のファイル取得
-
vbaサブフォルダーをワイルドカ...
-
ffftpでファイル取得が0バイト...
-
Accessのウインドウサイズの固定
-
ASPでMDBファイルを自動作成で...
-
エクセルVBA あるフォルダ...
-
フォルダ階層・ファイル名・ペ...
-
Filesearchオブジェクトを使用...
-
EXCEL VBA tif画像のプロパティ...
-
Wordのプロパティ・総ページ数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
動かなくなってしまった古いVBA...
-
「エクセルファイルが開いてい...
-
FileDialog オブジェクトでファ...
-
vbaサブフォルダーをワイルドカ...
-
VBAでフォルダ内のhtmlファイル...
-
エクセルのVBAで開いている...
-
VB6でUTF-8ファイルの読取りを
-
excel マクロ PDF化の際のエラ...
-
Accessのウインドウサイズの固定
-
タイムスタンプの更新の方法2
-
vbs ブック共有を解除
-
ffftpでファイル取得が0バイト...
-
EXCEL VBAを使ったファイル解析...
-
サブフォルダ含むフォルダ内の...
-
ExcelVBA 文字コード変換
-
VBAでのファイル名と更新日(作...
-
AccessからOLEオブジェクト型の...
-
「AccessViolationException」...
-
フォルダ階層・ファイル名・ペ...
-
Filesearchオブジェクトを使用...
おすすめ情報