Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 1 |

 

  Вопрос: Перевод из VBA на VBS Добавлено: 19.03.08 12:51  

Автор вопроса:  Dima | ICQ: 250561744 
Задача такая. Написал прогу с помощью VBA, но сказали сделать так, чтобы запускалось без всяких Вордов и пр.
Программа запрашивает данные, которые через новый лист Ворда сохраняются в файл в досовской кодировке и потом посылается на порт принтера.
Так вот как сделать так, чтобы не через Ворд?
Буду очень благодарен.

Private Sub CommandButton1_Click()
'
' Пример Макрос
' Макрос создан 07.02.08 БРАЙЦЕВ Д.М.
'
Dim Firma As String
Dim Ty As String
Dim Diam As String
Dim Marka As String
Dim Tara As String
Dim NumbTara As String
Dim Brutto As String
Dim Netto As String
Dim Data As String
Dim TabNumber As String
Dim Shtamp As String
Dim CodeVnutr As String
Dim s As String
Dim Priznihod As String
Dim Lak As String
Dim Invnomobor As String
Dim Invnaimobor As String

Firma = InputBox("Введите название изготовителя")
Ty = InputBox("Введите ТУ")
Diam = InputBox("Введите диаметр")
Marka = InputBox("Введите марку")
Tara = InputBox("Введите тару")
NumbTara = InputBox("Введите № тары/массу")
Brutto = InputBox("Введите брутто")
Netto = InputBox("Введите нетто")
Data = InputBox("Введите дату")
TabNumber = InputBox("Введите табельный №")
Shtamp = InputBox("Введите штамп ОТК")
CodeVnutr = InputBox("Введите внутренний код")
Priznihod = InputBox("Введите признак сырья и номер хода")
Lak = InputBox("Введите номмер лака")
Invnomobor = InputBox("Введите инвентарный номмер оборудования")
Invnaimobor = InputBox("Введите инвентарное наименование оборудования")

CR_LF = Chr(13) + Chr(10)
s = "" + CR_LF
s = s + "OS" + CR_LF
s = s + "Q240,16" + CR_LF
s = s + "q500,15" + CR_LF
s = s + "I8,10,001" + CR_LF
s = s + "N" + CR_LF
s = s + "B470,108,2,1,2,2,90,N," + Chr(34) + CodeVnutr + Chr(34) + CR_LF
s = s + "B260,240,2,E30,2,1,42,B," + Chr(34) + Shtamp + Chr(34) + CR_LF
s = s + "A380,498,2,2,1,2,N," + Chr(34) + Firma + Chr(34) + CR_LF
s = s + "A470,420,2,1,1,2,N," + Chr(34) + Ty + Chr(34) + CR_LF
s = s + "A470,360,2,1,1,2,N," + Chr(34) + Diam + Chr(34) + CR_LF
s = s + "A350,155,2,1,1,2,N," + Chr(34) + Invnaimobor + Chr(34) + CR_LF
s = s + "A150,155,2,1,1,2,N," + Chr(34) + Priznihod + Chr(34) + CR_LF
s = s + "A170,90,2,1,2,3,N," + Chr(34) + Lak + Chr(34) + CR_LF
s = s + "A306,355,2,1,1,2,N," + Chr(34) + Marka + Chr(34) + CR_LF
s = s + "A140,355,2,1,1,2,N," + Chr(34) + Tara + Chr(34) + CR_LF
s = s + "A470,287,2,1,1,2,N," + Chr(34) + NumbTara + Chr(34) + CR_LF
s = s + "A300,288,2,1,1,2,N," + Chr(34) + Brutto + Chr(34) + CR_LF
s = s + "A125,288,2,1,1,2,N," + Chr(34) + Netto + Chr(34) + CR_LF
s = s + "A470,220,2,1,1,2,N," + Chr(34) + Data + Chr(34) + CR_LF
s = s + "A470,155,2,1,1,2,N," + Chr(34) + Invnomobor + Chr(34) + CR_LF
s = s + "A340,220,2,1,1,2,N," + Chr(34) + TabNumber + Chr(34) + CR_LF
s = s + "GG150,108," + Chr(34) + "gk_h" + Chr(34) + CR_LF
s = s + "GG100,430," + Chr(34) + "stb_h" + Chr(34) + CR_LF
s = s + "P1" + CR_LF + Chr(26)
Documents.Add
Selection.WholeStory
    Selection.Delete Unit:=wdCharacter, Count:=1
Selection.TypeText Text:=s
Selection.WholeStory
    Selection.Font.Name = "Courier New"
ChangeFileOpenDirectory "D:\Взвешивание\"
    ActiveDocument.SaveAs FileName:="OS.txt", FileFormat:=wdFormatDOSText, _
        LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False
Open "D:\Взвешивание\OS.txt" For Input As #1
    Do Until EOF(1)
    Line Input #1, peremen
    si = si + peremen + Chr(13) + Chr(10)
    Loop
Open "LPT1:" For Binary As #2
Put #2, , si
Close #1
Close #2
'Windows("OS").Activate
'    ActiveWindow.Close
'Windows("Взвешивание готовой продукции.").Activate
End Sub

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 19.03.08 13:19
руками переводить в досовскую кодировку

Ответить

Номер ответа: 2
Автор ответа:
 Dima



ICQ: 250561744 

Вопросов: 1
Ответов: 1
 Профиль | | #2 Добавлено: 24.03.08 11:17
Так я и говорю, что без понятия как обойтись без Ворда, можно хотя бы маленький примерчик? И как поступить с концовкой программы?

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 24.03.08 11:43
ption Explicit

Enum Code
    Win = 1
    ;Dos = 2
    Koi = 3
    Iso = 5
End Enum

Function Recode(Char As String, Src As Code, Dest As Code) As String

    Const wDos As String = "°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧрЩЪЫЬЭЮЯтуфхцчшщсыьэюяШъЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Їабвгдежзийклмноп"
    Const wIso As String = "°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧўЩЪЫЬЭЮЯтуфхцчшщсыьэюяШъ°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп"
    Const wKoi As String = "ђ‘’Ѓ‡Іґ§¦µЎЁ®­¬ѓ„‰€†ЂЉЇ°«Ґ»ё± ѕ№є¶·Є©ў¤Ѕі…‚ЌЊЋЏ‹™˜“›џ—њћЈ–љќ”їј•бвчздецъйклмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС"
    Const wWin As String = "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
    Const NotRecodedChar As String = "?"

    If Src = Dest Then
        Recode = Char
        Exit Function
    End If

    ;Dim t As String, i As Long, tt As String, a As Long, ss As String, ch As String
    If Src = Win Then
        t = Char
    Else
        Select Case Src
            Case Koi: ss = wKoi
            Case Dos: ss = wDos
            Case Iso: ss = wIso
        End Select
        For i = 1 To Len(Char)
            ch = Mid(Char, i, 1)
            If Asc(ch) < 128 Then
                t = t & ch
            Else
                a = InStr(1, ss, ch, vbBinaryCompare)
                If a = 0 Then
                    t = t & NotRecodedChar
                Else
                    t = t & Mid$(wWin, a, 1)
                End If
            End If
        Next i
    End If

    If Dest = Win Then
        Recode = t
    Else
        Select Case Dest
            Case Koi: ss = wKoi
            Case Dos: ss = wDos
            Case Iso: ss = wIso
        End Select
        For i = 1 To Len(Char)
            ch = Mid(t, i, 1)
            If Asc(ch) < 128 Then
                tt = tt & ch
            Else
                a = InStr(1, wWin, ch, vbBinaryCompare)
                If a = 0 Then
                    tt = tt & NotRecodedChar
                Else
                    tt = tt & Mid$(ss, a, 1)
                End If
            End If
        Next i
        Recode = tt
    End If

End Function

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам