2017-03-21 12 views
1

誰かが大いに感謝してくれるのであれば、私はこのコードからタイプの不一致を得るでしょう。それはおそらく私がsplitコマンドを使用場所に関係しています..私は、基本的には、A2とB2、その後A3とB3をつかむしようとしているのように...別のプログラム(MicroStationの)おそらく配列が誤って解釈されているために

Sub Main() 

Dim Find_text() As Variant 
Dim Replace_text() As Variant 
Dim objExcelApp As Object 
Dim wb As Object 


    Set objExcelApp = CreateObject("Excel.Application") 
    Set wb = objExcelApp.Workbooks.Open("My path") 

    Dim ws As Object 
    Set ws = wb.Sheets(1) 


Find_text = Split(ws.Range("A2:A628")) 
Replace_text = Split(ws.Range("B2:B628")) 


CadInputQueue.SendKeyin "MDL KEYIN FINDREPLACETEXT,CHNGTXT CHANGE DIALOGTEXT" 

For i = 0 To UBound(Find_text) 

     CadInputQueue.SendKeyin "FIND DIALOG SEARCHSTRING " & Find_text(i) 

     CadInputQueue.SendKeyin "FIND DIALOG REPLACESTRING " & Replace_text(i) 

     CadInputQueue.SendKeyin "CHANGE TEXT ALLFILTERED" 

Next 

End Sub 

答えて

4

にそれを置くために問題は、これらの2本の線である:

Find_text = Split(ws.Range("A2:A628")) 
Replace_text = Split(ws.Range("B2:B628")) 

どちらws.Range("A2:A628").Valuews.Range("B2:B628").Valueは文字列である - ので、あなたはそれらを分割することはできません。ただし、配列に直接割り当てることはできます。

次のように変更します。

Dim Find_text As Variant '() not required 
Dim Replace_text As Variant 

...

Find_text = ws.Range("A2:A628").Value 
Replace_text = ws.Range("B2:B628").Value 

...

For i = 1 To UBound(Find_text) 

     CadInputQueue.SendKeyin "FIND DIALOG SEARCHSTRING " & Find_text(i,1) 

     CadInputQueue.SendKeyin "FIND DIALOG REPLACESTRING " & Replace_text(i,1) 

     CadInputQueue.SendKeyin "CHANGE TEXT ALLFILTERED" 

Next 

あなたはに複数セルの矩形範囲の値を割り当てる

それは2次元の1ベースの配列になります。このため、ループは 1で始まり、なぜ Find_text(i)Find_text(i,1)(と同様に Replace_text)と置き換えなければならなかったのですか。

+0

ありがとうございました! –

関連する問題