【发布时间】:2011-03-17 06:03:30
【问题描述】:
好的,所以我有一堆 Word 模板,它们在 Document_New 上读取注册表中的一些值并将这些值插入到文档的书签中。到目前为止,我这样做的方式是首先从一个 INI 文件中读取,该文件指示模板中的书签被称为什么。这是逐行完成的,它再次被放入一个数组中。然后我遍历该数组并一一读取注册表。
现在,是否可以读取整个 INI 部分并直接将其放入数组中? 像这样?:
Dim strIniKey as String
strIniKey = INI key
If bookmark exists strIniKey Then
pick up registry string from strIniKey
Insert into bookmark
End if
然后循环遍历每个 INI 值?
这就是我现在的做法:
Dim objShell
Dim strShell
Dim strDataArea
Dim Verdier() As String
Dim regPath
Dim regString
Dim Felter
Dim WScript
' Klargjør stringverdier fra INI-fil
regPath = ReadIni(File, "Registry", "Path")
regString = ReadIni(File, "Registry", "String")
regStrFornavn = ReadIni(File, strRegArea, "Fornavn")
regStrEtternavn = ReadIni(File, strRegArea, "Etternavn")
regStrInitialer = ReadIni(File, strRegArea, "Initialer")
regStrBrevnavn = ReadIni(File, strRegArea, "Brevnavn")
regStrStilling = ReadIni(File, strRegArea, "Stilling")
regStrStilling_EN = ReadIni(File, strRegArea, "Stilling_EN")
regStrAvdeling = ReadIni(File, strRegArea, "Avdeling")
regStrAvdeling_EN = ReadIni(File, strRegArea, "Avdeling_EN")
regStrEnhetoffnavn = ReadIni(File, strRegArea, "Enhetoffnavn")
regStrEnhetoffnavn_EN = ReadIni(File, strRegArea, "Enhetoffnavn_EN")
regStrVisitaddress1 = ReadIni(File, strRegArea, "Visitaddress1")
regStrVisitpostnrsted = ReadIni(File, strRegArea, "Visitpostnrsted")
regStrPostadresse1 = ReadIni(File, strRegArea, "Postadresse1")
regStrPostadresse2 = ReadIni(File, strRegArea, "Postadresse2")
regStrPostnrsted = ReadIni(File, strRegArea, "Postnrsted")
regStrLeveringsadresseNr = ReadIni(File, strRegArea, "LeveringsadresseNr")
regStrLeveringsadresseSted = ReadIni(File, strRegArea, "LeveringsadresseSted")
regStrTelesentralbord = ReadIni(File, strRegArea, "Telesentrbord")
regStrDirekteinnvalg = ReadIni(File, strRegArea, "Direkteinnvalg")
regStrMobil = ReadIni(File, strRegArea, "Mobil")
regStrTelefax = ReadIni(File, strRegArea, "Telefax")
regStrWebadresse = ReadIni(File, strRegArea, "Webadresse")
regStrSentrepostmottak = ReadIni(File, strRegArea, "Sentrepostmottak")
regStrEpost = ReadIni(File, strRegArea, "Epost")
regStrForetaksnr = ReadIni(File, strRegArea, "Foretaksnr")
'Klargjør array av alle verdier fra INI-fil
Felter = Array(regStrFornavn, regStrEtternavn, regStrBrevnavn, regStrInitialer, _
regStrStilling, regStrStilling_EN, regStrAvdeling, regStrAvdeling_EN, regStrEnhetoffnavn, _
regStrEnhetoffnavn_EN, regStrVisitaddress1, regStrVisitpostnrsted, regStrPostadresse1, _
regStrPostadresse2, regStrPostnrsted, regStrLeveringsadresseNr, regStrLeveringsadresseSted, _
regStrTelesentralbord, regStrDirekteinnvalg, regStrMobil, regStrTelefax, regStrWebadresse, _
regStrSentrepostmottak, regStrEpost, regStrForetaksnr)
这基本上创建了一个包含来自 INI 文件的值的数组。
代码继续获取数组的每个部分,并在书签中循环,搜索匹配项,然后从注册表中插入相应的值。
Set objShell = CreateObject("Wscript.Shell")
For iTeller = 0 To UBound(Felter)
Dim sBookMarkName, sVerdi
Dim myRange As Range
On Error Resume Next
sBookMarkNametemp = "Bookmark" & Felter(iTeller)
sVerdi = ""
sVerdi = objShell.RegRead(regPath & "\" & Felter(iTeller))
sBookMarkName = ""
sBookMarkName = ActiveDocument.Bookmarks(sBookMarkNametemp).Name
With ActiveDocument
If .Bookmarks.Exists(sBookMarkNametemp) Then
Set myRange = .Bookmarks(sBookMarkName).Range
myRange.Text = sVerdi
.Bookmarks.Add sBookMarkName, myRange
End If
End With
On Error GoTo 0
objShell = Nothing
WScript = Nothing
每个书签称为“书签”+ INI 中每一行的值。 比如“bookmarkFIRSTNAME”等。
【问题讨论】: