在 CSV 中查找 UserForm Caption Variable 以获取其他值
Look up UserForm Caption Variable in CSV to get other values
我想要一个 Word 宏,它可以插入动态签名(最多三个)并且以前从未做过任何 VBA(更多的是 Powershell 家伙...)。
为此,我在 "developer" 界面中创建了一个用户窗体,其中包含 3 个框架和大量单选按钮,其中包含将能够签名的人员姓名作为标题。
由于有 60 人(或更多)可以签名,我考虑过为他们准备一个 CSV 文件,其中包含他们的“姓名、部门、职能”。
我的问题是我不知道如何读取 CSV、将其与我的标题进行比较(假设标题 = "Jon Swiss")并为其他三个值初始化变量。
我用一些书签标记了我的文档(仅适用于标题)。
我不知道您是否需要我完成的脚本(与 CSV 无关 - 抱歉...)
Private Sub RHBtn_Accepter_Click_Click()
'Initialisation
Dim i As Integer
'***
' Signature 1
'***
'Pour chaque valeur possible
For i = 1 To Me.Controls.Count
'Si i plus petit que le nombre de valeur définie
If i < Me.Controls.Count Then
Set MyControl = Me.Controls.Item(i)
'Si control dispose du tag RHSign1
If MyControl.Tag = "RHSign1" Then
'Si une valeur est activée
If MyControl.Value = True Then
'Mise en variable du nom en Sign1
RHSignature1 = MyControl.Caption
Exit For
End If
End If
End If
Next i
'***
' Gettings CSV Value
'***
'***
' Tagging the bookmarks
'***
If ActiveDocument.Bookmarks.Exists("RhSignet1") = True Then
Selection.GoTo What:=wdGoToBookmark, Name:="RhSignet1"
Selection.TypeText Text:=RHSignature1
End If
End Sub
感谢您的帮助。
我找到了使用 CSV 的方法。
'Répertoire
directory = "H:\@SCRIPTS\VBA_MacroWord_DigitRH\"
FileName = "BaseSignatureTest.csv"
'Ouverture de la connexion CSV
Set rs = CreateObject("ADODB.Recordset")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & directory & ";" _
& "Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
strSQL = "SELECT * FROM " & FileName
rs.Open strSQL, strcon, 3, 3
rs.MoveFirst
Do
col1 = rs("Nom")
col2 = rs("Fonction")
col3 = rs("DPT")
col4 = rs("Signature")
rs.MoveNext
'Si une valeur a été trouvée et qu'elle corresponds, définition des valeurs
If col1 = RHSignature2 Then
MsgBox "Signature2"
MsgBox col1
MsgBox col2
MsgBox col3
MsgBox col4
似乎有效。也许有更好的方法。但感谢所有花时间阅读我的人。
周末愉快,
乔恩
我想要一个 Word 宏,它可以插入动态签名(最多三个)并且以前从未做过任何 VBA(更多的是 Powershell 家伙...)。
为此,我在 "developer" 界面中创建了一个用户窗体,其中包含 3 个框架和大量单选按钮,其中包含将能够签名的人员姓名作为标题。
由于有 60 人(或更多)可以签名,我考虑过为他们准备一个 CSV 文件,其中包含他们的“姓名、部门、职能”。
我的问题是我不知道如何读取 CSV、将其与我的标题进行比较(假设标题 = "Jon Swiss")并为其他三个值初始化变量。
我用一些书签标记了我的文档(仅适用于标题)。
我不知道您是否需要我完成的脚本(与 CSV 无关 - 抱歉...)
Private Sub RHBtn_Accepter_Click_Click()
'Initialisation
Dim i As Integer
'***
' Signature 1
'***
'Pour chaque valeur possible
For i = 1 To Me.Controls.Count
'Si i plus petit que le nombre de valeur définie
If i < Me.Controls.Count Then
Set MyControl = Me.Controls.Item(i)
'Si control dispose du tag RHSign1
If MyControl.Tag = "RHSign1" Then
'Si une valeur est activée
If MyControl.Value = True Then
'Mise en variable du nom en Sign1
RHSignature1 = MyControl.Caption
Exit For
End If
End If
End If
Next i
'***
' Gettings CSV Value
'***
'***
' Tagging the bookmarks
'***
If ActiveDocument.Bookmarks.Exists("RhSignet1") = True Then
Selection.GoTo What:=wdGoToBookmark, Name:="RhSignet1"
Selection.TypeText Text:=RHSignature1
End If
End Sub
感谢您的帮助。
我找到了使用 CSV 的方法。
'Répertoire
directory = "H:\@SCRIPTS\VBA_MacroWord_DigitRH\"
FileName = "BaseSignatureTest.csv"
'Ouverture de la connexion CSV
Set rs = CreateObject("ADODB.Recordset")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & directory & ";" _
& "Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
strSQL = "SELECT * FROM " & FileName
rs.Open strSQL, strcon, 3, 3
rs.MoveFirst
Do
col1 = rs("Nom")
col2 = rs("Fonction")
col3 = rs("DPT")
col4 = rs("Signature")
rs.MoveNext
'Si une valeur a été trouvée et qu'elle corresponds, définition des valeurs
If col1 = RHSignature2 Then
MsgBox "Signature2"
MsgBox col1
MsgBox col2
MsgBox col3
MsgBox col4
似乎有效。也许有更好的方法。但感谢所有花时间阅读我的人。 周末愉快, 乔恩