拡張子の無いファイル内のある文字数より、2文字のデータを置き換えしたいと思ってます。その結果を拡張子の無い同じファイルに上書き(もしくは読み込み時にコピーする事が出来れば、より一層に嬉しい)したいのです。
※使用するソフトは、EXCEL2003、ACCESS2003もしくはフリーのテキストエディタにてお願いします。
例
ファイル名:KAS
データ内容:
12345678901234567890
11111111112222222222
1.KASデータバックアップ
2.KASデータを読み込み
3.11文字目から2文字を A1 にすべて置き換え
4.KASファイルに上書き
変更データ内容:
1234567890A134567890
1111111111A122222222
A 回答 (5件)
- 最新から表示
- 回答順に表示
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桁目を置換して書き出す。
新規ファイルを作成して書き出す。
この回答への補足
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.のフォームを起動させること等が分かりません。
よろしくお願いいたします。
No.3
- 回答日時:
前提確認ですが、
レコードすべて半角文字で固定長でしょうか?。
何文字目の?や何バイト目の?というときは文字列操作の関数を使います。
LEFTで左10文字取得+“A1”+RIGHTで右から8文字取得
や
LEFTで左10文字取得+“A1”+MIDで13桁目から8文字取得
で
編集し出力します。
アクセスやエクセルのVBAで可能です。テーブル作ったりセルに値を入れたりする必要はありません。ソース準備できたら掲載します。
アクセスのマクロでのプロシージャ実行、エクセルのマクロでのVBA実行、このあたりを使えるよう準備しておいて下さい。
No.4
- 回答日時:
エディタの正規表現置換で以下のようにすればどうでしょうか。
VBAは試してはいませんが、私も#2さんのように書いてしまうと思います。同じものを書いても能がありませんからね。
単純な内容で、どのエディタでも可能だと思います。ただし、QXは、あまり知りません。
今どきの正規表現を持つエディタならたぶんどれでも可能ですが、私の持っているフリーのエディタは、インストールがどれもややこしいです。Sakura Editor なんか良いと思いますが、正規表現ライブラリが変わってから、一括のインストールではなくなったような気がします。QX は、10年ぐらい前からあるものですが、詳しくは知りません。良いものだから続いているのでしょうね。
検索 (\d{10})(\d\d)
置換 $1A1
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実行、でも(フォーム作らなくても)動くのでは?。
※ざっーと作ったので体裁はすみません、整えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- その他(ブラウザ) cvsファイルをダウンロードすると、自動で拡張子がExcelのものになる 5 2022/07/20 21:21
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Excel(エクセル) Excelの複数人での参照について 2 2022/06/01 13:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
Excel 日付を比較したら、同じ...
-
Outlookを立ち上げたらGoogleロ...
-
outlookのメールが固まってしま...
-
会社PCのメールが更新されない
-
【スプレッドシート】指定の日...
-
ウィンドウィズ メモ帳で日付だ...
-
英数字のみ全角から半角に変換
-
Excelで空白以外の値がある列の...
-
Microsoft Formsの「個人情報や...
-
microsoft office
-
MicrosoftOfficeについて質問で...
-
マイクロソフト 一時使用コード...
-
outlookで宛先が異なるメールを...
-
Outlookでの時間指定送信機能に...
-
【スプレドシート】目標達成の...
-
自分の専門分野の仕事。初見で...
-
Microsoft Officeを2台目のPCに...
-
【Excel VBA】PDFを作成して,...
-
エクセルでXLOOKUP関数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
【スプレッドシート】指定の日...
-
英数字のみ全角から半角に変換
-
会社PCのメールが更新されない
-
マイクロソフト 一時使用コード...
-
Office 2021 Professional Plus...
-
エクセルで例えば、関数を使っ...
-
Microsoft Formsの「個人情報や...
-
1つのPCに「Excel 2010」「Exc...
-
エクセルで例えば、A1に㈱ベ...
-
理由を教えてください。
-
エクセルでXLOOKUP関数...
-
マイクロソフト オフィスについて
-
VLOOKUP関数について
-
teams設定教えて下さい。 ①ビデ...
-
Googleのスプレッドシートでシ...
-
【Excel VBA】PDFを作成して,...
-
Microsoft365で写真をアルバム...
-
Outlook で宛先が複数の場合の人数
-
Excel テーブル内の空白行の削除
おすすめ情報