Добрый вечер. Дело в том, что Excel спрашивает у драйвера выбранного принтера его "физические" поля и резервирует полученные поля на странице, чтобы не было проблем при печати. Если ваш принтер умеет печатать "встык" (без полей), то вам нужно установить соответствующий параметр печати в драйвере принтера. Жмем Ctrl+P>Свойства, ищем галочку "Печать без полей" и тыкаем в нее, жмем ОК>Закрыть
печать без полей выключена печать без полей включена
Добрый вечер. Дело в том, что Excel спрашивает у драйвера выбранного принтера его "физические" поля и резервирует полученные поля на странице, чтобы не было проблем при печати. Если ваш принтер умеет печатать "встык" (без полей), то вам нужно установить соответствующий параметр печати в драйвере принтера. Жмем Ctrl+P>Свойства, ищем галочку "Печать без полей" и тыкаем в нее, жмем ОК>Закрыть
печать без полей выключена печать без полей включена
Sub Макрос3() With ActiveDocument.Range.Font.Shading .Texture = wdTextureNone .ForegroundPatternColor = wdColorAutomatic .BackgroundPatternColor = wdColorAutomatic End With End Sub
Интересное кино. Если выделять вместе со знаком абзаца, не работает, без него - на урЯ!
ибо
Roman777, а если так? [vba]
Код
Sub Макрос3() With ActiveDocument.Range.Font.Shading .Texture = wdTextureNone .ForegroundPatternColor = wdColorAutomatic .BackgroundPatternColor = wdColorAutomatic End With End Sub
Option Explicit Private Type DOCINFO pDocName As String pOutputFile As String pDatatype As String End Type Private Declare Function ClosePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As Long Private Declare Function EndDocPrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As Long Private Declare Function EndPagePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As Long Private Declare Function OpenPrinter _ Lib "winspool.drv" _ Alias "OpenPrinterA" ( _ ByVal pPrinterName As String, _ phPrinter As Long, _ ByVal pDefault As Long _ ) As Long Private Declare Function StartDocPrinter _ Lib "winspool.drv" _ Alias "StartDocPrinterA" ( _ ByVal hPrinter As Long, _ ByVal Level As Long, _ pDocInfo As DOCINFO _ ) As Long Private Declare Function StartPagePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As Long Private Declare Function WritePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long, _ pBuf As Any, _ ByVal cdBuf As Long, _ pcWritten As Long _ ) As Long
Public Sub PrintStr(sWrittenData As String, Optional prn As String) Dim lhPrinter As Long Dim lReturn As Long Dim lpcWritten As Long Dim lDoc As Long
Dim MyDocInfo As DOCINFO If Len(prn) = 0 Then prn = ActivePrinter prn = Left(prn, InStr(prn & " (Ne", "(Ne") - 2) lReturn = OpenPrinter(prn, lhPrinter, 0) If lReturn = 0 Then MsgBox "Принтер не найден" Exit Sub End If MyDocInfo.pDocName = "AAAAAA" MyDocInfo.pOutputFile = vbNullString MyDocInfo.pDatatype = vbNullString lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo) Call StartPagePrinter(lhPrinter) lReturn = WritePrinter(lhPrinter, _ ByVal (sWrittenData & vbFormFeed), _ Len(sWrittenData), lpcWritten) lReturn = EndPagePrinter(lhPrinter) lReturn = EndDocPrinter(lhPrinter) lReturn = ClosePrinter(lhPrinter) End Sub
[/vba]
использование в коде [vba]
Код
call PrintStr("Текст который нужно печатать","Имя принтера")
[/vba] Второй аргумент не обязателен, если его не указывать, будет печататься на активный принтер [vba]
Код
Sub dd() Dim s$ s = "Текст" If MsgBox(s, 4, "Печатать?") = vbYes Then PrintStr s End Sub
[/vba]
можно как-то так
[vba]
Код
Option Explicit Private Type DOCINFO pDocName As String pOutputFile As String pDatatype As String End Type Private Declare Function ClosePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As Long Private Declare Function EndDocPrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As Long Private Declare Function EndPagePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As Long Private Declare Function OpenPrinter _ Lib "winspool.drv" _ Alias "OpenPrinterA" ( _ ByVal pPrinterName As String, _ phPrinter As Long, _ ByVal pDefault As Long _ ) As Long Private Declare Function StartDocPrinter _ Lib "winspool.drv" _ Alias "StartDocPrinterA" ( _ ByVal hPrinter As Long, _ ByVal Level As Long, _ pDocInfo As DOCINFO _ ) As Long Private Declare Function StartPagePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As Long Private Declare Function WritePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long, _ pBuf As Any, _ ByVal cdBuf As Long, _ pcWritten As Long _ ) As Long
Public Sub PrintStr(sWrittenData As String, Optional prn As String) Dim lhPrinter As Long Dim lReturn As Long Dim lpcWritten As Long Dim lDoc As Long
Dim MyDocInfo As DOCINFO If Len(prn) = 0 Then prn = ActivePrinter prn = Left(prn, InStr(prn & " (Ne", "(Ne") - 2) lReturn = OpenPrinter(prn, lhPrinter, 0) If lReturn = 0 Then MsgBox "Принтер не найден" Exit Sub End If MyDocInfo.pDocName = "AAAAAA" MyDocInfo.pOutputFile = vbNullString MyDocInfo.pDatatype = vbNullString lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo) Call StartPagePrinter(lhPrinter) lReturn = WritePrinter(lhPrinter, _ ByVal (sWrittenData & vbFormFeed), _ Len(sWrittenData), lpcWritten) lReturn = EndPagePrinter(lhPrinter) lReturn = EndDocPrinter(lhPrinter) lReturn = ClosePrinter(lhPrinter) End Sub
[/vba]
использование в коде [vba]
Код
call PrintStr("Текст который нужно печатать","Имя принтера")
[/vba] Второй аргумент не обязателен, если его не указывать, будет печататься на активный принтер [vba]
Код
Sub dd() Dim s$ s = "Текст" If MsgBox(s, 4, "Печатать?") = vbYes Then PrintStr s End Sub
еще вариант, для работы нужно включить итеративные вычисления Кнопками 1 и 2 перегенерируются левая и правая таблицы соответственно Кнопкой 3 перезапускается шифровка/дешифровка, после нажатия на нее нужно выделить любую ячейку и зажать F9 на кнопки нужно жать двойным кликом
еще вариант, для работы нужно включить итеративные вычисления Кнопками 1 и 2 перегенерируются левая и правая таблицы соответственно Кнопкой 3 перезапускается шифровка/дешифровка, после нажатия на нее нужно выделить любую ячейку и зажать F9 на кнопки нужно жать двойным кликомkrosav4ig
Sub test() With New IniFile .INIFileName = "d:\1.ini" .WritePrivateINIString 1, 2, 3 Debug.Print .GetPrivateINIString(1, 2) .WritePrivateINIString 4, 5, 6 Debug.Print .GetPrivateINIString(4, 5) End With End Sub
[/vba]
или в ini файл, например [vba]
Код
Sub test() With New IniFile .INIFileName = "d:\1.ini" .WritePrivateINIString 1, 2, 3 Debug.Print .GetPrivateINIString(1, 2) .WritePrivateINIString 4, 5, 6 Debug.Print .GetPrivateINIString(4, 5) End With End Sub
Евгений, спасибо, понравилось. После небольшого тестирования захотелось "мультипроцессности" и решил немного доработать Вот чего у мну получилось (в конце я немного поизвращался над формой )
Евгений, спасибо, понравилось. После небольшого тестирования захотелось "мультипроцессности" и решил немного доработать Вот чего у мну получилось (в конце я немного поизвращался над формой )krosav4ig
Sub dd() Dim xcell As Variant xcell = Range("A2").Value Select Case 1 Case InStr(xcell, "абв.") MsgBox "абв." Case InStr(xcell, "аб.") MsgBox "аб." Case InStr(xcell, "а.") MsgBox "а." End Select End Sub
Sub dd() Dim xcell As Variant xcell = Range("A2").Value Select Case 1 Case InStr(xcell, "абв.") MsgBox "абв." Case InStr(xcell, "аб.") MsgBox "аб." Case InStr(xcell, "а.") MsgBox "а." End Select End Sub