プロが教えるわが家の防犯対策術!

拡張子の無いファイル内のある文字数より、2文字のデータを置き換えしたいと思ってます。その結果を拡張子の無い同じファイルに上書き(もしくは読み込み時にコピーする事が出来れば、より一層に嬉しい)したいのです。
※使用するソフトは、EXCEL2003、ACCESS2003もしくはフリーのテキストエディタにてお願いします。


ファイル名:KAS
データ内容:
12345678901234567890
11111111112222222222

1.KASデータバックアップ
2.KASデータを読み込み
3.11文字目から2文字を A1 にすべて置き換え
4.KASファイルに上書き

変更データ内容:
1234567890A134567890
1111111111A122222222

A 回答 (5件)

拡張子が無いファイルは古いMacOSで作成されたデータ以外一般には存在しません


Windowsで作成されたデータなら必ず拡張子が有ります
表示されていなくても見れないだけです
元のデータが何かわからないと修正どころか保存すると別物になりますよ

プロパティーで確認しましょ
それでもわからなければ何のデータなのか突き止めましょ

この回答への補足

ある専用ソフトで利用するファイルなので、拡張子は無いのです。QX等のエディタを指定して開くことは可能です。

よろしくお願いいします

補足日時:2010/06/14 15:14
    • good
    • 0

ExcelのVBAでやるとすれば以下の様になります。



Private Sub CommandButton1_Click()

Dim strInFileName As String '入力ファイル名
Dim strBUFF As String 'レコードを読みこむバッファ
Dim iRowNo As Integer
Dim i As Integer
iRowNo = 0
strInFileName = "C:\KAS" 'パスとファイル名
'ファイルの存在チェック
If Dir(strInFileName) = "" Then
MsgBox strInFileName & "が見つかりません"
Exit Sub
End If
'ファイルを入力モードで開く
Open strInFileName For Input As #1
Do While EOF(1) = False
iRowNo = iRowNo + 1
Line Input #1, strBUFF 'ファイルの内容を1行読み込み
Cells(iRowNo, 1).Value = Left(strBUFF, 10) & "A1" & Mid(strBUFF, 13) '11~12桁目を置換しセルに保存
Loop
Close #1
Open strInFileName & "_bk" For Output As #1 'ファイルを新規作成(ファイル名の後ろに_bkをつけてます)
For i = 1 To iRowNo
'データ書き込み
Print #1, Cells(i, 1).Value
Next
Close #1 'ファイルを閉じる
End Sub

動作としてはエクセルのボタンを押下されると
指定のファイルを読み込み、11~12桁目を置換して書き出す。
新規ファイルを作成して書き出す。

この回答への補足

qyukip殿 詳細な回答をいただき、ありがとうございました。

VBAを知らないので、大変申し訳ないのですが教えてください。
私のイメージでは
1.ABC.xlsを開く
2.「マクロを有効にしますか?」は「OK」
3.フォームにて作成した「置換え」ボタンをクリックする
4.下記の
Private Sub CommandButton1_Click()
MsgBox "OKボタンを押しました。"
Call HHTdata
End Sub
が実行される
5.お教えいただいたVBAを「Private Sub HHTdata()」としてEnd Subまで実行される。
6.作成したフォームを×で閉じる
7.「_bk」ファイルが作成されている

上記が希望なのですが。。。3.のフォームを起動させること等が分かりません。
よろしくお願いいたします。

補足日時:2010/06/14 20:27
    • good
    • 0

前提確認ですが、


レコードすべて半角文字で固定長でしょうか?。

何文字目の?や何バイト目の?というときは文字列操作の関数を使います。
LEFTで左10文字取得+“A1”+RIGHTで右から8文字取得

LEFTで左10文字取得+“A1”+MIDで13桁目から8文字取得

編集し出力します。

アクセスやエクセルのVBAで可能です。テーブル作ったりセルに値を入れたりする必要はありません。ソース準備できたら掲載します。

アクセスのマクロでのプロシージャ実行、エクセルのマクロでのVBA実行、このあたりを使えるよう準備しておいて下さい。
    • good
    • 0

エディタの正規表現置換で以下のようにすればどうでしょうか。


VBAは試してはいませんが、私も#2さんのように書いてしまうと思います。同じものを書いても能がありませんからね。

単純な内容で、どのエディタでも可能だと思います。ただし、QXは、あまり知りません。
今どきの正規表現を持つエディタならたぶんどれでも可能ですが、私の持っているフリーのエディタは、インストールがどれもややこしいです。Sakura Editor なんか良いと思いますが、正規表現ライブラリが変わってから、一括のインストールではなくなったような気がします。QX は、10年ぐらい前からあるものですが、詳しくは知りません。良いものだから続いているのでしょうね。

検索  (\d{10})(\d\d)
置換  $1A1
    • good
    • 0

ファイルを入力して編集し出力


の簡単なサンプルです。こんな感じで記載ですみます。

Private Sub HHTdata()

dim indata as string
dim outdata as string

open "C:\KAS" for input as #1 'パスと入力ファイル名
open "C:\KAS_bk" for output as #2 'パスと出力ファイル名
Do until eof(1)

line input #1,indata
outdata = left(indata,10) & "A1" & right(indata,8)
print #2,bbb

loop
close #1
close #2
msgbox("終了")


end sub

実行するときは、VBAの画面にて、
Private Sub HHTdata()
にカーソルをおいてF5実行、でも(フォーム作らなくても)動くのでは?。


※ざっーと作ったので体裁はすみません、整えてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!