[[20181012102028]] 『「置換をマクロで処理したいです」[nya] についax(nya) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『「置換をマクロで処理したいです」[nya] について』(nya)

投稿
[[20180703122641]] 『置換をマクロで処理したいです』(nya) 
について...

返信が遅くなりまして申し訳ございません。

当方の質問の仕方に問題がございました。
エクセルファイルではなくcsvファイルですと
コードはだいぶ変わりますでしょうか?

今一度お伝えしますと置換したい文字が多いのです、
a列に置換前
b列に置換後
を用意して
そのマクロを置換したいファイルを開いたときに作動する
ようなイメージです。

ご意見、ご回答お待ちしております。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


前質問でも指摘されてますけど、置換”される”対象がなんなのかはっきりさせないと望む回答つかないでしょう。
ちなみに、CSVファイルならブックとして"開く"ことやシート上に"取り込む"ことができますから、エクセルブックを対象として置換する方法がわかっているなら、応用は容易でしょう。

逆に、メモリ上に読み込んでブックやシートを介さずに行う方法もあるでしょうけど、”エクセル”から遠ざかるので個人的には非推奨。(ただし速度を優先したいなら別)
(もこな2) 2018/10/12(金) 11:13


前回コードをご提示頂いた
seiyaさん
mmさん
ゆさん

ご返答頂けますと幸いです。

もこな2さんご意見誠にありがとうございます。
(nya) 2018/10/12(金) 11:22


 悪いけど、私は質問をそのまま放置するような質問者には回答したくないです。
(seiya) 2018/10/12(金) 11:29

放置といいますか多忙のため掲示板をみれておりませんでした。。
(nya) 2018/10/12(金) 11:33

あきらめます、ありがとうございました。
(nya) 2018/10/12(金) 11:33

3か月ノーコメントの挙句、都合で悪くなるとこれでは、さすがに姿勢を疑われませんかね。
私も3か月後に回答します。(その時覚えていればですが)
(mm) 2018/10/12(金) 11:35

ですから、多忙でしたのと体調不良などございました。。
三か月後に回答するきのないのにそのような言い草は大人げない。
(nya) 2018/10/12(金) 11:36

一寸言葉が過ぎましたね。失礼しました。
(mm) 2018/10/12(金) 11:42

mmさん
覚えておきますね。

seiyaさんも一方的に放置と決めつけるのは大人げないです。。
悪意などござません。
(nya) 2018/10/12(金) 11:47


実際に考えて悩んでくれていた方々を一切の連絡無く3ヶ月も放置してるんだから
悪意と取られても当然だと思います
大人げないのは逆ギレしてるnyaさんのほうですね
(無) 2018/10/12(金) 12:02

 >seiyaさんも一方的に放置と決めつけるのは大人げないです。。

であれば最初に事情を記せばよかったのでは?

返信が遅くなりまして申し訳ございません。
→ 体調不良等事情がありまして返信が遅くなりまして申し訳ございません。
とか

事情がわからなければseiyaさんのような反応が自然だと思います。
(私もそうです。貴殿の直前の書込と時間的にバッティングして、事情がわからないまま私も書き込みました。言葉に棘があったことはお詫びします)

(mm) 2018/10/12(金) 12:11


逆切れしてませんよ。
感謝しておりますし、お待たせしたこと事態は申し訳ないと思っております。

ただ理由があったと理解して頂きたいだけです。

名前無さんは実際いつも違う名前のひとですよね、、

mmさんのおっしゃるとおりですね。
申し訳ございませんでした。
(nya) 2018/10/12(金) 12:12


あぁ、よく見たらずいぶん前の話なんですね。

個人的には体調不良で対応できなかったという理由があったにせよ、もらった回答をないがしろにして(コードを理解する努力をせず)、仕様を変えたからまたコードをくれという言い方をしてしまえば、そりゃ怒られるだろうなぁと思います。

なので、あらためて聞くにしても、もらった回答をどのように理解して、どのようなものを作ったら、希望の動作と実際の結果でどのような違いが出てしまったのかを踏まえて"質問"するようにしてみてはどうでしょうか?

未だに、”何を”置換するのか提示がないので、質問と関係ない話しかできませんが。。。
(もこな2) 2018/10/12(金) 12:42


もこな2さん

”何を”置換するというのは
先ほどからcsvファイルとお伝えしておりますが違うのでしょうか??

なににしてももうご回答頂ける雰囲気ではないので失礼いたします。

以前のコードをもう一度いじってみます。
(nya) 2018/10/12(金) 13:06


>なににしてももうご回答頂ける雰囲気ではないので失礼いたします。
まぁ がんばってください。

シート(データ)全体を見るのか、セルの値を個別に見るのかで、ReplaceメソッドとReplace関数で違いが出てくるとおもうけど、私ももう知らない。
(もこな2) 2018/10/12(金) 13:20


もこな2さん

そこについては説明済みなので見落とされております。
指摘されるならまずご自身は完璧にしてください。

こっちは完ぺきではないのでご相談しているのです。

では
(nya) 2018/10/12(金) 14:00


もう知らないといいつつ、コメントしますが。。

推奨しないと言ったけど、逆にCSVファイルならString型の変数に全部読み込んでから、Replace関数で置換するって手が使えそうな気もしますが・・・完璧にするのは無理なので、試す気もないし、私には回答権は無いようですから撤退しますね。
では
(もこな2) 2018/10/12(金) 14:10


回答って程の事じゃないですが…

CSVを一度エクセルに変換してから、以前の質問で提供していただいたコードを実行し置換し、エクセルからCSVに変換しなおすのじゃだめなんでしょうか?

まぁ、CSVからエクセルに変換したり、エクセルからCSVに変換したりしている間に中のデータがちょっと変わってしまったりするかもしれませんが…
自分もあまりCSVを扱う機会がありませんので…(^^;
(虎) 2018/10/12(金) 14:21


別の質問中で回答するような身ではないのですが、ちょっと気になったもので・・。

もこな2さんもおっしゃってますがcsvを一旦全部読み込んでReplace関数で置換処理、ファイルに
書き込みなおすのが一番簡単じゃないでしょうか。
テストしてみてください。

 Option Explicit
 Sub Sample()

    Dim FSO As Object
    Dim csvFile As Object
    Dim strData
    Dim Rw As Long
    Dim csvPath As String

    'csvファイル選択ダイアログ
    csvPath = Application.GetOpenFilename("csvファイル,*.csv")
    If csvPath = "False" Then Exit Sub

    'インスタンス生成
    Set FSO = CreateObject("Scripting.FileSystemObject")

    'csvファイルのデータを変数に格納
    Set csvFile = FSO.OpenTextFile(csvPath, 1)
    strData = csvFile.ReadAll
    csvFile.Close

    '順に置換処理
    For Rw = 1 To Range("A" & Rows.Count).End(xlUp).Row
        If InStr(strData, Range("A" & Rw).Value) > 0 Then
            strData = Replace(strData, Range("A" & Rw).Value, Range("B" & Rw).Value)
        Else
            Range("C" & Rw).Value = "見つかりません"
        End If
    Next Rw

    '置換したデータでファイル作り直し
    Set csvFile = FSO.OpenTextFile(csvPath, 2)
    csvFile.Write strData
    csvFile.Close

    '終了処理
    MsgBox "置換完了"
    Set FSO = Nothing

 End Sub
(助六) 2018/10/12(金) 14:51

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.