Страницы: 1
RSS
Сохранение диапазона ячеек в файле блокнота
 
Здравствуйте.
У меня возникла по работе потребность в создании макроса для копирования из excel в блокнот определённого диапазона ячеек, затем файл блокнота должен сохраняться в формате .scr и закрываться в папку с файлом excel.
Моих знаний VBA хватило только на функцию Sendkeys, но с ней программа работает через раз.
Код
Sub RunProgramm()
Dim Blocknot As Integer
ActiveSheet.Range("D1 :D 5" ;) .Select
Selection.Copy
Blocknot = Shell("Notepad", vbMaximizedFocus)
SendKeys "^V", True
SendKeys "^s:, True
SendKeys "C:\111\fileblocknot.scr", True 'Здесь должен быть не конкретный адрес, а, например, адрес, определённый в ячейке А1 excel (то есть сначала программа определяет своё местонахождение)
SendKeys "{ENTER}", True
SendKeys "{TAB}", True
SendKeys "{ENTER}", True
SendKeys "%{F4}"
End Sub

Вопрос в следующем: 1) как решить данную задачу без SendKeys?
2) как открывать определённый файл блокнота (уже созданный) из папки с файлом excel?
3) как заставить excel определять своё местоположение?

P.S. такое извращение в блокнотом нужно потому, что данной программой будут пользоваться люди, которые даже excel на уровне формул простых не знают, не говоря уже о том, чтобы сохранять в каком-то другом формате, или вставлять в блокнот нужные диапазоны ячеек, сохранять под другим форматом и т.п...далее этом файл будет закидываться в Autocad опять же через кнопку...
 
Здравствуйте.
А не проще ли сохранить в текстовый файл значения этого диапазона с разделителями табуляция? Зачем же "Блокнот" мучать?
 
Я думаю можно и обезьяну научить скопировать нужный диапазон в новую книгу и сохранить её как текст. Затем поменять расширение.
Если обезьяна необучаема - замените обезьяну :)
Хотя конечно можно и макрос написать (и таких макросов тут был вагон с тележкой) - но вот у нас есть одна обезьяна, которая регулярно забывает эти макросы разрешать :(
Но ей скоро уже на пенсию...
 
Цитата
3) как заставить excel определять своё местоположение?
Код
ThisWorkbook.Path

Цитата
2) как открывать определённый файл блокнота (уже созданный) из папки с файлом excel?
Код
Workbooks.open("thisworkbook.path" & "/" & переменная_с_названием_файла)
 
получится много манипуляций с файлами...хотелось бы решить проблему "нажатием кнопки"..
 
Вот и назначьте кнопке макрос, вроде такого
Код
Public Sub writeRange()
    Const FileName As String = "d:\path\filename.src"
    Dim sOut As String, fNum As Integer, vData As Variant
    Dim iRow As Long, iCol As Long
    
    fNum = FreeFile
    Open FileName For Output As #fNum
    vData = Range("D1:D5").Value
    For iRow = 1 To UBound(vData)
        sOut = CStr(vData(iRow, 1))
        For iCol = 2 To UBound(vData, 2)
            sOut = sOut & vbTab & CStr(vData(iRow, iCol))
        Next
        Print #fNum, sOut
    Next
    Close #fNum
End Sub
 
Например 2 похожих варианта:
Код
Sub Экспорт_Кода()
Open "C:\primer.scr" For Output As #1
Print #1, Join(Application.Transpose([F2:F75].Value), vbLf)
Close #1
End Sub

Sub Экспорт()
    Open ThisWorkbook.Path & "\ResultExcel.scr" For Output As #1
    Print #1, Join(Application.Transpose(Application.Transpose([A2:O2].Value)), vbNewLine)
    Close #1
End Sub
 
спасибо большое!!! объединил 2 кода)) в код от Anvg вставил код Hugo)) спасибо, народ!!
Страницы: 1
Читают тему
Наверх