< návrat zpět

MS Excel


Téma: Text z Excelu do Notepad Windows 11 rss

Zaslal/a 29.11.2024 15:08

Ahoj, mám letitou proceduru, která vyzobe nějaké hodnoty z worksheetu, uloží je do textové proměnné (strX), pak otevře poznámkový blok a vloží to tam. Zde je příslušná část kódu
myApp = Shell("Notepad", vbNormalFocus) 'otevri Notepad
SendKeys strX, True 'vloz text

Poté, co jsme nuceně museli migrovat na Win11, tak se to chová nepředvidatelně: Notepad se otevře, ale ten text to namísto do něj vloží do excelu, tam kde zrovna stojí kurzor. Jindy to zase vloží do Notepadu...
Ten Notepad ve Windows11 je trošku jiný, umožňuje více oken, tak to bude možná jedna z možných příčin potíží.
Přes google jsem nenašel, že by někdo tento problém chtěl řešit.
Máte s tímto někdo zkušenosti - asi by to chtělo nějak zadefinovat na který list Notepadu to vložit, ale nevím jak 7

Zaslat odpověď >

#057060
Začátečník
Zkusil bych to přes soubor.
Nejprve data uložit do souboru a ten pak otevřít v NotePadu.
Např.:
Sub CopyToNotepad(strText as String)
Dim objFSO As Object
Dim objFile As Object

' Vytvoření objektu FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")

' Vytvoření a otevření textového souboru
Set objFile = objFSO.CreateTextFile("C:\Temp\output.txt", True)

' Zapsání textu do souboru
objFile.WriteLine strText

' Zavření souboru
objFile.Close

' Otevření Notepadu s vytvořeným souborem
Shell "notepad.exe C:\Temp\output.txt", vbNormalFocus
End Sub
citovat
#057064
€Ł мσşqμΐτσ
Nebo tohle, předpokldádam že máš office 32bit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" _
(ByVal hwnd As Long) As Long

Sub OpenExistingNotepadAndSendText()
Dim strX As String
Dim hwndNotepad As Long

' Text k odeslání
strX = "Toto je testovací text do nového listu Notepadu."

' Najdi okno Notepadu
hwndNotepad = FindWindow("Notepad", vbNullString)

If hwndNotepad = 0 Then
' Notepad není spuštěn, otevři ho
Shell "Notepad", vbNormalFocus
' Chvilku počkej, než se Notepad otevře
Application.Wait Now + TimeValue("00:00:02")

' Najdi okno Notepadu znovu
hwndNotepad = FindWindow("Notepad", vbNullString)
End If

' Pokud bylo okno nalezeno
If hwndNotepad <> 0 Then
' Nastav fokus na okno Notepadu
SetForegroundWindow hwndNotepad

' Otevři nový list (Ctrl+N)
SendKeys "^(n)", True

' Počkej malou chvíli na vytvoření nového listu
Application.Wait Now + TimeValue("00:00:01")

' Odešli text do nového listu
SendKeys strX, True
Else
MsgBox "Nepodařilo se najít nebo otevřít okno Notepadu.", vbExclamation
End If
End Sub
citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje