戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
datファイルを編集して上書き保存したい

    [195503] datファイルを編集して上書き保存したい-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/20(16:36))
    □U R L/
      次のようなデータがあります。
      
      行数	変更前	変更後
      1	/AAA	/AAA
      2	/BBB	/BBB
      *3	3,[9]	5,[9]
      4	/CCC	/CCC
      5	1,2,b3-6	1,2,b3-6
      6	/DDD	/DDD
      *7	0,0,0,[0],0,[0]	1,2,3,[0],4,[0]
      8	/EEE	/EEE
      *9	[1],4	[1],4
      
      行数に米印がある3,7,9行目たちを
      []のデータはそのままで、それ以外の値を
      変更後のように編集して上書き保存したいです。
      どのような方法がありますか?
      宜しくお願い致します。
      




    [195504] Re[1]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/20(16:38))
    □U R L/
      図が見づらくすみません。
      
      
      行数	変更前	変更後
      1	/AAA	/AAA
      2	/BBB	/BBB
      *3	3,[9]	5,[9]
      4	/CCC	/CCC
      5	1,2,b3-6	1,2,b3-6
      6	/DDD	/DDD
      *7	0,0,0,[0],0,[0]	1,2,3,[0],4,[0]
      8	/EEE	/EEE
      *9	[1],4	[1],4
      
      
      宜しくお願い致します。




    [195505] Re[2]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/20(16:41))
    □U R L/
      何度もすみません。
      9行目が間違っていたので再掲します。
      
      行数	変更前	変更後
      1	/AAA	/AAA
      2	/BBB	/BBB
      *3	3,[9]	5,[9]
      4	/CCC	/CCC
      5	1,2,b3-6	1,2,b3-6
      6	/DDD	/DDD
      *7	0,0,0,[0],0,[0]	1,2,3,[0],4,[0]
      8	/EEE	/EEE
      *9	[1],4	[1],0
      
      
      宜しくお願い致します。




    [195507] Re[3]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ kazuo -(2023/01/21(12:36))
    □U R L/

      質問します。

      datファイルとは、拡張子が.datのファイルのことですか?
      もし、そうならどんな形式ですか?(Outlook、文字コードなにがしのテキストファイル、他アプリ用)

      datファイルには変更前の値のみ記載されているのですね?
      そして、[ ]で囲まれている文字がある行に対してのみ変換するということで良いですか?
      もし、そうなら3→5、0,0,0,0→1,2,3,4、4→0はどういうルールがあるのですか?




    [195510] Re[4]: datファイルを編集して上書き保存したい-

    保留中です・・・ / 記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/22(04:03))
    □U R L/

      kazuoさん

      ご覧くださりありがとうございます。
      ご質問に回答致します。

      datファイルは、仰る通り拡張子が「.dat」です。
      形式というのはどこを見たらといですか?すみません。
      このファイルはあるシステムで作られ使用する定義ファイルみたいなものです。

      説明不足で申し訳ありません。
      このファイルは常に「9行」で構成されており、
      「/」で始まる文字、/AAAなども、いつも同じです。(項目名のようです)
      そして、変更がかかる行もいつも同じで、3行目、7行目、9行目です。
      それらの行の[]以外の部分を変更します。
      3行目の変更後の「5」、9行目の変更後の「0」は固定値で、
      7行目は可変になるため、変数で対応を考えています。(別の部分から値取得)

      はじめworkbooks.openなどでいけると思ってたのですができず、
      調べてみるとdatファイルを扱う情報がほとんど見つけられず困っていました。
      説明不足で申し訳ありませんでした。
      また何かあればご質問ください。どうぞ宜しくお願い致します。







    [195512] Re[5]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ kazuo -(2023/01/22(14:16))
    □U R L/

      メモ帳を起動下さい
      ファイル(F)-開く(O)... でその.datファイルを指定し、
      開くウィンドーの下 文字コード(E): を 自動検出にして 開く(O)をクリックして下さい。
      きちんと読めることを確認し、

      メモ帳の下の右2つを教えて下さい。
      例)Windows(CRLF) ANSI




    [195514] Re[6]: datファイルを編集して上書き保存したい-

    保留中です・・・ / 記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/22(18:08))
    □U R L/

      kazuoさん

      お世話になります、色々とありがとうございます。
      確認したところ、「Windows(CRLF) UTF-8」とありました。
      これだとVBAでは処理できないですか?
      どうぞ宜しくお願い致します。




    [195516] Re[7]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ kazuo -(2023/01/23(13:00))
    □U R L/
      >確認したところ、「Windows(CRLF) UTF-8」とありました。
      もちろん、ファイルi/oで作成可能ですが、
      これならexcelでも編集可能です。
      時間が取れないので、
      Excelへの読み込みと書き込み後.batに名前変更のみとりあえず乗せます。
      
      Sub 読み込み()
          Dim fileName
          fileName = Application.GetOpenFilename("バッチファイル,*.bat")
          If fileName = False Then Exit Sub
          FileCopy fileName, CurDir & "\しの.csv"
          Workbooks.Open CurDir & "\" & "しの.csv"
      End Sub
      
      Sub 書き込み()
          Workbooks("しの.csv").Close True
          On Error Resume Next
          Kill CurDir & "\" & "しの.bat"
          On Error GoTo 0
          Name CurDir & "\" & "しの.csv" As CurDir & "\" & "しの.bat"
          MsgBox CurDir & "\" & "しの.bat" & vbCrLf & "として保存しました"
      End Sub
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195518] Re[8]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/23(13:20))
    □U R L/

      kazuoさん

      ご連絡ありがとうございました。
      頂いたコードの確認もさせて頂きます。
      ただすみません、私の説明が不十分でした。
      やりたいことは、
      フォルダにあるdatファイルの内容を
      上記に記載している条件で「直接」処理し、上書き保存したいです。
      Excelに取り込むことなく、配列などで行えるでしょうか?
      どうぞ宜しくお願い致します。




    [195519] Re[9]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/23(13:29))
    □U R L/

      kazuoさん

      書き忘れてしまいました。
      私も色々調べてtextstreamが使えるのでは?と思い
      readallで変数に入れ、シートに出力はできました。
      しかし、シートは使わずに、この変数の状態で処理はできないですかね?
      すみません、配列もよくわかっておらず、
      例えば、配列にした場合、何行目や何文字目を指定して
      編集できるのでしょうか?どうぞ宜しくお願い致します。




    [195520] Re[10]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/23(13:51))
    □U R L/

      kazuoさん

      度々すみません、シートに出力成功したのはLineInputでした。
      いろいろテストしててゴッチャになってました。すみません。




    [195524] Re[11]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ kazuo -(2023/01/23(18:39))
    □U R L/
      失礼、カンマ区切りがあるとExcel経由でcsvはダブルコーテーションが付いてしまいダメですね。
      
          
      Sub 上書き()
          Dim fileName
          Dim ss As String
          Dim s() As String
          Dim i As Long, j As Long
          Dim sRep()  As String, s7() As String
          
          sRep = Split("1 2 3 4") '7行目変更後の数値を半角スペース区切りで
          
          fileName = Application.GetOpenFilename("バッチファイル,*.bat")
          If fileName = False Then Exit Sub
          
          With CreateObject("ADODB.Stream")
              .Charset = "UTF-8"
              .Open
              '読み込み
              .LoadFromFile fileName
              ss = .readtext
              
              '変更
              s = Split(ss, vbCrLf)   'splitは0ベースなので分り易く? -1を書いています
              s(3 - 1) = "5,[" & Split(s(3 - 1), "[")(1)  '3行目を5 に変更
              s(9 - 1) = Split(s(9 - 1), "]")(0) & "],0"  '9行目を0に変更
              s7 = Split(s(7 - 1), ",")                   '7行目をsRepリストに変更
              For i = 0 To UBound(sRep)
                  Do Until Not s7(j) Like "[[]*"      '[*以外を置き換え
                      j = j + 1
                      If UBound(s7) < j Then
                          MsgBox "リプレースリスト sRep の指定ミスが考えられます"
                          Exit Sub
                      End If
                  Loop
                  s7(j) = sRep(i)
                  j = j + 1
              Next
              s(7 - 1) = Join(s7, ",")
              ss = Join(s, vbCrLf)
              
              '上書き
              .Position = 0
              .writetext ss, 0
              .savetoFile fileName, 2
              .Close
          End With
      End Sub
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195528] Re[12]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/24(04:38))
    □U R L/
      kazuoさん
      
      お世話になります、コードありがとうございました。
      掲載したデータで確認したところ動作は完璧でした。
      ここでまた説明不足で申し訳ありません。
      実際のデータには[]がありません。わかりやすくと思い私が付けてしまいました。
      変更箇所は
      3行目は1文字目
      7行目は1文字目、2文字目,3文字目,5文字目
      9行目は2文字目
      となります。本当に申し訳ありません。
      それとAsRep = Split("1 2 3 4")部分を変数対応したいです。
      AAA(3)という変数を使いたく、上記のコードを
      sRep = Split(AAA(0) AAA(1) AAA(2) AAA(3))
      としたらエラーになってしまいました。
      どのように直したらよいかも教えて下さい。
      どうぞ宜しくお願い致します。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195529] Re[13]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ kazuo -(2023/01/24(08:42))
    □U R L/

      動作完璧ではありません。
      朝、あれ、BOM削除したっけと思い起きたのですが、削除忘れていました。
      BOM削除は終わったのですが、新たな質問。。。暫くお待ち下さい。




    [195530] Re[14]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ kazuo -(2023/01/24(08:54))
    □U R L/

      >7行目は1文字目、2文字目,3文字目,5文字目
      文字目って私の感覚では
      1,3,5,0,0,0の場合
      1文字目:1
      2文字目:,
      3文字目:3
      5文字目:5
      です。
      実際の値を0,0,0,0,0では無く、
      12,3,4,567,89とかで説明下さい。




    [195532] Re[15]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/24(13:21))
    □U R L/

      kazuoさん

      お世話になります、お忙しい中ご対応ありがとうございます!
      私の説明不足の上、説明が下手ですみませんでした。

      文字目の話ですが、例えば「12,3,4,567,89」こちらのデータでいうと
      1文字目は、「12」
      2文字目は、「3」
      3文字目は、「4」
      5文字目は、「89」
      となります。つまりは変更行だけカンマ区切りになります。
      お手数をお掛けしてすみません。どうぞ宜しくお願い致します。




    [195533] Re[16]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/24(13:35))
    □U R L/

      kazuoさん

      お世話になります、度々すみません。
      BOMのお話ですが、他の者に聞いたところSJISになっている人もいたようです。
      頂いたコードはSJISにしてもきちんと処理されてましたが、
      CharsetをSJISにしたとして、今後大きな影響は考えられますか?
      もしくは、この文字コードを意識しない方法はありますか?
      Charsetをコメントアウトしたらエラーになってしまいました。
      ちなみに、私たち側にシステムがないため、システムの動作確認ができずにいます。
      (他の人のはなしだとSIJIでもいいというひともいます。。)
      どうぞ宜しくお願い致します。




    [195534] Re[17]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ kazuo -(2023/01/24(17:08))
    □U R L/

      >CharsetをSJISにしたとして、今後大きな影響は考えられますか?
      >もしくは、この文字コードを意識しない方法はありますか?
      >システムの動作確認ができずにいます。

      当然私にはシステムで問題無いかは解りませんが、
      全てASCIIコードのデータ(&h00〜&h7F)のみということでしょうか?
      (漢字などの全角文字が無い、半角カナやウムラルト文字も無い)
      もし、そうならS-JISもUTF-8も共通です。

      ちょっと無駄な作業になりそうなので、コードの提供は見送ります。




    [195536] Re[18]: datファイルを編集して上書き保存したい-

    記事引用/メール受信=OFF■

    □投稿者/ しの -(2023/01/24(19:43))
    □U R L/

      kazuoさん

      お世話になります、お返事ありがとうございました。
      なぜ私がUTF8になったのかはわからないのですが、
      確認したところSJISで大丈夫とのことでした。
      色々とご面倒をお掛けしてすみませんでした。
      まだ解決に至らないため暫く保留とさせて頂きます。
      kazuoさん、本当にありがとうございました。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G