
No.3ベストアンサー
- 回答日時:
こんにちは。
>すでにエクセルがopenしているテキストファイルをあらためてエクセルでopenしようとしたら、「開いています。閉じてから実行してください」と警告を出すプログラムが必要です。
Excelでオープンしているということですね。それが分かりませんでした。
普通に、Excelのメニューから「ファイルを『開く』」で、テキストファイルを選択し、そのまま実行し、テキストファイルを開こうとすれば、「テキストウィザード」が出てくるはずです。
既にテキストファイルを開いた状態で、再度開こうとしても、テキストファイルままでは、再度、読み込まれるだけで、二重に開くことは出来ないようです。
仮に、テキストファイルが編集中でしたら、以下のようなダイアログが出てきます。
---------------------------------------------------------
****.txtは、既に開いています。2重に開くと、これまでの変更内容は破棄されます。
****.txt を開きますか? はい(Y), いいえ(N)
---------------------------------------------------------
その時に、「いいえ」選択すれば、再度開くことは防止されます。
今のところ、Excel 2010は手元にありませんが、仕様としては同じはずです。
No.2
- 回答日時:
こんばんは。
>「杏果物.txt」という名前のファイルがあったとして、このファイルが現在openしているのかcloseしているのかを知りたかったのです。
Textファイルは、別に開いていても、ソフトウェアで排他的モードで開いているのかどうかの問題で、エラーそのものはソフトウェアに依存するはずだと思いましたが……。それは、なんのソフトウェアを使っているかによっても違うはずです。
>openしているファイルをopenするよう指示したらエラーになりますから「閉じてください」と表示してプログラム終了。そして、closeしているならopenして中身をシートに読み出すというプログラムです。
Textファイルに対してという意味ですよね。念のために、今、調べてみしたが、例えば、テキスト・エディタで開いているテキストファイルは、別途Openしてみても、エラーは出ませんね。
もちろん、開いているファイル名を調べることは可能ですが、それを、排他的に開いているプログラムのハンドルを取得し、そのプログラムを閉じるという作業になるはずです。しかし、今までよりも、ずっと複雑なコードになると思います。もしかしたら、それはExcel上の話ということでしょうか?しかし、排他モードということは、他人が開いているという意味になるはずですが、それ自体は、Openは回避するだけで、強制Closeは不可能だったと思います。
もう少し、詳しく説明をお願いします。
すでにopenしているテキストファイルをあらためてopenしてもエラーにはならないのですね。勉強になりました。
エクセルVBAで株の分析を行い、各社に1ずつのテキストファイルを対応させて、そこに分析データを保存したり、逆に、保存してあったデータをエクセルシートに読み込んで分析し直したりします。
完成したら第三者に配布するので、エラーが出てプログラムが途中で止まるのがいやだったのです。(私だけが使うならエラーが出てもいいのですが)
しかし、エラーが出ないとなると、データを保存するテキストファイルの二重編集を防止できれば充分です。
すでにエクセルがopenしているテキストファイルをあらためてエクセルでopenしようとしたら、「開いています。閉じてから実行してください」と警告を出すプログラムが必要です。
どういうアプローチにしたらいいのか分からず手詰まっています。
No.1
- 回答日時:
こんばんは。
なぜ、VBAを使わなくてはならないのでしょうか?
一般のツールを外部からインストールしてはいけないのでしょうか?
出来ないとは言いませんが、面倒だと思います。
JGREP(Windows用)は、便利だと思います。
ただし、標準が、JISになっているので、[文字コードを自動判別する]にチェックをいれないといけません。
JGREP2.05
http://www.vector.co.jp/soft/win95/util/se174779 …
スクリーンショット
http://www.hi-ho.ne.jp/jun_miura/jgrep.htm
上記よりも、劣るものですが、考えてみました。
'//
Sub TextSearch_Macro()
Dim myDirs() As Variant
Dim i As Long, j As Long, k As Long
Dim myFName As String
Dim TextLine As String
Dim f As Long
'--------検索ディレクトリ-----
Const MYPATH As String = "C:\Users\[XXXX]\My Documents\Text\"
'--------検索語------------
Const SRCH As String = "杏果"
'---------------------------
myFName = Dir(MYPATH & "*.txt")
Do While myFName <> ""
ReDim Preserve myDirs(i)
myDirs(i) = myFName
myFName = Dir()
i = i + 1
If i > 10000 Then '検索数リミット
Exit Do
End If
Loop
For j = 0 To UBound(myDirs)
f = FreeFile()
Open MYPATH & myDirs(j) For Input As #f
Do While Not EOF(f)
Line Input #f, TextLine
If InStr(1, TextLine, SRCH, vbTextCompare) > 0 Then
k = k + 1
Cells(k, 1).Value = myDirs(j)
Exit Do
Else
TextLine = StrConv(TextLine, vbFromUnicode) 'Unicode 対策
If InStr(1, TextLine, SRCH, vbTextCompare) > 0 Then
k = k + 1
Cells(k, 1).Value = myDirs(j)
Exit Do
End If
End If
Loop
Close #f
Next j
If j = 0 Then
MsgBox SRCH & "は見つかりませんでした。", vbInformation
End If
End Sub
'//
全てのテキストファイルの中身を全部検索して、任意の語句が含まれるテキストファイル名を返すプログラムですね。
大変勉強になりました。
言葉足らずでしたが、やりたいと思っていたのは、
たとえば「杏果物.txt」という名前のファイルがあったとして、このファイルが現在openしているのかcloseしているのかを知りたかったのです。
openしているファイルをopenするよう指示したらエラーになりますから「閉じてください」と表示してプログラム終了。そして、closeしているならopenして中身をシートに読み出すというプログラムです。
どういうプログラムにすると、任意の名前のテキストファイルがopenしているかcloseしているか分かるでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのループ処理について 6 2022/05/06 15:35
- Excel(エクセル) エクセル マクロ テキストファイルを取り込む 複数の区切り文字で別々のセルに格納するには? 3 2022/08/10 21:10
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- フリーソフト テキストファイル内を検索したい 1 2022/06/01 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) VBA で エクスプロー操作 1 2023/05/31 16:13
- その他(ソフトウェア) powershell で出力したテキストファイルをvim で開くと文字化け 2 2023/01/11 21:39
このQ&Aを見た人はこんなQ&Aも見ています
-
ファイルが開かれているかどうかの判断
Visual Basic(VBA)
-
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
VBAにてEXCEL以外のファイル(テキストなど)がすでに開いているかの確認方法
Visual Basic(VBA)
-
-
4
CSVファイルが開かれているかどうか
Visual Basic(VBA)
-
5
VBAでのタイトルバーの取得
Visual Basic(VBA)
-
6
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
7
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
-
8
ExcelVBAで質問です。Workbook_openイベントが発生し
その他(Microsoft Office)
-
9
排他ロックが掛かっているファイルを読み込む
Visual Basic(VBA)
-
10
Excel.VBA テキストファイルを指定行数からの読み込む
Excel(エクセル)
-
11
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
12
【VBA】テキストファイルから特定の文字列を抽出して、エクセルに出力する
Excel(エクセル)
-
13
【Excel VBA】取り込んだファイルのファイル名を取得するには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バイナリファイルの区別
-
ATTファイルってどうやって開け...
-
データ変換
-
文字コードの変換(JISコードへ)
-
StreamReaderで読み込んだファ...
-
ファイル操作について。
-
CList, CArchive, CFileの組み...
-
バイナリデータの中からMidのよ...
-
テキストファイル(英語&日本...
-
VB(VBA)で、バイナリデータを使...
-
テキストファイルで一番使われ...
-
CSVファイルの時刻の形式について
-
エクセルファイルのダウンロード
-
ファイルアップロードについて
-
Eclipseで検索ができなくなった
-
ACCESSのCSV出力に関して
-
コマンドプロンプトのテキスト...
-
JavaでPDFファイルに変換するに...
-
JSPの代わりにHTMLじゃだめですか?
-
accessでクエリをExcelにエクス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ATTファイルってどうやって開け...
-
テキストファイルの一部分を抽...
-
テキストファイル固定長データ...
-
VB(VBA)で、バイナリデータを使...
-
バイナリデータの中からMidのよ...
-
WORDのVBAで差し込み印刷時、デ...
-
Excel VBAが徐々に遅くなる
-
既存のテキストファイルを開く方法
-
C言語のソースからコメントを抜...
-
VBSでテキストファイルの2行目...
-
wav ファイルから音声を数値デ...
-
エクセルVBAでメールの自動作成...
-
ファイル変換
-
テキストファイル(英語&日本...
-
[VB.NET] 処理の高速化を行いた...
-
テキストファイルをSQLServerデ...
-
VBA。開いているテキストファイ...
-
VBscriptでWebサイトから取得し...
-
テキストファイルの特定行の削...
-
テキストファイルを読んで、Exc...
おすすめ情報