Just nu i M3-nätverket
Gå till innehåll

Excel 2010 - klistra in i Notepad++ med vba


speedy1

Rekommendera Poster

Hej,

 

Jag försöker via Excel vba klistra in text i Notepad++, med kod:

 

Shell "C:\Program Files (x86)\Notepad++\notepad++.exe -nosession, vbNormalFocus

SendKeys "^V"

 

men ingenting klistras in automatiskt. När Notepad++ öppnats händer inget mer (om jag här använder Ctrl+V manuellt klistras det kopierade in men jag vill ha det automatiskt).

SendKeys "^V" borde väl automatiskt klistra in den redan kopierade texten?

 

Någon som har en idé?

 

/speedy1

 

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

Fungerar det om du riktar koden mot t.ex. vanliga Anteckningar (notepad.exe)?

Kanske det behövs en kort fördröjning innan du skickar tangentkommandot? Sätta en timer på 1 sekund eller något sådant.

Länk till kommentar
Dela på andra webbplatser

Ja, det fungerar mot vanliga notepad.exe men jag behöver ha in det i Notepad++.exe (med en default-text före det kopierade dessutom).

Ok, ska prova att lägga in en fördröjning. Varför kan det behövas menar du?

 

 

... provade att lägga in en fördröjning på 1 sek, på raden före SendKeys "^V" men då aktiveras inte ens notepad++ fönstret längre.

 

Jag korrigerade min "fördröjningskod". Nu aktiveras notepad++ men fortfarande klistras inget in ...

 

 

 

/speedy1

Länk till kommentar
Dela på andra webbplatser

Jag testar om och om igen ... det ser ut som den klistrar in "SYN" i stället för det som kopierats (?!)

 

När jag manuellt öppnar ett nytt notepad++ är det helt tomt. När denna kod öppnar ett notepad++  (och verkar ändå göra något mer ...) står där sedan "SYN" t.h. om "1".

Av någon anledning ser det ut som om den klistrar in "SYN". Hmm, var kommer det ifrån?

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

Har nu labbat med detta en stund och jag får precis som du denna [sYN] i Notepad++

Testade även att skicka text direkt till klippbordet via MSForms-objekt men samma "fel".

Alt fungerar jättefint mot vanliga Notepad.

 

Men denna "fullösning" får jag att fungera, att skicka tangentkommandon som går via menyerna på Notepad++ (svensk version). Kör du med t.ex. engelska menyer så får du anpassa till rätt tangenttryckningar.

Sub notepad()
    
    Range("A1:C3").Copy
    
    Shell "C:\Program Files (x86)\Notepad++\notepad++.exe", vbNormalFocus
    
    SendKeys "%", True
    SendKeys "R", True
    SendKeys "l", True

End Sub

Länk till kommentar
Dela på andra webbplatser

Tack, Ove!

 

En "fullösning" är också en lösning :thumbsup:, och i det här fallet ser din lösning ut att fungera bra.

Eftersom jag har engelsk version av notepad++ fick jag ändra vilka bokstäver som skulle användas i kombination med Alt (%).

Lade till att den skulle öppna ett nytt "blad" i notepad++ (SendKeys "%F" ihop med SendKeys "%N") för att med säkerhet få in det på ett helt tomt blad.

 

Tack igen!

 

 

/speedy1

Länk till kommentar
Dela på andra webbplatser

Nu när det hela tycks ha löst sig kanske jag som inte alls kan VBA kan ställa två frågor?

 

1. Måste man simulera tangenttryckningar? Finns inget "paste"?

2. Skulle det fungera att med VBA skriva direkt till filen och därefter öppna den för fortsatt redigering?

Länk till kommentar
Dela på andra webbplatser

Jag är inte säker men

 

1. man måste nog simulera knapptryckningar när man hanterar andra Applikationer via Excel vba

2. vet ej, tyvärr

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...