VBA和连接function

我实际上正在寻找优化我现有的连接公式,我用来configuration一堆控制器(networking)

我有Sheet1,在那里我input从A2到E2所需的所有详细信息。我有Sheet2,其中产生整体连接,包括来自Sheet1.A2的valude并包含一些命令,这里是连接公式:

= CONCATENATE(“ap”,Imported_Data!B2,CHAR(10),“ip enable”,CHAR(10),“ip mode static”,CHAR(10),“ip addr”,Imported_Data!A2,“Imported_Data L $ 2,“gateway”,Imported_Data!L $ 3,CHAR(10),“ip name-server”,Imported_Data!L $ 4,“”,Imported_Data!L $ 5,CHAR(10),“devname”,Imported_Data!C2 (10),“description”,CHAR(147),Imported_Data!D2,CHAR(147),CHAR(10),“location”,CHAR(147),Imported_Data!E2,CHAR(147),CHAR ),“ 结束”)

结果如下:

"ap 00:00:00:00:00:00 ip enable ip mode static ip addr 1.1.1.1 255.255.0.0 gateway 172.27.1.1 ip name-server 4.2.2.1 4.2.2.2 devname name description “Description“ location “location“ end" 

为了让它在控制器上被接受是操纵结果,将连接结果复制到记事本++中,删除从连接公式中添加的“”,并用“”replaceCHAR(147)我发现有它的工作)

我想在VBA中有一个filter,将会:

1)删除在连接2的块的开头和结尾处的“”“在描述和位置处用”“replace”“

最终结果应该是:

 ap 00:00:00:00:00:00 ip enable ip mode static ip addr 1.1.1.1 255.255.0.0 gateway 172.27.1.1 ip name-server 4.2.2.1 4.2.2.2 devname name description "Description" location "location" end 

任何build议/build议?

这里有一个方法,你应该检查它是否适合你的目的。

首先编辑公式,将CHAR(147)replace为CHAR(34),如下所示:

=CONCATENATE("ap ",Imported_Data!B2,CHAR(10)," ip enable ",CHAR(10)," ip mode static ",CHAR(10)," ip addr ",Imported_Data!A2," ",Imported_Data!L$2," gateway ",Imported_Data!L$3,CHAR(10)," ip name-server ",Imported_Data!L$4," ",Imported_Data!L$5,CHAR(10)," devname ",Imported_Data!C2,CHAR(10)," description ",CHAR(34),Imported_Data!D2,CHAR(34),CHAR(10)," location ",CHAR(34),Imported_Data!E2,CHAR(34),CHAR(10)," end")

然后将以下代码粘贴到VBE。 确保更新单元格引用。

 Public Sub CopyConcatToNotepad() Dim objDataObj As Object Dim strFormula strFormula = Split(Sheets(2).Range("A1").Value, vbCrLf) 'Write correct cell reference for CONCATENATE formula cell! Dim strOut As String strOut = Join(strFormula, vbCrLf) 'This is ClsID of MSFORMS Data Object Set objDataObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") objDataObj.SetText strOut, 1 objDataObj.PutInClipboard Set objDataObj = Nothing End Sub 

然后运行此代码将文本复制到剪贴板。 如果你将在记事本++中做CTRL + V,那么它会给出想要的结果!

编辑:修改代码以合并要求。

 Public Sub CopyConcatToNotepadSelCells() Dim objDataObj As Object Dim rG As Range Dim strFormula Dim strOut As String 'Loop through all selected cells and build concat string For Each rG In Selection strFormula = Split(rG.Value, vbCrLf) If Len(strOut) = 0 Then strOut = Join(strFormula, vbCrLf) Else strOut = strOut & vbCrLf & Join(strFormula, vbCrLf) End If Next rG 'This is ClsID of MSFORMS Data Object Set objDataObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") objDataObj.SetText strOut, 1 objDataObj.PutInClipboard Set objDataObj = Nothing End Sub