[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『「置換をマクロで処理したいです」[nya] について』(nya)
投稿
[[20180703122641]] 『置換をマクロで処理したいです』(nya)
について...
返信が遅くなりまして申し訳ございません。
当方の質問の仕方に問題がございました。
エクセルファイルではなくcsvファイルですと
コードはだいぶ変わりますでしょうか?
今一度お伝えしますと置換したい文字が多いのです、
a列に置換前
b列に置換後
を用意して
そのマクロを置換したいファイルを開いたときに作動する
ようなイメージです。
ご意見、ご回答お待ちしております。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
逆に、メモリ上に読み込んでブックやシートを介さずに行う方法もあるでしょうけど、”エクセル”から遠ざかるので個人的には非推奨。(ただし速度を優先したいなら別)
(もこな2) 2018/10/12(金) 11:13
ご返答頂けますと幸いです。
もこな2さんご意見誠にありがとうございます。
(nya) 2018/10/12(金) 11:22
悪いけど、私は質問をそのまま放置するような質問者には回答したくないです。 (seiya) 2018/10/12(金) 11:29
seiyaさんも一方的に放置と決めつけるのは大人げないです。。
悪意などござません。
(nya) 2018/10/12(金) 11:47
であれば最初に事情を記せばよかったのでは?
返信が遅くなりまして申し訳ございません。
→ 体調不良等事情がありまして返信が遅くなりまして申し訳ございません。
とか
事情がわからなければseiyaさんのような反応が自然だと思います。
(私もそうです。貴殿の直前の書込と時間的にバッティングして、事情がわからないまま私も書き込みました。言葉に棘があったことはお詫びします)
(mm) 2018/10/12(金) 12:11
ただ理由があったと理解して頂きたいだけです。
名前無さんは実際いつも違う名前のひとですよね、、
mmさんのおっしゃるとおりですね。
申し訳ございませんでした。
(nya) 2018/10/12(金) 12:12
個人的には体調不良で対応できなかったという理由があったにせよ、もらった回答をないがしろにして(コードを理解する努力をせず)、仕様を変えたからまたコードをくれという言い方をしてしまえば、そりゃ怒られるだろうなぁと思います。
なので、あらためて聞くにしても、もらった回答をどのように理解して、どのようなものを作ったら、希望の動作と実際の結果でどのような違いが出てしまったのかを踏まえて"質問"するようにしてみてはどうでしょうか?
未だに、”何を”置換するのか提示がないので、質問と関係ない話しかできませんが。。。
(もこな2) 2018/10/12(金) 12:42
”何を”置換するというのは
先ほどからcsvファイルとお伝えしておりますが違うのでしょうか??
なににしてももうご回答頂ける雰囲気ではないので失礼いたします。
以前のコードをもう一度いじってみます。
(nya) 2018/10/12(金) 13:06
シート(データ)全体を見るのか、セルの値を個別に見るのかで、ReplaceメソッドとReplace関数で違いが出てくるとおもうけど、私ももう知らない。
(もこな2) 2018/10/12(金) 13:20
そこについては説明済みなので見落とされております。
指摘されるならまずご自身は完璧にしてください。
こっちは完ぺきではないのでご相談しているのです。
では
(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.