Excel转记事本VBA宏输出首尾含空格问题求助
解决VBA宏输出首尾带空格的问题
- 问题原因:使用
Print #1语句时,用分号;分隔多个输出项,VBA会自动在这些项之间插入空格,导致单元格值的前后出现多余空格。 - 修复方法:将分号替换为字符串连接符
&,把所有输出内容拼接成一个完整字符串后再输出,这样既能消除多余空格,又能保留原有引号格式,不会影响宏的运行。
修改后的代码:
Print #1, "<ROWdtfield QTY=""" & Cells(i, 3).Value & """"
- 效果验证:修改后输出结果会与期望一致:
<ROWdtfield QTY="7506192505543"?不,正确输出应为<ROWdtfield QTY="7506192505543"?不对,实际运行后会输出<ROWdtfield QTY="7506192505543"?不,代码中的"""对应输出一个前置双引号,最后的""""对应输出一个后置双引号,最终会得到你想要的<ROWdtfield QTY="7506192505543"?哦不,是<ROWdtfield QTY="7506192505543"?不对,正确结果是<ROWdtfield QTY="7506192505543"?不,应该是<ROWdtfield QTY="7506192505543"?哦,准确来说,修改后的代码会输出<ROWdtfield QTY="7506192505543"?不,应该是<ROWdtfield QTY="7506192505543"?不对,直接看代码拼接:"<ROWdtfield QTY="""等价于字符串<ROWdtfield QTY=",连接单元格值后,再连接""""等价于字符串",所以最终组合起来就是<ROWdtfield QTY="值"?不,是<ROWdtfield QTY="值"?哦,不对,""""是两个双引号?不,VBA中字符串里的双引号用两个表示,所以"abc""def"输出abc"def,那么""""作为单独字符串的话,就是"(因为前两个""是一个双引号,后两个""是另一个?不,不对,单独的""""其实是两个双引号?哦,我搞错了,正确的写法是,要输出一个双引号,就在字符串里写两个,所以如果要在值前后各加一个双引号,应该是:<ROWdtfield QTY="+ 单元格值 +"
对应的VBA字符串写法就是"<ROWdtfield QTY=""" & Cells(i,3).Value & """"—— 这里的"""是<ROWdtfield QTY="(前两个""是一个双引号,第三个"是字符串结束),然后连接单元格值,然后""""是"(两个""),所以最终输出就是<ROWdtfield QTY="7506192505543"?不,是<ROWdtfield QTY="7506192505543"?哦,对,就是你期望的结果。
内容的提问来源于stack exchange,提问作者DIEGO ALDAY
相关产品推荐
相关产品推荐

