我需要一些帮助来创建一个批处理文件并将excel中的某个范围粘贴到它中但是保留excel中显示的文本。
例子 :(这是我要粘贴到批处理文件中的单元格的内容)
"pushd N:\contracte\CONTRACTE NEVOI PERSONALE\Contracte nevoi personale 102501N - 105000N\
for /f ""delims="" %%a in ('dir /b /s ^| find ""104020""') do (
cd ..
xcopy ""%%a"" ""C:\Users\agrigoriu\Desktop\COPIERE\"" /E /D /Y )
@ECHO ---"
问题1: 所有内容都会在这一行中显示: 推N:\ contracte \ CONTRACTE NEVOI PERSONALE \ Contracte nevoi personale 102501N - 105000N \ for / f"" delims ="" %% a in(' dir / b / s ^ | find"" 104020""')do(cd .. xcopy"&# 34; %% a"""" C:\ Users \ agrigoriu \ Desktop \ COPIERE \"" / E / D / Y)@ECHO - - "
问题2:它将原始文本中的每个逗号加倍
这是我到目前为止的代码,它只将该范围内的信息粘贴到记事本中(上述问题):
Sub test()
'The range that contains the values
Range("D:D").Copy
'Start Notepad And let it recieve focus
Shell "notepad.exe", vbNormalFocus
'Send the keys CTRL+V To Notepad (i.e the window that has focus)
SendKeys "^V"
End Sub
Ideea:One"解决方案"首先将它粘贴到Word中,然后再将其复制并粘贴到记事本中,但这必须适用于所有标准计算机,我发现默认情况下没有多少人在vba上打开Word应用程序。
答案 0 :(得分:2)
最好将文本写入文件,然后在记事本中打开该文件,这样您就可以控制格式化,并且不会丢弃用户在剪贴板中可能拥有的任何内容。
Dim hF As Integer: hF = FreeFile()
'// get temp file name
Dim path As String: path = Environ$("TEMP") & "\DUMP.TXT"
Open path For Output As #hF
Print #hF, Replace$(Range("D1").Text, vbLf, vbCrLf)
Close #hF
Shell "NOTEPAD.EXE " & path, vbNormalFocus
(这将替换单元格中存在的新行\ r \ n,这是导致所有内容出现在一行中的原因)
答案 1 :(得分:0)
基于Alex K的回答,这适用于范围:
Sub test()
Dim hF As Integer: hF = FreeFile()
Dim output As String
'// get temp file name
Dim path As String: path = Environ$("TEMP") & "\DUMP.TXT"
Range("D2:D2000").Select
Open path For Output As #hF
For Each c In Selection
Print #hF, Replace(c.Value, vbLf, vbCrLf)
Next c
Close #hF
Shell "NOTEPAD.EXE " & path, vbNormalFocus
End Sub