
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で質問しましょう!
この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
排他ロックが掛かっているファイルを読み込む
Visual Basic(VBA)
-
9
ExcelVBAで質問です。Workbook_openイベントが発生し
その他(Microsoft Office)
-
10
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
11
【VBA】テキストファイルから特定の文字列を抽出して、エクセルに出力する
Excel(エクセル)
-
12
Excel.VBA テキストファイルを指定行数からの読み込む
Excel(エクセル)
-
13
【Excel VBA】取り込んだファイルのファイル名を取得するには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでメールの自動作成...
-
VBでのテキストファイルの 読み...
-
Frontpage Express の使い方
-
音楽配信ホームページ製作
-
ファイル操作について。
-
テキストファイルの一部分を抽...
-
C言語のソースからコメントを抜...
-
.javaや.classのアイコンを変え...
-
CList, CArchive, CFileの組み...
-
HTMLまたはJavaScriptでフ...
-
コマンドプロンプトのテキスト...
-
プロパティファイルで日本語を扱う
-
Access2000クエリーをExcelに出...
-
C#にてlistView1からXMLファイ...
-
VBAで、JPG写真の撮影日時を読...
-
Excelファイル 修復不可能
-
PHPからPythonに移行したい
-
C#でtiffファイルのページ数を取得
-
0バイトのテキストファイル
-
HP500デザインジェットを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ATTファイルってどうやって開け...
-
テキストファイルの一部分を抽...
-
既存のテキストファイルを開く方法
-
VB(VBA)で、バイナリデータを使...
-
テキストファイル固定長データ...
-
テキストファイル内容の、16進...
-
WORDのVBAで差し込み印刷時、デ...
-
VBSでテキストファイルの2行目...
-
Excel VBAが徐々に遅くなる
-
StreamReaderで読み込んだファ...
-
ファイル変換
-
[VB.NET] 処理の高速化を行いた...
-
テキストファイルをSQLServerデ...
-
TXTファイルデーターをEX...
-
バイナリファイルの区別
-
Zbarというソフトについて
-
テキストファイルの特定行の削...
-
バイナリデータの中からMidのよ...
-
エクセルVBAでメールの自動作成...
-
UTF-8とASCIIコードにおける互...
おすすめ情報