[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エクセルを開かず一定の文字列や値を更新』(じゅじゅ)
エクセルを開かず一行目の項目を指定したら
その列全てに文字列や値を入れて最後に
何件更新しましたと結果も分かるマクロコード
があればいいなあと思っております。
開いてから更新して保存するまでが、情報量が多いcsvを
待つ時間がもったいなくて。。
イメージですが、
code price sp-additional
という項目が一行目に入っているcsvに対して
sp-additional
の列に文字列や値を入れる場合、
1.更新したいcsvファイルを選択
2.msgboxなどで対象の項目を入力する(sp-additionalなど)
3.msgboxなどで更新したい値や文字列などを入力
4.例えば、1000列あるcsvだとしたら1000件成功しましたと出れば分かりやすいので
コメントが最後に出る。
5.名前を付けて保存したいので保存画面が開く
という素人の考えた流れですが、他の方がマクロが書きやすい場合は
そちらでも構いません。
質問に対して不足していることがあるかもしれませんが、宜しくお願い致します。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
の応用
Sub test() Dim fn As String, txt As String, myValue, n As Long, Dest As String Dim x, y, myCode As String, myIndex, i As Long fn = Application.GetOpenFilename("CSVFiles,*.csv") If fn = "False" Then Exit Sub myCode = InputBox("条件項目名の入力", , "sp-additional") If myCode = "" Then Exit Sub x = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll, vbNewLine) myIndex = GetCodeIndex(x, myCode, ",") If IsError(myIndex) Then MsgBox "[" & myCode & "] は有効な項目ではありません。", 16 Exit Sub End If MsgBox myCode & " は " & myIndex(0) + 1 & " 列目になります" myValue = InputBox("値の入力") For i = 0 To UBound(x) If x(i) <> "" Then y = Split(x(i), ",") If i < myIndex(1) Then x(i) = vbNullString ElseIf i > myIndex(1) Then n = n + 1 If UBound(y) >= myIndex(0) Then y(myIndex(0)) = myValue End If x(i) = Join(y, ",") End If Next MsgBox n & " 件のレコードを更新" Dest = Application.GetSaveAsFilename(fn, "CSVFiles,*.csv") If Dest = "" Then Exit Sub Open Dest For Output As #1 Print #1, Join(x, vbNewLine) Close #1 End Sub
Function GetCodeIndex(x, myCode As String, delim As String) Dim i As Long, ii As Long, y, flg As Boolean Dim rowInd As Long, ColInd As Long For i = 0 To UBound(x) If x(i) <> "" Then y = Split(x(i), delim) For ii = 0 To UBound(y) If LCase$(y(ii)) = LCase$(myCode) Then rowInd = i: ColInd = ii: flg = True: Exit For End If Next End If If flg Then Exit For Next If flg Then GetCodeIndex = Array(ColInd, rowInd) Else GetCodeIndex = CVErr(2042) End If End Function (seiya) 2017/11/06(月) 13:11
新規を開いてシート1でマクロを実行してみたところ、
Function GetCodeIndex(x, myCode As String, delim As String
の名前が適切ではありません:GetCodeIndex
コンパイルエラー
がでました(><)
(じゅじゅ) 2017/11/06(月) 15:44
しかし、更新したい内容で更新されておりませんでした。
1.sp-additionalの左の列には空白もあり、それらのところに値が入ってしまっております。
2.sp-additionalにHTMLタグを入れてみてタグが更新されておりませんでした。
なにか追加でご説明しなければならない項目などございましたらご指導お願い致します。
(じゅじゅ) 2017/11/06(月) 15:56
元CSVファイルの内容、構成をアップして、更新後にどのような形にしたいのかを 具体的に説明してください。 (seiya) 2017/11/06(月) 16:03
開くのに30分かかるとか、ちょっと信じがたいですな。
回答者はあなたのPCの画面を見ているわけではないので、
求められたことを説明しなければ、一切前には進みません。
(γ) 2017/11/08(水) 20:43
seiyaさん、
上記のプログラムを他のcsvで列に対して数字やアルファベットを更新してみました。
理由は分かりませんが、4000行あるcsvデータの中で5件
myValue = InputBox("値の入力")のところで入力した値が入っておらず、他の列にいくつかその値が入っておりました。 プログラムが読み切れないため値が入っていない行になにかしらの共通点があるか見つけられずいまだ苦労しております。
様々なcsvのデータを開かずに更新したいため、
?@作業したいcsvを選択
?A一列目の項目をinputboxで指定
?Bひかかった列に更新したい文字列や数値、htmlなどを更新する
構成に関しましては基本的に一列目に様々な項目があり、
その情報が文字列や数値が入っております。
例えば、
元のcsv↓
name code price sale-price pr-rate spec1 spec2
ジャケット red 【sサイズ】 1234 5000 4000
コート レディース aa1233 6000 5 10|12
手袋 ウール d1234t 10000
のように列ごとに文字や値があるものと空白のものがございます。
こちらの pr-rateをinputboxで探して
見つかったら20という値を最後の行まで更新するとして、
★name code price sale-price pr-rate spec1 spec2
ジャケット red 【sサイズ】 1234 5000 4000 20
コート レディース aa1233 6000 20 10|12
手袋 ウール d1234t 10000 20
となるイメージです。
実験した4000点をここにはると大変ですので、
3行にしてご提示してみました。
※上手くいってない状態としては上記の例ですと
name code price sale-price pr-rate spec1 spec2
ジャケット red 【sサイズ】 1234 5000 4000 20
コート レディース aa1233 6000 20 10|12
手袋 ウール d1234t 10000 20
となり、
pr-rateに空白がある行と
左隣のsele-priceに"20"が入っているものが数点ございました。
他の列に空白があったり全角、記号などがあると上手くいかないのかなぁなど比較してみましたが
なぜ数点だけ値が更新されたのか分かりませんでした。。
回答者様を困らせてしまって申し訳ございません。
説明不足のご指摘も含めご返信よろしくお願い致します。
(じゅじゅ) 2017/12/07(木) 17:32
★name code price sale-price pr-rate spec1 spec2 ジャケット red 【sサイズ】 1234 5000 4000 20 コート レディース aa1233 6000 20 10|12 手袋 ウール d1234t 10000 20
これでは、元のデータ構成が分りません。 カンマで区切ったデータ(メモ帳等で開いた状態)を提示してください。 (seiya) 2017/12/07(木) 19:04
コンマを手動でつけてみました
(じゅじゅ) 2017/12/07(木) 20:07
csvファイルをエクセルで開かないでメモ帳等のテキストエディタで開く。
csvファイルを選択して右クリック - プログラムから開く- メモ帳又はワードパッド等で開く。 それを提示してください。
(seiya) 2017/12/07(木) 20:12
こちらでいかがでしょう!
(じゅじゅ) 2017/12/07(木) 21:17
コードを実行して、該当csvファイルを選択 pr-rateをインプットボックスに入力すると
pr-rateは5列目になります。 とメッセージが表示され、
値の入力で20と入力すると...20だと更新したかどうか不明なので 20を35に変更
3件のレコードを更新 と表示
保存先、ファイル名を指定すると生成されたファイルが
name,code,price,sale-price,pr-rate,spec1,spec2 ジャケット red 【sサイズ】 ,1234,5000,4000,35,, コート レディース ,aa1233,6000,,35,10|12, 手袋 ウール ,d1234t,10000,,35,,
5列目(pr-rate)が35に更新されていますが?
(seiya ) 2017/12/07(木) 21:36
編集あり 21:46
試しに
name,code,price,sale-price,pr-rate,spec1,spec2
"1,000円off ジャケット red 【sサイズ】 ",1234,5000,4000,20,,
コート レディース ,aa1233,6000,,20,10|12,
手袋 ウール ,d1234t,10000,,20,,
をpr-rate 50で更新してみると
name,code,price,sale-price,pr-rate,spec1,spec2
"1,000円off ジャケット red 【sサイズ】 ",1234,5000,50,20,,
コート レディース ,aa1233,6000,,50,10|12,
手袋 ウール ,d1234t,10000,,50,,
とやはり1,000円のコンマがある行がおかしくなっておりました!
素人の分析ですが、今一度お調べ頂けますと幸いです
(じゅじゅ) 2017/12/08(金) 11:23
それは影響しますね...
此方に差し替えてください。
Sub test() Dim fn As String, txt As String, myValue, n As Long, Dest As String Dim x, y, myCode As String, myIndex, i As Long fn = Application.GetOpenFilename("CSVFiles,*.csv") If fn = "False" Then Exit Sub myCode = InputBox("条件項目名の入力", , "pr-rate") If myCode = "" Then Exit Sub x = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll, vbNewLine) myIndex = GetCodeIndex(x, myCode, ",") If IsError(myIndex) Then MsgBox "[" & myCode & "] は有効な項目ではありません。", 16 Exit Sub End If MsgBox myCode & " は " & myIndex(0) + 1 & " 列目になります" myValue = InputBox("値の入力") For i = 0 To UBound(x) If x(i) <> "" Then y = Split(CleanCSV(x(i), Chr(2), Chr(3)), ",") If i < myIndex(1) Then x(i) = vbNullString ElseIf i > myIndex(1) Then n = n + 1 If UBound(y) >= myIndex(0) Then y(myIndex(0)) = myValue End If x(i) = Replace(Replace(Join(y, ","), Chr(2), ","), Chr(3), """") End If Next MsgBox n & " 件のレコードを更新" Dest = Application.GetSaveAsFilename(fn, "CSVFiles,*.csv") If Dest = "" Then Exit Sub Open Dest For Output As #1 Print #1, Join(x, vbNewLine) Close #1 End Sub
Function GetCodeIndex(x, myCode As String, delim As String) Dim i As Long, ii As Long, y, flg As Boolean Dim rowInd As Long, ColInd As Long For i = 0 To UBound(x) If x(i) <> "" Then y = Split(x(i), delim) For ii = 0 To UBound(y) If LCase$(y(ii)) = LCase$(myCode) Then rowInd = i: ColInd = ii: flg = True: Exit For End If Next End If If flg Then Exit For Next If flg Then GetCodeIndex = Array(ColInd, rowInd) Else GetCodeIndex = CVErr(2042) End If End Function
Function CleanCSV(ByVal txt As String, ByVal subComma As String, _ ByVal subDQ As String) As String Dim m As Object Static RegX As Object If RegX Is Nothing Then Set RegX = CreateObject("VBScript.RegExp") With RegX .Pattern = "(^|,)(""[^""]+"")(,|$)" Do While .test(txt) Set m = .Execute(txt)(0) txt = Application.Replace(txt, m.firstindex + 1, _ m.Length, m.submatches(0) & Replace(Replace(m.submatches(1), _ ",", subComma), """", subDQ) & m.submatches(2)) Loop End With CleanCSV = txt End Function (seiya) 2017/12/08(金) 11:37
度々の質問で申し訳ございません。
今回ので更新作業ができて大変助かりました!
上記の流れで値の更新のところを
置換で更新したいのですがご教授お願いできますでしょうか?(><)
(じゅじゅ) 2017/12/12(火) 14:09
置換とは具体的に何をどのようにしたいのでしょう? 外出中なので返信は遅くなります。 ( seiya) 2017/12/12(火) 14:28
お忙しい中申しわございません。
前回のはinputboxで更新の値を対象の列に対して更新しましたが、
エクセルの元々ある置換のように
置換前と置換後をinputboxで出るようにして頂きたいです。
どうようにファイルを開かず置換更新が希望です。
置換するのは文字列だったり数字だったりします。
部分置換バージョンという伝え方で大丈夫でしょうか??
可能であれば例えば、
置換前:http://aaaa
置換後:http://bbbb
〇件置換しました!と変更されたセルの数の結果がでると嬉しいです。
(じゅじゅ) 2017/12/12(火) 14:54
こういうことですか?
Sub myReplace() Dim fn As String, txt As String, strFind As String, strReplace As String, Dest As String Dim x, y, myCode As String, myIndex, i As Long fn = Application.GetOpenFilename("CSVFiles,*.csv") If fn = "False" Then Exit Sub strFind = InputBox("検索文字列") If strFind = "" Then Exit Sub strReplace = InputBox("置換後文字列") txt = CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll Dest = Application.GetSaveAsFilename(fn, "CSVFiles,*.csv", , "保存先") With CreateObject("VBScript.RegExp") .Global = True .Pattern = "([$()^|\[\]{}*+?.-])" strFind = .Replace(strFind, "\$1") .Pattern = strFind If .test(txt) Then Open Dest For Output As #1 Print #1, .Replace(txt, strReplace) Close #1 MsgBox .Execute(txt).Count & " 件置換" Else MsgBox "対象文字列無し", , strFind End If End With End Sub (seiya) 2017/12/12(火) 19:00
先ほど試してみました。
イメージ通りの処理で感激です!!!
ご丁寧にご回答頂き有難うございました。
(じゅじゅ) 2017/12/13(水) 09:54
前回のコードのことでご質問です。
セル内にあるHTMLコードの
http→https
と置換はできましたが、
もっと広い範囲で置換をすると、対象が見つかりませんとでます。
しかし、プログラムではなくもともとある置換を使うと成功致しました。
htmlには記号やスペース、数値や文字列様々入っておりますがそういったことは関係しておりませんでしょうか?
htmlをエクセルで置換するときの注意点などあればご教授頂けると嬉しいです
(じゅじゅ) 2018/01/10(水) 15:05
今年も頑張りましょう。
ということでメタ文字(\)の見落とし...
.Pattern = "([$()^|\[\]{}*+?.-])" を .Pattern = "([$()^|\[\]{}*+?.\\-])"
に差し替えてください。 (seiya) 2018/01/10(水) 15:12
遅くなりまして申し訳ございません。
実験でhtml内の一部を置換してみましたが、
またしてもエクセル上での置換はできましたがプログラムからは
対象の文字が見つかりませんとでました。
メタ文字というのは正直初めてvbaで聞きました。
html内の記号を検索できるようにしていうのでしょうか?
上記のメタ文字に入っていない記号を一応提示しておきます。
< > 半角スペース 全角スペース / " =
これらをメタ文字にいれるのでしょうか??
(じゅじゅ) 2018/01/15(月) 14:22
ここでいうメタ文字とは正規表現で意味を持つ特殊な文字のことです。
検索文字列に入力される文字列の例を提示してください。 此方では、いろいろ試しましたが正しく変換されています。 (seiya) 2018/01/15(月) 15:05
修正して頂いてhttp:→https:
だと問題なくできましたが<>内まで検索対象を広げると
検索がひっかかりませんでした。
ご教授の方宜しくお願い致します。
(じゅじゅ) 2018/01/15(月) 15:44
><>内まで検索対象を広げると 具体的にどのように検索文字を入力していますか? (seiya) 2018/01/15(月) 15:56
SEIYAさんのほうでは
<a href="https://www.test.ne.jp/test/tenpo/sp/ss/index.html">
を検索ヒットでましたでしょうか?
(じゅじゅ) 2018/01/15(月) 19:20
はい、ヒットしていますし、変換もされています。
このようになっていますか?
Sub myReplace() Dim fn As String, txt As String, strFind As String, strReplace As String, Dest As String Dim x, y, myCode As String, myIndex, i As Long fn = Application.GetOpenFilename("CSVFiles,*.csv") If fn = "False" Then Exit Sub strFind = InputBox("検索文字列") If strFind = "" Then Exit Sub strReplace = InputBox("置換後文字列") txt = CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll Dest = Application.GetSaveAsFilename("qqq.csv", "CSVFiles,*.csv", , "保存先") With CreateObject("VBScript.RegExp") .Global = True .Pattern = "([$()^|\[\]{}*+?.\\-])" strFind = .Replace(strFind, "\$1") .Pattern = strFind If .test(txt) Then Open Dest For Output As #1 Print #1, .Replace(txt, strReplace) Close #1 MsgBox .Execute(txt).Count & " 件置換" Else MsgBox "対象文字列無し", , strFind End If End With End Sub (seiya) 2018/01/15(月) 19:55
念のためコードはコピペで上書きしてみました。
テストをもっとシンプルに
<a href="https://www.test.ne.jp/test/tenpo/sp/ss/index.html">
をコピーしてcsvのセルA1〜A3に貼り付けて検索がヒットするか試しましたが
見つかりませんとでてしまいました。
seiyaさんの手順はどのようなやり方でしょうか?
(じゅじゅ) 2018/01/16(火) 09:53
>csvのセルA1〜A3 この意味が分かりません。
csvファイルとエクセルブックは別物です。 エクセルでもcsvファイルが開けるということだけです。
元csvファイルをエクセルではなくテキストエディタ(メモ帳等)で開けばわかるはずです。 (csvファイルを右クリック - プログラムから開く - メモ帳 - で開く)
コードはcsvファイルをテキストファイルとして読み込んで処理しています。
私が試しているのは、こんな感じで保存したcsvファイルです。
<html> <head> <title>HTML文書の例</title> HTML文書の情報はここに書きます。 </head> <body bgcolor="#0060ff"> <center> <a href="https://www.test.ne.jp/test/tenpo/sp/ss/index.html"> <h1>簡単なHTML文書の例 </h1></center> <hr> <a href="https://www.test.ne.jp/test/tenpo/sp/ss/index.html"> <p>
(seiya) 2018/01/16(火) 10:59
私がテストしていたcsvは上記のような長文のhtmlだったので、
シンプルに<a href="https://www.test.ne.jp/test/tenpo/sp/ss/index.html">
をcsvのa列に貼ってそれでも検索がでないか試してみましたがでませんでした。
seiyaさんが成功している上記の物をセルに入れてしてみましたがやはり検索ひひっかかりません。。
なぜなのでしょうか(><)
(じゅじゅ) 2018/01/16(火) 11:59
じゅじゅさん
対象csvをエクセルで開かないでください。 もしエクセルで開いたら、csvで保存して閉じてからにしてください。 (seiya) 2018/01/16(火) 12:20
pcの設定でファイル名にファイル形式が分かるようにしておりますので、
ファイル名はtest.csvというものを開いたり閉じたりしております。
ブックとしてはわざわざ開いていないつもりなのですが。。
すみません知識不足で。
(じゅじゅ) 2018/01/16(火) 12:41
>csvのセルA1〜A3
csvファイルにはセルは無いのです。 (seiya) 2018/01/16(火) 12:56
私の一連の投稿をもう一度よく読んでください。 (seiya) 2018/01/16(火) 13:02
testで作成したa1~a3のものも、testではないものも
どちらもcsv形式でもともとダウンロードしております。
実際にhttp→httpsは成功しており手順も同じです。
すみません、メモ帳が今までは話にでてこなかったもので今までとは違うお話になってきておりますでしょうか??
(じゅじゅ) 2018/01/16(火) 16:13
ダウンロードした段階ではおそらくExcelで開かれていると思います。 それに変更を加えたら、csvで上書き保存して閉じてください。 もし変更を加えないのなら、そのまま閉じてください。
その後コードを実行して上書き保存したcsvファイルを選択してください。 (seiya) 2018/01/16(火) 16:54
今一度システムからダウンロードしたcsvを何も触らずに
<a href="https://www.●●●.ne.jp/●●●/●●●/sp/index.html">
●にしたのはリンク先を非公開にしたいためご了承下さい。
を検索窓に入れ、とりあえず置換後は空白にして処理をしましたが
<a href="https://www.●●●.ne.jp/●●●/●●●/sp/index.html">
は見つかりませんとでました。
仮に編集したとしてもいつもそのまま上書き保存をしております。
ちないに、ダウンロードしたcsvファイルを右クリックでメモ帳で開くと
htmlコードの
"が全て""
と二つに増えているのですがこれは気にしなくて大丈夫でしょうか??
<a href=""https://www.●●●.ne.jp/●●●/●●●/sp/index.html"">
となります。
基本的にcsvはエクセルで開くようデフォルト設定しておりまして、エクセルで開くと
"はひとつしかないです。
関係ないようでしたらすみません
(じゅじゅ) 2018/01/18(木) 11:11
エクセルで開いてcsvで上書き、もしくは名前を変更して保存すると、そのたびに"は増えていきます。 ダウンロードしたcsvファイルをエクセルで開かないで、最初からメモ帳等で開くことはできませんか? (seiya) 2018/01/18(木) 12:01
というか、最初からメモ帳で開けば[置換]で全て解決しませんか?(件数は出ませんが) csvファイルにエクセルが絡むと本来のcsvファイルにこのような予期せぬ変更がされてしまう可能性がありますよ? (seiya) 2018/01/18(木) 12:19
なので一回開いてみたら
"が二つありました。
最初からメモ帳なのに"が二つでてしまうのがよく分かりません(><)
(じゅじゅ) 2018/01/18(木) 13:09
>"が二つありました。
ということは、検索文字列もそのように入力してください。 (seiya) 2018/01/18(木) 13:21
(じゅじゅ) 2018/01/18(木) 14:29
言ってる意味が分かりません。
手動だろうが、自動だろうが検索文字が違っていたらヒットしません。
"が本来一つのものが二つになっているのなら、その原因を探るべきです。 此方ではどうにもなりません。 (seiya) 2018/01/18(木) 14:52
エクセルとして開いた場合は"がひとつでした。
本来のものは"ひとつなんです、、
なので""と二つに増やさないとcsvデータは処理できないのかなと思いました。
エクセルで開いてすれば"は一つなんでしょうけども、htmlには外部リンクが含んており
ダウンロードデータの商品数が多いので開くのが重たくなります。
ですので、エクセルを開かず修正できたらいいなと思いご相談させて頂きました。
怒らせてしまって申し訳ございません。
(じゅじゅ) 2018/01/18(木) 15:01
別に起こっていませんけど?
>htmlの"は一個でして、ダウンロードしてメモ帳で開くと"が二つあり >編集して上書き保存してシステム側からみると"が一つでちゃんと入っておりました。
この辺が当方では再現できないのです。
また、元のcsvをメモ帳で開いたものと、Excelから開いたものとで"にその様な差異が出ることが問題です。
編集して元のシステムに読み込ませるようにするにはどうすればよいかは、じゅじゅさんの方で考えて ください。 (seiya) 2018/01/18(木) 15:34
こちらとseiyaさんの作成したコードを合わせてできたりしないでしょうか?
色々も申し訳ございません。。
(じゅじゅ) 2018/01/18(木) 15:37
文字列内に「 ” 」がある場合意味がおかしくなってしまうのでCSVファイルが自動で回避できるように補助してくれているのだと思ってます。
CSVで文字列入れる場合ははじめと最後に「 ” 」がつくので
"<a href="https://www.●●●.ne.jp/●●●/●●●/sp/index.html"> "
"<a href="
とここまでで区切ってしまってバグってしまいます。
これを回避するために文字列内の「 " 」は「 "" 」であらわすようにしているのだと思います。
自分なりに勉強してみました(><)
(じゅじゅ) 2018/01/18(木) 15:42
それはcsvをエクセルに取り込むコードで、私のコード(csvファイル内容の置換)とは関連性がありません。 (seiya) 2018/01/18(木) 15:48
とりあえず、まったくの別案で、定数定義したフォルダ以下にあるhtmlファイル全ての文字列を置換するコードを書いておきます。 一応、元のファイルはバックアップしていますが、2回動かすと上書きして消してしまうので、どこか別のフォルダに対象ファイルをコピーしてから動かしてみてください。 何をどう直したか…、というのは調べるのが面倒なので、変更があった場合だけシートに書き出すようにしています。
Sub test() Const cPATH = "c:\temp\" Dim cFiles As Variant Dim F1 As Integer Dim i As Long Dim iR As Long Dim iw As Long Dim bw() As Byte Dim cOrg As String Dim cBuf As String Dim cBak As String
Cells.ClearContents
cFiles = Split(CreateObject("WScript.Shell").Exec("CMD /C DIR /A:-D/B/S """ & cPATH & "*.htm*""").StdOut().ReadAll(), vbNewLine) For i = 0 To UBound(cFiles) - 1 iw = InStrRev(cFiles(i), ".") cBak = Left(cFiles(i), iw) & "bak" iw = FileLen(cFiles(i)) ReDim bw(iw - 1)
F1 = FreeFile() Open cFiles(i) For Binary As #F1 Get #F1, , bw Close #F1
cOrg = StrConv(bw, vbUnicode) cBuf = Replace(cOrg, "http:", "https:") If cOrg <> cBuf Then Cells(iR + 1, "A").Value = Mid(cFiles(i), InStrRev(cFiles(i), "\") + 1) If Dir(cBak) <> "" Then Kill cBak End If
Name cFiles(i) As cBak
F1 = FreeFile() Open cFiles(i) For Binary As #F1 Put #F1, , cBuf Close #F1
DoEvents iR = iR + 1 End If Next i End Sub
(???) 2018/01/18(木) 16:03
>わざわざ処理をこねくり回して、難しく処理しようとしているように見えます。 このような発言はこのスレの流れをよく読んでからにしてもらいたい。 (seiya) 2018/01/18(木) 16:10
一括編集するにはCSVダウンロードしてからしか方法がなくそのなかにHTMLも入っております。
HTMLの部分だけの置換でしたらダブルクォーテーションは仕方ないですね!
それ以外であればダブルクォーテーションは入っていない情報なので
SEIYAさんのコードでできますので使い分けようと思います。
seiyaさんの
>わざわざ処理をこねくり回して、難しく処理しようとしているように見えます。 このような発言はこのスレの流れをよく読んでからにしてもらいたい。 (seiya) 2018/01/18(木) 16:10
は私宛ですよね?
申し訳ございませんでした。。
(じゅじゅ) 2018/01/18(木) 17:20
違いますよ? あとから投稿してきた失礼な物言いをする投稿者に対してです。
私の投稿で
>というか、最初からメモ帳で開けば[置換]で全て解決しませんか?(件数は出ませんが) >csvファイルにエクセルが絡むと本来のcsvファイルにこのような予期せぬ変更がされてしまう可能性がありま >すよ? (seiya) 2018/01/18(木) 12:19
の通り、ただの置換ならこれだけで十分なはずで、VBAも必要ないのです。
(seiya) 2018/01/18(木) 17:33
>わざわざ処理をこねくり回して、難しく処理しようとしているように見えます。
はい、私はじゅじゅさんに向けた発言だったのですが、seiyaさんからのお怒りの言葉があって、あ、seiyaさんに向けたと思われた?、と考えました。 誤解させてすいません。
1行ずつ読んで変換していますが、いっそ1ファイル1回で全部読んで、いっきに置換して、1回で書いてしまえば簡単じゃ?、という別案でした。
(???) 2018/01/18(木) 17:39
そういうことでしたか。
質問がややこしくて本当に申し訳ございません。
自分なりにもう少し試行錯誤してみます!
???さん
私むけだったらそのものいいでいいように聞こえますが。。
他の記事をみていてもいくつかお怒りの返信がお見受けできました。。
(じゅじゅ) 2018/01/19(金) 15:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.