• ベストアンサー

文字列の括弧について(初心者)2

文字列の括弧について(初心者) http://oshiete1.goo.ne.jp/kotaeru.php3?q=1110818 の質問の続きなのですが、 文字列の中で( )を1セットで使う方法を教えてもらったので自分の使用するプログラムに少し直したのですが、やはり2つ以上の括弧(カッコ)にも対応しなければならなくなりました。 どのようなプログラムになるのでしょうか? 私はInstrは文字列を左からよんでいって最初にある指定した文字(下記の例だと"("など)の場所を何文字目か示してくれるだけなので1つの括弧にしか対応できないと考えています。 なので文字列の中に指定した文字が何個含まれているか調べて、それぞれ何文字目か示してくれるプログラムが あればできると考えています。 どうか教えてください、おねがいします。 ↓今のプログラム Dim bucketL as Long Dim bucketR as Long Dim a as String Dim b as String a=Text1.text bucketL = InStr(a, "(") bucketR = InStr(a, ")") If bucketL < bucketR And bucketL * bucketR <> 0 Then Text2.text = "OK" End If

質問者が選んだベストアンサー

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.9

折角ですので訂正します。 問題は(や)がある時どのように削除するかですね。 Private Sub Command1_Click() Dim a As String Dim i As Integer Dim j As Integer Dim k As String Dim l As Integer Dim m As String j = 0 l = 0 a = Text1.Text For i = 1 To Len(a) If Mid(a, i, 1) = "(" Then k = k + "と" + CStr(i) j = j + 1 ElseIf Mid(a, i, 1) = ")" Then m = m + "と" + CStr(i) l = l + 1 End If Next i Text2.Text = CStr(j) + "個" + k + "番目" Text3.Text = CStr(l) + "個" + m + "番目" End Sub

gosutero
質問者

お礼

回答ありがとうございます。 使わせてもらいました、ありがとうございます。 下記が今のプログラムなのですが、kakkohajime(i) = InStr(kakkohajime(i - 1), nyuuryoku, "(")のところでエラーがでてしまいます。 私はなぜエラーになったのかよくわかりません。 どうか原因を教えてください。 おねがいします。 Dim a As String Dim i As Integer Dim j As Integer Dim k As String Dim l As Integer Dim m As String a = nyuuryoku j = 0 l = 0 nyuuryoku = Text1.Text k = "" m = "" For i = 1 To Len(nyuuryoku) If Mid(nyuuryoku, i, 1) = "(" Then k = k + "と" + CStr(i) j = j + 1 ElseIf Mid(nyuuryoku, i, 1) = ")" Then m = m + "と" + CStr(i) l = l + 1 End If Next i Text2.Text = "( は" + CStr(j) + "個" + k + "番目、 " + ") は" + CStr(l) + "個" + m + "番目" jj = 0 ll = 0 kk = "" mm = "" For i = 1 To Len(nyuuryoku) If Mid(nyuuryoku, i, 1) = "[" Then kk = kk + "と" + CStr(i) jj = jj + 1 ElseIf Mid(nyuuryoku, i, 1) = "]" Then mm = mm + "と" + CStr(i) ll = ll + 1 End If Next i Text3.Text = "[ は" + CStr(jj) + "個" + kk + "番目、" + "] は" + CStr(ll) + "個" + mm + "番目" Dim kakkohajime(50) As Long Dim kakkoowari(50) As Long Dim kakkonakami(50) As String For i = 1 To CStr(j) kakkohajime(0) = 0 kakkohajime(i) = InStr(kakkohajime(i - 1), nyuuryoku, "(") Next For i = 1 To CStr(j) kakkoowari(0) = 0 kakkoowari(i) = InStr(kakkohajime(CStr(j) + 1 - i), nyuuryoku, ")") Next For i = 1 To CStr(j) kakkonakami(i) = Mid(nyuuryoku, kakkohajime(CStr(j) + 1 - i), kakkoowari(i)) Next For i = 1 To CStr(j) Text4.Text = Text4.Text & "、" & kakkonakami(i) Next End Sub

gosutero
質問者

補足

申し訳ありません。 捕捉のところに書くべきでした。

その他の回答 (8)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.8

>ヘルプはインターネットにつないでいないと見れないんですよね? >間違ってたらすいません。 MSDNライブラリをインストールしてください。 そうしたら、調べたい単語にカーソルをあわせてF1でページが開きます。 >Instr([検索の開始位置, ]検索対象となる文字列式,検索する文字列式[, 文字比較のモードを指定する番号]) >と本に書いてあったのですが、これで正しいのでしょうか? はい、あってます。 >検索の開始位置の部分を変数にしてもよろしいのでしょうか? かまいません。

gosutero
質問者

お礼

アドバイスありがとうございます。 くわしい説明ありがとうございます。 お礼をいうのが遅れて申し訳ありません。

回答No.7

VBのバージョンは何でしょう? VB5.0以前だと、Split,Replaceは使えないかも... VB6.0なら、下記のような感じでどうでしょう? Dim intKakkoNum1 As Integer Dim intKakkoNum2 As Integer Dim strText1 As String Dim strText2 As String strText1 = "abc" intKakkoNum1 = UBound(Split(Text1.Text, "(")) intKakkoNum2 = UBound(Split(Text1.Text, ")")) If intKakkoNum1 <> intKakkoNum2 Then Text2.Text = "NG!" Exit Sub Else strText2 = Replace(Text1.Text, "(", "") strText2 = Replace(strText2, ")", "") If strText1 <> strText2 Then Text2.Text ="NG!" Exit Sub End If End If Text2.Text = "OK!" #上手く関数化すれば、"[","]"等にも対応可能です。

gosutero
質問者

補足

すいません記述し忘れてました。 VB6.0を使用しています。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

#2様の方針でペアチェックする関数を作りました ------------------------------------------- Public Function pairCheck(str As String) As Boolean Dim i, n n = 0 For i = 1 To Len(str) Select Case Mid(str, i, 1) Case "(" n = n + 1 Case ")" n = n - 1 If n < 0 Then pairCheck = False Exit Function End If End Select Next pairCheck = (n = 0) End Function --------------------------------- []も同様にできますし、同時にやってもいいですね。 使い方 If pairCheck("(a)bc)((((def)))") then MsgBox "ペアになってますよん" Else MsgBox "ペアになってませんよん" End If

gosutero
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。 お礼をいうのが遅れて申し訳ありません。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

>文字列の中に指定した文字が何個含まれているか調べて、それぞれ何文字目か示してくれるプログラム '検査する文字が含まれる文字位置を配列で返す Public Function charPos(str As String, c As String) Dim a() Dim count, i ReDim a(Len(str)) count = 0 For i = 1 To Len(str) If c = Mid(str, i, 1) Then a(count) = i count = count + 1 End If Next ReDim Preserve a(count) charPos = a End Function -------------------------------------- 使い方 dim posL,posR,i posL =charPos("A(BC(DEF(G)))","(") posR =charPos("A(BC(DEF(G)))",")") for i=0 to UBOUND(posL) 'UBOUNDで個数がわかる debug.print posL(i) next 結果 2 5 9 ---------------------------- こういうのより、もともとの目的からすると #2の方の方法がいいと思います

gosutero
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。 お礼をいうのが遅れて申し訳ありません。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.4

Private Sub Command1_Click() Dim a As String Dim i As Integer Dim j As Integer Dim k As String j = 0 a = Text1.Text For i = 1 To Len(a) If Mid(a, i, 1) = ")" Then Exit For End If If Mid(a, i, 1) = "(" Then k = k + "と" + CStr(i) j = j + 1 End If Next i Text2.Text = CStr(j) + "個" + k + "番目" End Sub 左かっこだけですが右かっこも同様ですので if文の"("と")"を入れ替えればOKです。

gosutero
質問者

お礼

回答ありがとうございます。 CStrは文字列のデータ型変換関数でいいのでしょうか? http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_k08.htm はじめて見ました。 このプログラムは括弧のなかに括弧があるときは大丈夫ですが括弧が別々に存在した場合はどうなのでしょうか? 動かしてみたのですが、abc(ads(fs)dfs)asaなどのときは大丈夫なのですが、aafs(eys)eear(hr)sdfのときはうまくいきませんでした。 私のやり方が悪いのかもしれませんがどうか教えてください。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>私はInstrは文字列を左からよんでいって最初にある指定した文字(下記の例だと"("など)の場所を何文字目か示してくれるだけなので1つの括弧にしか対応できないと考えています。 開始位置指定できますけど。 省略しちゃってるから先頭から調べてるだけです。 ヘルプを見てください。

gosutero
質問者

お礼

アドバイスありがとうございます。 毎回、省略して最初から調べていました。 ヘルプはインターネットにつないでいないと見れないんですよね? 間違ってたらすいません。 VBを使っているのはインターネットがつなげないほうのパソコンなので見れないのです。 このページはlynaxのパソコンから見ています。 instrの使い方は Instr([検索の開始位置, ]検索対象となる文字列式,検索する文字列式[, 文字比較のモードを指定する番号]) と本に書いてあったのですが、これで正しいのでしょうか? 検索の開始位置の部分を変数にしてもよろしいのでしょうか? どうか教えてください、おねがいします。

  • KamoPlat
  • ベストアンサー率46% (23/50)
回答No.2

普通に文字列を一文字ずつ読んでいって「(」があったら「開いている括弧の数」を増やして「)」があったら「開いている括弧の数」を減らしてやってそれが「-1になっていないか」と、文字列の最後まで行ったときに「0になっているか」を検査すればよいのでは? VBの細かい関数思い出せないのでもっと簡単にできるかも知れませんが(汗)

gosutero
質問者

お礼

アドバイスありがとうございます。 laputartさんのプログラムのct1とct2を使って、 If ct1 = ct2 Then Else Msgbox "だめ" というプログラムを入れてみようと思っているのですがどうでしょうか?

  • laputart
  • ベストアンサー率34% (288/843)
回答No.1

Dim N as integer Dim a(9),b(9) as integer Dim ct1, ct2 as integer Dim Z as string 'text1をZに置く Z=Text1.text ' Ln=文字列Zの長さ Ln=Len(Z) ct1=0:Ct2=0 'ct1とct2はそれぞれ (と)の数 for I=1 to Ln If Mid(Z,i,1)="(" then Ct1=ct1+1 a(Ct1)=I Elseif Mid(Z,i,1)=")" then Ct2=ct2+1 b(Ct2)=I End If next I Msgbox("(の数は" & ct1 & "個です。") Msgbox(")の数は" & ct2 & "個です。") End Sub a(1) a(2) には(の文字列番号が入ります。 b(1) b(2) には)の文字列番号が入ります。まだエラーとラップとかはしていません。 原始的ですがこういった方法は如何でしょうか。

gosutero
質問者

お礼

回答ありがとうございます。 bucketL = InStr(a, "(") bucketR = InStr(a, ")") If bucketL < bucketR And bucketL * bucketR <> 0 Then と、このプログラムを組み合わせればできそうです。 しかし、私はfor文の使い方がよくわかっていないのでうまくいきません。 nextに対応するforがありませんと出てしまいます。 ↓プログラムの1部分 For i = 1 To Ct1 ここにいろいろプログラムをいれます。 next i Msgbox"OK" 上の例だとエラーがでます、原因はなんでしょうか? どうか教えてください、おねがいします。 このページのforの説明を見ながらやっているのですが、原因がよくわかりません。 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_k03.htm

gosutero
質問者

補足

Dim N as integerはいれなくても大丈夫でしょうか?

関連するQ&A

  • 文字列の括弧について(初心者)

    textに自分で入力した値を変数文字列として扱う場合に、括弧を使いたいのですが、 例 Dim A as string Dim B as string A = Text1.text B = "abc" としてコマンドボタンを押したときにAとBの値が同じ場合(Aがabc)は1をAとBの値が違うときは0を出力するプログラムを作ったのですが、これに追加で括弧()や[]をつけても1を出力するプログラムが作りたいのですが、よくわかりません。 Text1.textの値が(abc)か[abc]でも1を出力、 [ab]cやa(b)cでも1を出力、(abcやa)bc(やa(b(cのときは0を出力するプログラムが作りたいのです。 どうか教えてください。 おねがいします。

  • 括弧が含まれる文字列の括弧の中身の文字列(VB6)

    括弧()の中身の文字列をそれぞれ配列の文字列変数に設定したいと考えているのですが、Replaceを使えばいいのでしょうか? また、Replaceは置き換える文字の検索の開始場所は設定できると思うのですが、置き換える文字の検索の終了の場所は設定できるのでしょうか? 例えば、(asdf)as(asdfe)as(sf)という文字列のasdf,asdfe,sfをそれぞれ配列を使って文字列変数として表したいのです。 nyuuryoku = Text1.Text For i = 1 To Len(nyuuryoku) If Mid(nyuuryoku, i, 1) = "(" Then k = k + "と" + CStr(i) j = j + 1 ElseIf Mid(nyuuryoku, i, 1) = ")" Then m = m + "と" + CStr(i) l = l + 1 End If Next i Text17.Text = "( は" + CStr(j) + "個" + k + "番目、 " + ") は" + CStr(l) + "個" + m + "番目" For i = 1 To Len(nyuuryoku) If Mid(nyuuryoku, i, 1) = "[" Then kk = kk + "と" + CStr(i) jj = jj + 1 ElseIf Mid(nyuuryoku, i, 1) = "]" Then mm = mm + "と" + CStr(i) ll = ll + 1 End If Next i Text2.Text = "[ は" + CStr(jj) + "個" + kk + "番目、" + "] は" + CStr(ll) + "個" + mm + "番目" Dim kakkohajime(50) As Long Dim kakkoowari(50) As Long Dim kakkonakami(50) As String For i = 1 To CStr(j) kakkohajime(0) = 1 kakkohajime(i) = InStr(kakkohajime(i - 1), nyuuryoku, "(") Next For i = 1 To CStr(j) kakkoowari(0) = 1 kakkoowari(i) = InStr(kakkohajime(CStr(j) + 1 - i), nyuuryoku, ")") Next このあとにkakkohajime(i)の場所からkakkoowari(i)の場所までの文字列をそれぞれkakkonakami(i)の配列の文字列にいれたいのです。 最後に、kakkonakami(i)をtextに表示したいと思っています。

  • ☆文字列を抜き取る★

    テキストファイルに GetPoint = ErrMsg("おはよう",target) の行があるとします。 ダブルクオートでくくられた文字列だけを出力させたい場合 下記コードでどこが間違っているでしょうか?? 今のままだと全てのコードが出力になるんですよ。。。 アドバイスをいただけると幸いです。 Sub Main() Dim iFileNumber As Integer iFileNumber = FileSystem.FreeFile() Open "C:temp\sample.txt" For Input As #iFileNumber Dim stResult As String Dim stSerch As String Dim point As Long Do While (Not FileSystem.EOF(iFileNumber)) Dim stBuffer As String Line Input #iFileNumber, stBuffer stResult = stResult & stBuffer & vbNewLine If Instr(stResult,Chr(34)) > 0 Then If Instr(stResult,Chr(34)) > 0 Then v = stResult End If End If Loop Close #iFileNumber End Sub

  • for文での配列の指定について(初心者)

    質問なのですが、for文を使っているときの配列の指定はできるのでしょうか? 下記は今のプログラムの1部です。 Dim nyuuryoku as string Dim e as integer Dim kakkonakami() as string Dim kakko() as long Text1.text = nyuuryoku Text24.Text = "" For e = 1 To kakko(e) If Mid(nyuuryoku, kakko(e) + 2, 1) = Mid(kakkonakami(i), 1, 1) Then Text24.Text = 'ここに指定した配列をいれたい' End if next e nyuuryokuはテキスト1に自分で入力した括弧"("")"を含んだ文字列だとします。 kakkonakami(i)はそれぞれの括弧の中身の文字列です。 kakko(e)は文字"|"がある場所(変数)です。 そして"|"のある場所に+2した場所がkakkonakami(i)の1文字目だった場合、 そのときのkakkonakami(i)のiの数に対応したkakkonakami(?)の配列変数をテキスト24に表示したいのです。 例 nyuuryoku = "a(da)|(we)wreasd(ad)|(asd)as(as)as" とすると For e = 1 To kakko(e)がFor e = 1 To 2 になります。 そのときの If Mid(nyuuryoku, kakko(e) + 2, 1) = Mid(kakkonakami(i), 1, 1) Then は Mid(nyuuryoku, kakko(1) + 2, 1) = w Mid(nyuuryoku, kakko(2) + 2, 1) = a Mid(kakkonakami(2), 1, 1) = w Mid(kakkonakami(4), 1, 1) = a となります。 このとき、Text24にkakkonakami(2),kakkonakami(4)と表示したいのです。 すごいわかりにくいと思いますが、どうか教えてください。 おねがいします。

  • 文字列の取り出し方

    今、Visual Basic 2008を使用しています。 textbox2とtextbox3があり、textbox2に複数行にまたがる文字列があります。 この文字列の中で、listbox1の中にある項目の文字列が入ってる場合はカンマ区切りで文字列の後ろにつなげたいのですが、うまくいきません。 具体的には あいうえお あかさたな いろはにほ というtextbox2の内容について、listbox1内に あ い という2つの項目があった場合、 あいうえお,あ,い あかさたな,あ いろはにほ,い という結果をtextbox3に書き出すという内容です。 Dim addtag As String = "" Dim i As Integer For Each part As String In TextBox2.Text.Split(vbCrLf) If part <> "" Then For i = ListBox1.Items.Count - 1 To 0 Step -1 If part.Contains(ListBox1.Items(i)) = True Then addtag = addtag & "," & ListBox1.Items(i) End If Next part = part & addtag TextBox3.Text = TextBox3.Text & part & ControlChars.NewLine part = "" addtag = "" End If Next というプログラムを組んでいますが、どこが間違っているのかわからず、煮詰まってしまいました。 プログラムは初心者で、根本から違っていたら恥ずかしい限りですが、どうかよろしくお願いします。

  • VBA 文字列の抜き出し

    VBAで文字列の抜き出しの方法を教えてください。 同様な質問があり、参考にしてみたのですがうまくいきません。 お分かりの方がいましたらご享受お願いいたします。 30~45字からなる文字列があります。 その中に特定の文字列が2つあり、そのうちの最初の特定文字列に続く文字2つ目の特定文字列前までを抜き出したいのですがうまくいきません。 具体的には abcdefghi GN=12jikl PE=fghj456 という文字列のなかから"GN="と"PE="の中間の文字を取り出したいのですが、 自分で書いたものでは"PE="以上が抜き出され、"GN="より前の文字列を抜き出せませんでした。 GN=......, PE=......の文字数はそれぞれ不規則です。また、GN=...よりも前の文字数も不規則です。 以下が作成したものです。 Dim i As Integer Dim Srch As String Dim Btwn As String Const Chr1 As String = "GN " Const Chr2 As String = "PE" Dim m As String Set sheetobj = ThisWorkbook.Worksheets("A") With sheeobj lastrow = sheetobj.Cells(sheetobj.Rows.Count, 10).End(xlUp).Row For i = 2 To lastrow Srch = sheetobj.Cells(i, 10) Btwn = Mid(Srch, InStr(Srch, Chr1) + 1, InStr(Srch, Chr2) - InStr(Srch, Chr1) - 1) sheetobj.Cells(i, 9) = Btwn Next i End With End Sub なにかいい方法があれば教えて頂けたらと思います。 よろしくお願い致します。

  • 指定した文字列が含まれる行を削除する

    データの照合をしています。 指定した文字列が、「O列」に入っていたら、その行を削除し、 行をつめる というようなマクロを組みたいのですが、エラーがかかってしまいます。 (下のVBは、ネットで公開されていたのを使用させていただいております。) Sub Macro1() Const col As String = "A" '文字列が入力されている列 Dim idx As Long Dim keyWord keyWord = Application.InputBox("削除対象の文字列は?", Type:=2) If TypeName(keyWord) <> "Boolean" And Len(keyWord) > 0 Then   For idx = Cells(65536, col).End(xlUp).Row To 1 Step -1     If InStr(Cells(idx, col).Value, keyWord) > 0 Then '    If Application.CountIf(Rows(idx), "*" & keyWord & "*") > 0 Then       Rows(idx).Delete     End If   Next idx End If End Sub 「下から3行目のNEXTに対応するforがない」とエラーがでます。 ご教授、お願いいたします。

  • エクセルマクロで、書式が違っても文字列を評価する方法

    文字列書式のセルと、標準書式のセルの数字文字列を比較したいのですが、うまくいきません。 書式が違うと、range.textも違う値になってしまうようです。 結局、現状では一度文字列変数の中に一度いれてから処理していますが、もっと他によい方法はないでしょうか? ------------------------------- If range1 = range2 Then  ・・・・・ End If ------------------------------- Dim temp1 As String Dim temp2 As String If temp1 = temp2 Then ・・・・・・ end If ------------------------------

  • 文字列中の両丸括弧を取り除くVBA正規表現

    文字列中の両括弧を取り除く正規表現を求めています. 入力文は「(文字列1)文字列2」となっています. 両括弧は全角の丸括弧"(",")"と半角の丸括弧"(",")"のペアを見つけ,文字列2を取り出したいのです. 文字列1,文字列2は全角,半角の文字列(主に全角)が来ます.括弧の中に括弧が入れ子(ネスト)する事は想定していません. 例えば,「(グループA)田中」という入力に対しては,「田中」をExcel VBAで抽出したいのです. 正規表現ライブラリを使っていますが,別の方法でも効率良く抽出できるならOKです. '---------------  以下を試した結果  --------------------------------- Dim RE, strPattern As String, reMatch Set RE = CreateObject("VBScript.RegExp") ' 'strPattern = "^(\(|().*(\)|))$" ' 'strPattern = "(?!.*[(|\(].+?[\)|)])" ' "(グループA)"にマッチする ' 'strPattern = "([\(.+?\)|(.+?)])" ' 'strPattern = "(^[(|\(].+?[\)|)])" ' strPattern = "^(?!.*[(|\(].+?[\)|)])" ' "" ' 'strPattern = "\(.+?\)" ' strPattern = "^(?!.*[\(.+?\)|(.+?)])" ' "" ' strPattern = "(?!.*[(.+?)])" ' "" ' strPattern = "(.+?)" ' "(グループA)"にマッチする ' strPattern = "^[?!.*((.+?))]" ' ' strPattern = "[^((.+?))]" ' ' '.Pattern = "^(?!.*xyz)" ' 'strPattern = "^(?!.*([.+?]))" ' "" ' strPattern = "[^(.*)]" '"グ","ル",,, ' strPattern = "^(?!([.*]).*)" ' "" ' strPattern = "^(?!(.*).*)" ' "" ' strPattern = "^(?!([.*]))" ' "" strPattern = ").*$" ' "" With RE .Pattern = strPattern .IgnoreCase = True .Global = True Set reMatch = .Execute(str) If reMatch.Count > 0 Then str = reMatch(0).Value End If End With '開放 Set reMatch = Nothing Set RE = Nothing

    • ベストアンサー
    • CSS
  • 文字列aを一文字ずつExcelのセルに入力する方法

    Excel VBAについて確認させてください。 下記のエクセルマクロはエクセルのA列に入力されてある文字を順に読み込んで ユーザが入力したテキストファイル(=FN1)を開いて エクセルのA列に入力されてある文字が見つかった場合は削除する作業を 文字が入力されてある最後の行までループによって行い、 最終的に処理した文字列aを出力ファイル(=FN2)に保存するプログラムです。 このプログラムを改良して文字列aを出力ファイル(=FN2)に保存するのをやめて 文字列aを一文字ずつ、Excelのセルごとに1行ずつ入力するプログラムを作成したいのですが どのようにすればよいかご教授いただけますでしょうか。 以下、プログラム本文です。 ------------------------- Sub sample() Dim a As String Dim y As Long Dim x As String Dim FN1 As String Dim FN2 As String x = InputBox("チェックするファイル名を入力してください。(拡張子も含めてください。)") FN1 = ThisWorkbook.Path & "\" & x FN2 = ThisWorkbook.Path & "\チェック済" & x With CreateObject("Scripting.FileSystemObject").GetFile(FN1).OpenAsTextStream a = .ReadAll For y = 1 To Cells(Rows.Count, 1).End(xlUp).Row a = Replace(a, Cells(y, 1), "") '読み込んだテキストファイルにエクセルのA列にある文字が見つかった場合削除 a = Replace(a, vbCrLf, "") '改行コードの削除 a = Replace(a, vbTab, "") 'タブコードの削除 Next .Close End With With CreateObject("Scripting.FileSystemObject").OpenTextfile(FN2, 2, True) .Write a .Close End With End Sub

専門家に質問してみよう