VBA的注册表读写函数

VBA的注册表读写函数
2010-12-26 21:15:21| 分类:Office / VBA | 标签:|字号大中小订阅
VBA有四个内置函数让我们方便的操作注册表,但它们有一个缺点就是只能处理注册表的特定部分:
\HKEY_CURRENT_USER\Software\VB and VBA Program Setting\
【1】SaveSetting,顾名思义,这个函数就是让你在上面的注册表里里保存数值。

用法:SaveSetting appname, section, key, setting
appname是字符串,表示所设置键的应用程序或工程名称
section是字符串,表示所设置键的区域名称,在这个区域里保存注册表项设置
key是字符串,表示要保存的注册表项设置的名称
setting是任何类型的表达式,表示要保存的注册表项设置的值
例如:SaveSetting ,"MySection","MyKey","1973"
也可以:SaveSetting appname:=,section="MySection",key:="MyKey",setting:=1973
【2】GetSetting,就是从上面的注册表里获取字符串值,如果注册表项设置不存在或为空的话,返回由default参数指定的值。

用法:GetSetting(appname, section, key[, default])
appname是字符串,表示所设置键的应用程序或工程名称
section是字符串,表示所设置键的区域名称,在这个区域里保存注册表项设置
key是字符串,表示要保存的注册表项设置的名称
default是可选的表达式,如果注册表项设置中没有设置值,则返回缺省值。

如果省略,则default 取值为长度为零的字符串("")。

例如:SaveSetting ,"MySection","MyKey","1973"
Debug.Print GetSetting(,"MySection","MyKey","0000")
【3】DeleteSetting,删除所设置键的区域或注册表项设置。

取决于是否提供可选项Key。

用法:DeleteSetting appname, section[, key]
appname是字符串,表示所设置键的应用程序或工程名称
section是字符串,表示所设置键的区域名称,如果只有appname和section,就删除指定的区域连同这个区域下所有的注册表项设置。

key是可选字符串,表示要删除的注册表项设置
例如:SaveSetting ,"MySection","MyYear","1973"
SaveSetting ,"MySection","MyHome","Hunan"
DeleteSetting ,"MySection","MyYear" 只删除MyYear项设置。

DeleteSetting ,"MySection" 删除MySection区域并且同时删除剩下的MyHome项设置。

【4】GetAllSettings,获取指定区域下所有的注册项设置,返回一个2维Variant数组。

如果程序或区域不存在,返回未初始化的Variant 变量。

用法:GetAllSettings(appname, section)
appname是字符串,表示所设置键的应用程序或工程名称
section是字符串,表示所设置键的区域名称
例如:
dim i as integer
dim vResult as Variant
SaveSetting ,"MySection","MyYear","1973"
SaveSetting ,"MySection","MyHome","Hunan" vResult=GetAllSettings(,"MySection")
for i=LBound(vResult,1) to UBound(vResult,1)
Debug.Print vResult(i,0) & ": " & vResult(i,1)
Next i
DeleteSetting ,"MySection"。

合集下载

VB的报表读写EXCEL表

VB的报表读写EXCEL表

B声明Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long说明查找与指定文件关联在一起的程序的文件名。

关联的方式要么是运行程序,要么是打印文件。

可用Windows注册表编辑器将特定的文件类型同应用程序关联起来。

例如,扩展名为.TXT的文本文件通常与Windows记事本(NOTEPAD.EXE)关联到一起。

如在文件管理器中双击含.TXT扩展名的一个文件,就会自行启动记事本程序,并在其中载入文本文件;或者将指定的文件打印出来返回值Long,大于32表示成功参数表:参数类型及说明hwnd Long,指定一个窗口的句柄,有些时候,Windows程序有必要在创建自己的主窗口前显示一个消息框。

如果发生这种情况,由这个参数指定的窗口就会作为消息框的父窗口使用。

在VB环境中,通常将活动窗体的窗口句柄作为这个参数使用lpOperation String,指定字串“Open”来打开lpFlie文档;或指定“Print”来打印它。

也可设为vbNullString,表示默认为“Open”lpFile String,想用关联的程序打印或打开的一个程序名或文件名lpParameters String,如lpFile是一个可执行文件,则这个字串包含了传递给执行程序的参数。

如lpFile引用的是一个文档文件,或者不需要使用参数,则设为vbNullStringlpDirectory String,想使用的默认路径完整路径nShowCmd Long,定义了如何显示启动程序的常数值。

[转]VB自带的注册表操作函数示例

[转]VB自带的注册表操作函数示例

[转]VB⾃带的注册表操作函数⽰例VB ⾃带的注册表操作函数⽰例,放丢失。

原⽂地址:Option Explicit'SaveSetting在 Windows 注册表中保存或建⽴应⽤程序项⽬。

'语法'把项⽬写⼊注册表:savesetting "应⽤程序名","主键名","项","字符串值"'SaveSetting appname, section, Key, setting'使⽤命名参数:'SaveSetting appname:="MyApp", section:="Startup", Key:="Top", setting:=75'SaveSetting 语句的语法具有下列命名参数:'部分描述'appname 必要。

字符串表达式,包含应⽤程序或⼯程的名称,对这些应⽤程序或⼯程使⽤设置'section 必要。

字符串表达式,包含区域名称,在该区域保存注册表项设置。

'key 必要。

字符串表达式,包含将要保存的注册表项设置的名称。

'setting 必要。

表达式,包含 key 的设置值。

'说明'如果⽆论如何也不能保存注册表项设置,则将导致错误发⽣。

Private Sub Command1_Click()SaveSetting"注册表函数⽰例", "设置", "设置值", Text1.TextSaveSetting"注册表函数⽰例", "设置", "2", "这是第⼆个值"SaveSetting"注册表函数⽰例", "新次项", "3", "这是第三个值"End Sub'GetSetting 该⽅法其实读取,注册表中HKEY_CURRENT_USER\Software\VB and VBA Program Settings下相应的值。

VBA中的文件读写技巧与示例

VBA中的文件读写技巧与示例

VBA中的文件读写技巧与示例在VBA程序开发中,文件读写是一项非常常见且重要的操作。

通过使用VBA 的文件读写技巧,我们可以轻松地访问和处理各种文件,包括文本文件、Excel文件等。

本文将介绍几种常用的VBA文件读写技巧,并给出相应的示例代码。

1. 打开文件在VBA中,我们可以使用FileOpen函数来打开一个文件,并指定用于读取或写入数据的文件句柄。

下面是一个示例代码,演示了如何打开一个文本文件并读取其中的内容。

```vbaDim fileNum As IntegerDim filePath As StringDim fileContent As StringfilePath = "C:\example.txt" ' 文件路径fileNum = FreeFile ' 获取一个可用的文件句柄Open filePath For Input As fileNum ' 打开文件' 读取文件内容Do Until EOF(fileNum)Line Input #fileNum, fileContent ' 逐行读取Debug.Print fileContent ' 输出到调试窗口Loop```在上面的代码中,我们首先使用FreeFile函数获取了一个可用的文件句柄。

然后使用Open语句打开了一个文本文件,并指定用于输入数据的文件句柄。

接下来,使用Line Input语句逐行读取文件内容,将每一行的内容存储到fileContent变量中,并输出到调试窗口。

最后,使用Close语句关闭文件。

2. 写入文件除了读取文件内容,我们还可以使用VBA将数据写入文件中。

下面是一个示例代码,演示了如何将一组数据写入到一个新的文本文件中。

```vbaDim fileNum As IntegerDim filePath As StringDim data() As StringfilePath = "C:\example.txt" ' 文件路径data = Split("1,2,3,4,5", ",") ' 数据fileNum = FreeFile ' 获取一个可用的文件句柄Open filePath For Output As fileNum ' 打开文件' 写入数据For i = LBound(data) To UBound(data)Print #fileNum, data(i) ' 写入数据Next i```在上面的代码中,我们首先定义了一个包含一组数据的数组data。

用VB读写注册表实例

用VB读写注册表实例

用VB读写注册表实例首先新建一个工程,在新建的窗体上添加以下控件并设置相应属性:控件名属性值Label1 Caption 注册表键值:Label2 Caption 注册姓名:Label3 Caption 空Label4 Caption 注册公司:Label5 Caption 空Label6 Caption 空Text1 Text 空Text2 Text 空Command1 Caption 写入注册表Command2 Caption 退出然后,在程序的声明部分添加如下代码:Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPrivate Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As LongPrivate Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As LongConst error_success = 0&Const error_baddb = 1009&Const error_badkey = 1010&Const error_cantopen = 1011&Const error_cantread = 1012&Const error_cantwrite = 1013&Const error_registry_recovered = 1014&Const error_registry_corrupt = 1015&Const error_registry_io_failed = 1016&Const hkey_classes_root = &H80000000Const hkey_current_user = &H80000001Const hkey_local_machine = &H80000002Const REG_SZ = 1Const regkey = "softwareMy SoftMy program"接着为各个控件添加代码,代码如下:Private Sub Command1_Click()Dim keyvalue As StringDim retvalue As LongDim keyid As Longretvalue = RegCreateKey(h da0 key_local_machine, regkey, keyid)keyvalue = Text1.T extretvalue = RegSetValueEx(keyid, "注册名", 0&, REG_SZ, ByVal keyvalue, Len(keyvalue) 1)keyvalue = Text2.T extretvalue = RegSetValueEx(keyid, "注册公司", 0&, REG_SZ, ByVal keyvalue, Len(keyvalue) 1)If Text1.Text <> "" And Text2.Text <> "" ThenLabel3.Caption = Text1.TextLabel5.Caption = Text2.TextEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEndEnd SubPrivate Sub Form_Load()Dim retvalue As LongDim result As LongDim keyid As LongDim keyvalue As StringDim subkey As StringDim bufsize As LongLabel6.Caption = regkeyretvalue = RegCreateKey(hkey_local_machine, regkey, keyid) If retvalue = 0 Thensubkey = "注册名"retvalue = RegQueryValueEx(keyid, subkey, 0&, REG_SZ, 0&, bufsize)If bufsize < 2 Thenkeyvalue = ""retvalue = RegSetValueEx(keyid, subkey, 0&, REG_SZ, ByVal keyvalue, Len(keyvalue) 1)Elsekeyvalue = String(bufsize 1, " ")retvalue = RegQueryValueEx(keyid, subkey, 0&, REG_SZ, ByVal keyvalue, bufsize)keyvalue = Left$(keyvalue, bufsize - 1)Text1.Text = keyvalueEnd IfLabel3.Caption = keyvaluesubkey = "注册公司"retvalue = RegQueryValueEx(keyid, subkey, 0&, REG_SZ, 0&, bufsize)If bufsize < 2 Thenkeyvalue = ""retvalue = RegSetValueEx(keyid, subkey, 0&, REG_SZ, ByVal keyvalue, Len(keyvalue) 1)Elsekeyvalue = String(bufsize 1, " ")retvalue = RegQueryValueEx(keyid, subkey, 0&, REG_SZ, ByVal keyvalue, bufsize)keyvalue = Left$(keyvalue, bufsize - 1)Text2.Text = keyvalueEnd IfLabel5.Caption = keyvalueEnd IfEnd Sub好了,存盘,按F5运行程序,在两个T ext中分别写入你的“注册姓名”和“注册公司”的名称,然后单击“写入注册表”按钮,现在打开“注册表编辑器”,找到HKEY_LOCAL_MACHINESOFTWAREMy SoftMy Program,看看右边是不是生成了“注册名”和“注册公司”两个键值,是的话,恭喜你,你成功了。

VBA读取和写入文本文件的技巧

VBA读取和写入文本文件的技巧

VBA读取和写入文本文件的技巧VBA(Visual Basic for Applications)是一种强大的编程语言,可以与Microsoft Office应用程序(如Excel、Word和Access)进行交互。

在VBA中,读取和写入文本文件是一项常见的任务。

本文将介绍一些VBA中读取和写入文本文件的技巧,帮助您更高效地处理文本文件。

1. 打开文本文件要打开文本文件并读取其内容,可以使用VBA中的Open语句。

例如,下面的代码将打开一个名为“example.txt”的文本文件,并将其内容读取到变量txt中。

示例代码:```Dim MyFile As StringDim txt As StringMyFile = "C:\example.txt"Open MyFile For Input As #1txt = Input$(LOF(1), 1)Close #1```在上述代码中,MyFile是要打开的文本文件的路径和文件名。

在打开文件之后,使用Input$函数将文件内容读取到txt变量中。

LOF函数用于获取文件的长度,它在这里用于确定要从文件中读取的字符数。

最后,使用Close语句关闭文件。

2. 逐行读取文本文件有时候我们需要逐行读取文本文件,而不是将整个文件内容读取到一个字符串变量中。

以下示例代码演示了如何逐行读取文本文件。

示例代码:```Dim MyFile As StringDim TextLine As StringDim LineNumber As IntegerMyFile = "C:\example.txt"LineNumber = 1Open MyFile For Input As #1Do Until EOF(1)Line Input #1, TextLine'在这里可以对每一行的内容进行处理'例如,可以将每一行的内容输出到调试窗口Debug.Print "Line " & LineNumber & ": " & TextLineLineNumber = LineNumber + 1LoopClose #1```在上述代码中,使用Line Input语句逐行读取文本文件的内容。

VBA读写EXCEL文档的一般方法

VBA读写EXCEL文档的一般方法

VBA读写EXCEL文档的一般方法与ACAD的VBA一样,MS EXCEL也提供ActiveX对象模型,在ACAD VBA开发中使用EXCEL文档同样也要通过其ActiveX对象模型。

详细介绍EXCEL的ActiveX对象模型恐怕离ACAD太远,也没有必要。

在这只说说获取EXCEL工作表指定单元格内容的方法。

与ACAD的ActiveX对象模型一样,EXCEL的ActiveX对象模型其顶层对象也是Applicatio n对象,EXCEL.Application对象提供的Workbooks工作簿集合对象包含有全部已经启动的E XCEL工作簿对象,我们可以使用Application对象的ActiveWorkbook方法来获取当前活动的工作簿对象,也可以使用Workbooks(Index)方法来得到指定的工作簿对象。

获取要操作的工作簿后,需要获取工作簿中的指定工作表(worksheet)才能访问到其中的指定单元格内容。

EXCEL的单元格的确定由行和列唯一指定,例如Range("B4")表示第4行第2列。

下面的代码从EXCEL文档中读出数据并在ACAD图形的模型空间中自动根据EXCEL文档内容绘图。

行号是我加上的,真正的程序不需要它们。

1 Sub ExcelRead()2 Dim ExcelApp As New Excel.Application3 ExcelApp.Workbooks.Open "d:\book1.xls", , ReadOnly4 Dim pt1(0 To 2) As Double, pt2(0 To 2) As Double5 Dim Rad As Double6 Dim i As Integer7 i = 28 With ExcelApp.ActiveWorkbook.Worksheets("sheet1")9 Do10 Select Case .Range("A" & i)11 Case "直线":12 pt1(0) = .Range("B" & i)13 pt1(1) = .Range("C" & i)14 pt1(2) = 015 pt2(0) = .Range("D" & i)16 pt2(1) = .Range("E" & i)17 pt2(0) = 018 ThisDrawing.ModelSpace.AddLine pt1, pt219 Case "圆":20 pt1(0) = .Range("B" & i)21 pt1(1) = .Range("C" & i)22 pt1(2) = 023 Rad = .Range("D" & i)24 ThisDrawing.ModelSpace.AddCircle pt1, Rad25 Case Else:26 Exit Do27 End Select28 i = i + 129 Loop30 End With31 ExcelApp.Workbooks.Close32 ExcelApp.Quit33 ThisDrawing.Application.Update34 End Sub运行这段代码需要加载EXCEL ActiveX对象模型。

用VB操作注册表3

用VB操作注册表(三)梦里水乡登录数据库Registry的Value的存取--读取某个Key指定名称的值我们在这篇文章中将讲述利用RegQueryValueEx函数来读取某个Key的指定名称的值(value)RegQueryValueEx的Vb函数声明和参数解释:Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Longhkey:Key HandlelpValueName:Value NamelpReserved:保留参数,调用时设置为0即可lpType:返回读取的数据类型lpData:返回读取的数据lpcbData:传入lpData数据的长度,若成功读取数据,则返回所读取的数据的长度。

返回值: =0,表示成功;≠0,表示失败。

说明:1、 这一函数除了可读取指定名称的值之外,也可以读取default value。

如果要读取default value,只需要将参数lpValueName设置为""[空字符串]即可。

2、lpType 的可能取值,我们在第二篇文章中曾经提到过它的。

Enum ValueTypeREG_NONE = 0REG_SZ = 1 -->字符串REG_EXPAND_SZ = 2 -->可展开式字符串REG_BINARY = 3 -->Binary数据REG_DWORD = 4 -->长整数REG_DWORD_BIG_ENDIAN = 5 -->BIG_ENDIAN长整数REG_MULTI_SZ = 7 -->多重字符串End Enum先利用RegQueryValueEx函数获得某个value的数据类型和数据的长度,只需要将参数lpData设置为vbNullString[表示暂时不读取数据],然后由参数lpType获得数据类型,lpcbData获得数据长度。

VB写注册机一些常用的函数

关于用VB写注册机一些常用的函数1. ASC(X),Chr(X):转换字符字符码[格式]:P=Asc(X) 返回字符串X的第一个字符的字符码P=Chr(X) 返回字符码等于X的字符[范例]:(1)P=Chr(65)‘输出字符A,因为A的ASCII码等于65(2)P=Asc(“A”)‘输出652. Len(X):计算字符串X的长度[格式]:P=Len(X)[说明]:空字符串长度为0,空格符也算一个字符,一个中文字虽然占用2 Bytes,但也算一个字符。

[范例]:(1) 令X=””(空字符串)Len(X) 输出结果为0(2) 令X=”abcd”Len(X) 输出结果为4(3) 令X=”VB教程”Len(X) 输出结果为43. Mid(X)函数:读取字符串X中间的字符[格式]:P=Mid(X,n)由X的第n个字符读起,读取后面的所有字符。

P=Mid(X,n,m)由X的第n个字符读起,读取后面的m个字符。

[范例]:(1) X=”abcdefg”P=Mid(X,5)结果为:P=”efg”(2) X=”abcdefg”P=Mid(X,2,4)结果为P=”bcde”4. Replace: 将字符串中的某些特定字符串替换为其他字符串[格式]:P=Replace(X,S,R)[说明]:将字符串X中的字符串S替换为字符串R,然后返回。

[范例]:X=”VB is very good”P=Replace(X,good,nice)输出结果为:P=”VB is very nice”5. StrReverse:反转字符串[格式]:P=StrReverse(X)[说明]:返回X参数反转后的字符串[范例]:(1)X=”abc”P=StrReverse(X)输出结果:P=”cba”6. Ucase(X),Lcase(X):转换英文字母的大小写[格式]:P=Lcase(X)‘将X字符串中的大写字母转换成小写P=Ucase(X)‘将X字符串中的小写字母转换成大写[说明]:除了英文字母外,其他字符或中文字都不会受到影响。

VBA中的文件读写操作技巧详解

VBA中的文件读写操作技巧详解VBA(Visual Basic for Applications)是微软公司开发的一种编程语言,广泛应用于各种Office应用程序中,例如Excel、Word和Access。

在VBA 中,文件读写操作是一个常见的需求,通过使用一些技巧,我们可以更加高效地处理文件的读取和写入。

文件读写是一项基本而重要的任务,可以帮助我们处理大量的数据、生成报表、自动化数据处理等。

在VBA中,我们可以利用一些内置的对象和方法来实现文件读写操作。

下面将详细介绍一些VBA中的文件读写操作技巧。

1. 打开文件在VBA中,我们可以使用Open语句来打开一个文件。

通过指定文件的路径和打开模式,我们可以在代码中打开一个文件,使得我们可以读取或写入文件。

打开文件的模式有多种选择,例如只读模式、只写模式、读写模式等。

以下是一个示例代码:```vbaDim fileNum As IntegerfileNum = FreeFileOpen "C:\path\to\file.txt" For Input As fileNum```在这个示例代码中,我们使用Open语句打开一个名为file.txt的文件,以只读模式打开。

2. 读取文件在VBA中,我们可以使用Input和Line Input语句来读取文件。

Input语句用于按数据类型从文件中读取数据,而Line Input语句用于按行从文件中读取数据。

以下是一个示例代码:```vbaDim fileNum As IntegerDim text As StringfileNum = FreeFileOpen "C:\path\to\file.txt" For Input As fileNumDo Until EOF(fileNum)Line Input #fileNum, text' 在这里对读取到的内容进行处理LoopClose fileNum```在这个示例代码中,我们通过Line Input语句逐行读取文件中的内容,并在循环中处理每一行数据。

Excel中使用VBA通过FSO系统实现文件读写

VBA通过FSO系统实现文件读写一、概念在Excel的VBA中,通过FSO(FileSystemObject)可以实现对txt文件的读写操作。

FSO是VBScript的一部分,它提供了一种在VBA中操作文件系统的简单方法。

使用FSO,您可以创建、读取、写入和删除文件,以及获取文件系统的其他信息。

二、功能通过FSO,您可以实现以下功能:创建文件夹和文件读取文本文件中的内容写入文本文件删除文件或文件夹获取文件或文件夹的属性信息三、语法以下是使用FSO进行文件读写的基本语法:1.创建FileSystemObject对象:Dim fs As FileSystemObjectSet fs = New FileSystemObject2.读取文本文件:Dim file As TextStreamSet file = fs.OpenTextFile("文件路径", ForReading)Dim content As Stringcontent = file.ReadAll ' 读取整个文件内容file.Close ' 关闭文件3.写入文本文件:Dim file As TextStreamSet file = fs.OpenTextFile("文件路径", ForWriting)file.Write "要写入的内容" ' 写入文本内容file.Close ' 关闭文件四、案例下面是一个简单的案例,演示如何使用FSO读取txt文件中的内容:打开Excel,按下Alt + F11进入VBA编辑器。

在VBA编辑器中,插入一个新的模块(在左侧项目浏览器中右键单击VBAProject,选择“插入”>“模块”)。

在新模块中粘贴以下代码:Sub ReadTxtFile()Dim fs As FileSystemObjectSet fs = New FileSystemObject ' 创建FileSystemObject对象Dim file As TextStream' 打开要读取的文件Set file = fs.OpenTextFile("C:\example.txt", ForReading)Dim content As Stringcontent = file.ReadAll ' 读取整个文件内容file.Close ' 关闭文件MsgBox content ' 显示读取的内容End Sub在Excel中按下Alt + F8,选择“ReadTxtFile”宏并点击“运行”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档