• 締切済み

拡張子の無いファイル内のある文字数より、2文字のデータを置き換えしたい

拡張子の無いファイル内のある文字数より、2文字のデータを置き換えしたいと思ってます。その結果を拡張子の無い同じファイルに上書き(もしくは読み込み時にコピーする事が出来れば、より一層に嬉しい)したいのです。 ※使用するソフトは、EXCEL2003、ACCESS2003もしくはフリーのテキストエディタにてお願いします。 例 ファイル名:KAS データ内容: 12345678901234567890 11111111112222222222 1.KASデータバックアップ 2.KASデータを読み込み 3.11文字目から2文字を A1 にすべて置き換え 4.KASファイルに上書き 変更データ内容: 1234567890A134567890 1111111111A122222222

みんなの回答

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

ファイルを入力して編集し出力 の簡単なサンプルです。こんな感じで記載ですみます。 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実行、でも(フォーム作らなくても)動くのでは?。 ※ざっーと作ったので体裁はすみません、整えてください。

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

エディタの正規表現置換で以下のようにすればどうでしょうか。 VBAは試してはいませんが、私も#2さんのように書いてしまうと思います。同じものを書いても能がありませんからね。 単純な内容で、どのエディタでも可能だと思います。ただし、QXは、あまり知りません。 今どきの正規表現を持つエディタならたぶんどれでも可能ですが、私の持っているフリーのエディタは、インストールがどれもややこしいです。Sakura Editor なんか良いと思いますが、正規表現ライブラリが変わってから、一括のインストールではなくなったような気がします。QX は、10年ぐらい前からあるものですが、詳しくは知りません。良いものだから続いているのでしょうね。 検索  (\d{10})(\d\d) 置換  $1A1

すると、全ての回答が全文表示されます。
  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

前提確認ですが、 レコードすべて半角文字で固定長でしょうか?。 何文字目の?や何バイト目の?というときは文字列操作の関数を使います。 LEFTで左10文字取得+“A1”+RIGHTで右から8文字取得 や LEFTで左10文字取得+“A1”+MIDで13桁目から8文字取得 で 編集し出力します。 アクセスやエクセルのVBAで可能です。テーブル作ったりセルに値を入れたりする必要はありません。ソース準備できたら掲載します。 アクセスのマクロでのプロシージャ実行、エクセルのマクロでのVBA実行、このあたりを使えるよう準備しておいて下さい。

すると、全ての回答が全文表示されます。
  • qyukip
  • ベストアンサー率40% (13/32)
回答No.2

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桁目を置換して書き出す。 新規ファイルを作成して書き出す。

totopika
質問者

補足

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.のフォームを起動させること等が分かりません。 よろしくお願いいたします。

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

拡張子が無いファイルは古いMacOSで作成されたデータ以外一般には存在しません Windowsで作成されたデータなら必ず拡張子が有ります 表示されていなくても見れないだけです 元のデータが何かわからないと修正どころか保存すると別物になりますよ プロパティーで確認しましょ それでもわからなければ何のデータなのか突き止めましょ

totopika
質問者

補足

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

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

関連するQ&A