粘贴到Excel中的记事本单元格内容?

时间:2017-01-30 10:59:39

标签: excel-vba vba excel

我需要一些帮助来创建一个批处理文件并将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应用程序。

2 个答案:

答案 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