VBA Open notepad file and copy it's contents then paste to word


I need to open a text file in notepad, copy it's contents and then paste them into a word document.

I can open the text pad file fine using  Shell "notepad c\:Test.txt" but do not know how I can then copy it's content.  I know that this is strictly outside the capabilities of vba but wondered if anyone has ever done this.  

I have tried using the code below to write the text in as stream, but as it contains various charactor sets eg Kanji and English it screws up the charactors due to the local settings etc, the only way I can get an exact copy in is when I manually open the text file and copy, paste it in.

Dim fso As FileSystemObject
Dim sFilename As String
Dim tsmfile As TextStream
Dim strXML As String
Dim TempFileLoc As String
Dim strXMLComp As String

Dim strXMLCompOne As String
Dim TempFileLocText As String
    TempFileLocText = gobjDASLoc.TempPath("Test.txt")
    sFilename = TempFileLoc    
    Set fso = New FileSystemObject
    Set tsmfile = fso.OpenTextFile(sFilename, ForReading, False)

    If tsmfile Is Nothing Then
        Exit Function
    End If

    strXML = tsmfile.ReadAll

ActiveDocument.Bookmarks.Add("bmk_xxx").Range.Text = strXML
LVL 17
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Hello wobbled,

you could try to use the clipboard object from the forms library [see the comment in the sub]
Sub CopyPaste()
Dim i As Long
Dim strFileName As String
'Because these procedures use the DataObject  variable type
'you must have a reference set in your VBA project to
'the Microsoft Forms 2.0 object library
Dim m_clpData As New DataObject
  strFileName = "c:\test.txt"
  i = FreeFile
  Open strFileName For Input As i
  clpData.SetText Input$(LOF(i), #i)
  Close i
  ' Place the text from the Clipboard into document bookmark
  ActiveDocument.Bookmarks.Add("bmk_xxx").Range.Text = m_clpData.GetText()
End Sub

i didn't test this with the file you have so not sure if it takes all unicode characters with it

hope this helps a bit

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
wobbledAuthor Commented:
Hi bruintje

Sorry for the delay in getting back to you on this, as usual suddenly other items needed to be done urgently and this got pushed to the back of the que.  Thanks for your reply, I ended up doing this a different way due to changes in how I was getting sent the data (Reading XML into a freefile) , but as you pretty much got it spot on with your reply for what I asked I'll accept this as an excellent answer.


It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Office

From novice to tech pro — start learning today.