VB学习1_vb基础知识和文件操作

来源:互联网 发布:安卓应用市场源码 编辑:程序博客网 时间:2024/05/19 02:25

一:基本知识
1,变量首字母大写,常量全部大写
2,switch(<表达式1>,条件为1时的值,【……】)
3,动态数组,Dim 数组名() As Integer ReDim [Preserve] 数组名(*to*,*to*) As Integer,Preserve关键字可以保证数组大小改变时,值还存在
4,使用ubound保证不会越界
5,Dim A As Variant(Dim A()) A = Array(10,20,30)

二:文件操作
1,open 文件名 For [output,input,append] As #文件号
2,output或append方式时,使用print #文件号,[输出列表]
3,output或append方式时,使用write #文件号,[输出列表]------这种方式,输出列表间自动用逗号隔开,字符串自动加双引号
4,output或append方式时,输出列表后面要加上分号,否则自动换行
5,output或append方式可以自动实现文件不存在则创建,很方便
6,使用output方式时,文件已经被清空,即使不写内容,当关闭文件的时候也是清空的
7,使用input方式时,Do While Not EOF(1) Line input #文件号,变量名 Loop
8,curdir(),dir(目录或者文件名,当目录时,使用第二参数vbDirectory<>"",vbcrlf,MKDIR
9,name path_name1 as path_name2 移动文件

10,返回当前工作薄的路径ThisWorkbook.Path

三:文件搜索

方法一,该方法可以用于excel2003,excel2007不可用

[vb] view plain copy
  1. Dim photo_array(1 To 1000) As String  
  2. With Application.FileSearch  
  3.     .NewSearch  
  4.     .LookIn = "c:/tupian"  
  5.     .SearchSubFolders = True  
  6.     .Filename = "*.jpg"  
  7.     If .Execute() > 0 Then  
  8.         For p = 1 To .FoundFiles.Count  
  9.             On Error Resume Next  
  10.             photo_array(p) = .FoundFiles(p) '获取图片路径,存放在数组中  
  11.         Next p  
  12.     End If  
  13. End With  

方法二,该方法可以用于excel2003和excel2007

[vb] view plain copy
  1. Public strArr() As String, rCount As Integer '文件检索  
  2. Function App_SearchSubFolder(keyword As String, rSearchSubFolders As Boolean)  
  3. Dim fd As Object  
  4. Dim fso As Object  
  5.     Set fso = CreateObject("Scripting.FileSystemObject")  
  6.     '開啟Excel內建的資料夾瀏覽方塊  
  7.     Set fd = Application.FileDialog(msoFileDialogFolderPicker)  
  8.     If fd.Show = -1 Then  
  9.         rLookIn = fd.SelectedItems(1)  
  10.     Else  
  11.         MsgBox "未選取資料夾"Exit Function  
  12.     End If  
  13.     rFilename = Dir$(rLookIn & "/" & keyword)  
  14.     rCount = 0  
  15.     '建立動態陣列  
  16.     ReDim Preserve strArr(rCount)  
  17.     '第一階資料夾  
  18.     Do While rFilename <> vbNullString  
  19.         strArr(rCount) = rLookIn & "/" & rFilename  
  20.         rCount = rCount + 1  
  21.         ReDim Preserve strArr(rCount)  
  22.         rFilename = Dir$()  
  23.     Loop  
  24.     If rSearchSubFolders Then    '判斷是否搜尋子資料夾  
  25.         '搜尋第二階以後的子資料夾  
  26.         Call App_NextSubFolder(fso.GetFolder(rLookIn), keyword)  
  27.     End If  
  28.     Set fd = Nothing  
  29.     Set fso = Nothing  
  30. End Function  
  31. Private Sub App_NextSubFolder(ByRef Folder As ObjectByRef keyword As String)  
  32.     Dim SubFolder As Object  
  33.     For Each SubFolder In Folder.SubFolders  
  34.         rFilename = Dir$(SubFolder.Path & "/" & keyword)  
  35.         Do While rFilename <> vbNullString  
  36.             strArr(rCount) = SubFolder.Path & "/" & rFilename  
  37.             rCount = rCount + 1  
  38.             ReDim Preserve strArr(rCount)  
  39.             rFilename = Dir$()  
  40.         Loop  
  41.         Call App_NextSubFolder(SubFolder, keyword)  
  42.     Next  
  43. End Sub  

四:读写指定编码文件

[vb] view plain copy
  1. Public Function SaveFile(FileName As Variant, strFileBody As VariantAs Boolean  
  2.     Dim ADO_Stream As Object  
  3.     Set ADO_Stream = CreateObject("ADODB.Stream")  
  4.      
  5.     With ADO_Stream  
  6.         .Type = 2  
  7.         .Mode = 3  
  8.         .Charset = "utf-8"  
  9.         .Open  
  10.         .WriteText strFileBody  
  11.         .SaveToFile FileName, 2  
  12.     End With  
  13.       
  14.     SaveFile = True  
  15.     Set ADO_Stream = Nothing  
  16. End Function  
  17.    
  18.  Public Function ReadUTF8(ByVal sUTF8File As StringAs String  
  19.      If Len(sUTF8File) = 0 Or Dir(sUTF8File) = vbNullString Then Exit Function  
  20.      Dim ados As Object  
  21.      Set ados = CreateObject("adodb.stream")  
  22.      With ados  
  23.          .Charset = "utf-8"  
  24.          .Type = 2  
  25.          .Open  
  26.          .LoadFromFile sUTF8File  
  27.          ReadUTF8 = .ReadText  
  28.          .Close  
  29.      End With  
  30.      Set ados = Nothing  
  31. End Function  


五:vba中工作表相关

没有表则创建

[vb] view plain copy
  1. SheetName = "新工作表"  
  2. Dim x As Object  
  3. On Error Resume Next  
  4. Set x = ActiveWorkbook.Sheets(SheetName)  
  5. If Err = 0 Then  
  6.     SheetExists = True  
  7. Else  
  8.     SheetExists = False  
  9. End If  
  10.   
  11. If Not SheetExists Then  
  12.     Sheets.Add  
  13.     ActiveSheet.Name = SheetName  
  14. End If  

原文来自:http://blog.csdn.net/weinianjie1/article/details/5977828