Страница: 1 |
Страница: 1 |
Вопрос: Перевод из VBA на VBS
Добавлено: 19.03.08 12:51
Автор вопроса: Dima | ICQ: 250561744
Задача такая. Написал прогу с помощью VBA, но сказали сделать так, чтобы запускалось без всяких Вордов и пр.
Программа запрашивает данные, которые через новый лист Ворда сохраняются в файл в досовской кодировке и потом посылается на порт принтера.
Так вот как сделать так, чтобы не через Ворд?
Буду очень благодарен.
'
' Пример Макрос
' Макрос создан 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-сайт:
Профиль | | #1
Добавлено: 19.03.08 13:19
руками переводить в досовскую кодировку
Номер ответа: 2
Автор ответа:
Dima
ICQ: 250561744
Вопросов: 1
Ответов: 1
Профиль | | #2
Добавлено: 24.03.08 11:17
Так я и говорю, что без понятия как обойтись без Ворда, можно хотя бы маленький примерчик? И как поступить с концовкой программы?
Номер ответа: 3
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #3
Добавлено: 24.03.08 11:43
ption Explicit
Enum Code
Win = 1
 os = 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
 im 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