• 締切済み

VBA テキストファイルを読み取り専用で開くには

VBAでテキストファイルをworkbookと同じように 読み取り専用で開く方法はないでしょうか? 開く直前にSetAttrで設定するとほかのユーザーが書き込みできなくなって しまいます。 24時間ずっと2分に一度くらい自動で書き込みが行われる テキストファイルを読み取り専用で開き、書き込み側も エラーを出すことなく書き込み続けることは可能でしょうか。 WorkBook.Openの読み取り専用のスイッチをTRUEとしたいところですが 行数がWorkBOOKの限界を超える場合もありますのでできません。 よろしくお願い致します。

みんなの回答

回答No.2

複写してから、読んではどうですか? たとえば、a_file.CSVを読み込み専用で読みたいとします。 手順としては以下のようになります。 1.a_fileCSVをa_file.csv_tempという名前に複写 2.a_file.csv_temp を読み込みバッファへ格納 3.a_file.csv_tempのクローズ 4.a_file.csv_tempを削除 5.バッファに格納された内容をworkbookに展開 とやると、元のファイルa_fileCSVには、排他がかからないようになると思いますけど!

koji0034
質問者

お礼

回答ありがとうございます。 複写とcopyメソッドでおこなうと copy時は書き込み不可となります。 ファイルが重いためコピーに時間がかかり その間書き込み不可となりエラーになります。

全文を見る
すると、全ての回答が全文表示されます。
noname#187541
noname#187541
回答No.1

こんばんは。 Openステートメントを使って、入力モードで開くとか?

koji0034
質問者

お礼

回答ありがとうございます。 inputで開くとoutputでは書き込みできません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • WORD VBAでテキストファイルを指定して...

    WORD2002を使っています。 WORD VBAでダイアログボックスを表示させ、オープンするファイルを指定しようとしています。 Documents.Open FileName:=dlg.Name, ReadOnly:=True でオープンするファイルがテキストファイルだけなので、ダイアログボックスに表示するファイルをテキストファイルだけにしたいと思っています。 どのように変更すればいいのでしょうか?

  • 自分のExcelを読み取り専用で開くVBAは?

    Excel2003を使っています。 基本的なことで恐縮なのですが、 Excelファイルを手動で開くとき、読み取り専用にするような方法はないでしょうか。 ファイルのプロパティから「読み取り専用」にチェックを入れても NASの性質なのか、チェックが外れてしまいます。 (前提として、ここの変更は考えていません) そこで、「読み取り専用を推奨する」にしたのですが、毎回メッセージボックスが出るため 「読み取り専用にしない」を選択される場合もあります。 そのため、VBAにその指示を書き込む方法を探していました。 たとえば、以下のコードを試してみました。 しかし、開いたファイルに指示しているため、当然ながら以下のメッセージが出ます。 "***.xls は既に開いています。2重に開くと、これまでの変更内容は破棄されます。***.xls を開きますか?" Private Sub Workbook_Open() Dim Filename As String Filename = ThisWorkbook.FullName With Workbooks.Open(Filename, , True) .ActiveSheet.Activate End With End Sub 「読み取り専用を推奨する」をオンにして、Workbook.Openの引数である ignorereadonlyrecommended を設定する…というのも、 やはり上記の点で引っかかります。 何か方法はないものでしょうか。。。

  • エクセル2000VBAでファイルを操作したい

    いつもお世話になっています。 エクセルVBAで別のワークブックを参照したいので workbooks.open Filename:="C:my documents\***.xls" とすると、そのオープンするワークブックのTisWorkbookのWorkbook_Open()で実行している(.show)メニュー(ユーザーフォーム)が開いてしまいます。 このとき、Workbook_Open()を実行させないでワークブックを開く方法って、 なにかありますか? Shiftを押しながらファイルを開くとき、実行されませんよね?それをVBAでできるのですか? よろしくお願いします。

  • 開かれた別ファイルが読み取り専用で開かれるのならば

    Sub tset() Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(MyFileName) xlApp.Visible = True Set xlBook = Nothing Set xlApp = Nothing End Sub こんな感じで、別ファイアルを開いているのですが、 開かれた別ファイル(MyFileName)が、 読み取り専用で開かれるのならば、と言う条件でコードを書きたいのですが どうすればいいでしょうか? MyFileName側の Private Sub Workbook_Open() End Sub で操作したいです。

  • vba 読み取り専用で他のファイルを開くには

    エクセルvbaで他のエクセルファイルを読み取り専用で開きたいのですが 「読み取り専用で!」とするにはどうすればいいですか? 今のままだとエラーになります。 ------------------------- Sub a() Set App = CreateObject("Excel.Application") Set xlBook = App.Workbooks.Open(MyFileName) With App .Visible = True .ReadOnly '実行時エラー438 End With Set App = Nothing End Sub

  • VBAでファイルを閉じる時に、他のエクセルファイルを閉じるには?

    VBAで、 Private Sub Workbook_Open() Workbooks.Open FileName:="バス時刻表.xls",ReadOnly:=True End Sub で、バス時刻表.xlsを自動的にオープンした後、 閉じる時に、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("バス時刻表.xls").Close End Sub で記述したら、エラーとなります。 どのようにすればいいのでしょうか? よろしくお願いします。

  • エクセル VBA 読み取り専用になっているファイルを開く場合

    エクセルVBAを取り組んでいるのですが、 "A"のファイルでマクロを作動させて、"B"のファイルを開くマクロを組んでいます。 その時に誰かが"B"のファイルを開いていた場合強制的に読み取り専用で開いてしまいます。 読み取り専用で開こうとした場合には、マクロを停止させるようにしたいのですが、どういう形にしたら良いでしょうか? ちなみに"B"ファイルを開いているマクロを下に乗せておきますので、変更しなければならない等がありましたら、教えていただけますと幸いです。 For Each wb In Workbooks If InStr(wb.Name, "B") > 0 Then flag = True Next wb If flag = True Then Else Workbooks.Open Filename:="Z:\B.xls" End If

  • VBAでテキストファイルを保存

    VBAでテキストファイルを保存したいのですが、EUCで保存できません。 EUCで保存するにはどうしたらいいのでしょうか? Open myFile For Output As #myNo です。

  • 【VBA】テキストファイルを指定行数からの読み込み

    こんばんは。 EXCEL VBAでテキストファイルを読み込む事について質問です。 VBAでテキストファイルをこちらから指定する行数(上から何番目という感じで)からデーターを読み込みたいのですが、どの関数をつかっていいかわからず困っています。 1行ずつ読みこむ「Input Line関数」では、無駄な行まで読み込むので動作が遅くなります。 読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。 ちなみに指定する行数は、ファイルによって違います。 あらかじめ「Input Line関数」で、ある文字が何行目にあるかを探す行為をあらかじめ行っています。 みなさまのアイデアを拝借したく、よろしくお願いします。

  • テキストファイルとして開くVBA

    フォルダC:\Users\USER\Desktop\あいう において このダイアログを開いて そのなかのファイル(A.xml)を txtファイルとして開いて その名前を テキスト.txt として 同名で保存したいのですが Dim FileName As Variant Dim NewFile As TextFile FileName = Application.GetOpenFilename() Set NewFile = TextFile.Open(FileName) NewFile.SaveAs "テキスト.txt" Activetxtfile.SaveAs FileName:="C:\Users\PC\Desktop\あいう\テキスト.txt", FileFormat:=TextFile どうも違うようです 御教示ください