VBA sheet_by_name3.name运行不了?

1. vba操作excel文件可以的,vba可以封装成exe文件把工程属性设置成标准exe文件,设置好启动对象用shell调用2. excel vba帮助文件你是指利用Excel内置的VBA进行编程还是指用VB编的程序来处理Excel文档或控制Excel?如果是前者,那么你按Alt+F11打开VB界面输入代码即可开始编程。后者则可以把Excel文档或Excel应用程序作为对象进行相应操作。至于具体如何做,那就不是这里一两句话能说清的,甚至一两本书的容量也不一定说得完。你可以自己查看Excel和VB的相关帮助文档或者到微软的MSDN网站寻求帮助。 3. vba打开excel文件并操作可以1. 手动执行VBA只需要在excel中增加绑定宏的按钮即可2. 通过命令执行是为了供其他系统或者工具使用,解决思路为,其他工具调bat文件,bat文件通过打开excel执行vba4. VBA文件Sub VBA打开PDF文件_?雨()
CreateObject("Wscript.Shell").Run ("pdf文件路径+名称")
' 如:CreateObject("Wscript.Shell").Run ("F:\pdf\ABC.pdf") End Sub5. vba 操作文件vna应该按照以下方式隐藏文件:Workbook_Open() 是系统内定的函数名(实际就是一个‘事件过程’接口)。  对于你的需求来说,打开文档时,它就相当于“程序的入口点”。  并不是说要求你把所有的代码写到这个过程中(何况有些时候这样根本满足不了需要),你可以定义其它的 过程/函数,在 Workbook_open() 中按一定的流程和条件,进行对其它过程的调用。  如果说“保存后打开出了错”,你应该把具体的错误提示信息说清楚。  必要时要提供源码,别人才好帮你找出错原因。  否则只能你自己进行高度分析。6. excel vba 打开文件方法/步骤如下1首先,打开Excel,打开开发工具。2然后,打开visualbasic。3再双击左侧的sheet1栏。4在窗口中输入代码:Sub Ma()mypath = "C:\Users\Administrator\Desktop\bbb\"myfile = Dir(mypath, vbDirectory)a = 1Do While myfile <> ""If myfile <> "." And myfile <> ".." ThenCells(a, 1) = myfilea = a + 1myfile = DirElsemyfile = DirEnd IfLoopEnd Sub5然后,再次打开开发工具,在开发工具中点开宏,运行Ma宏6最后,运行完成,路径为:C:\Users\Administrator\Desktop\bbb文件夹下的文件和文件夹名称都被获取到Excel中了。7. excel中的vba教程这个问题主要是用到VBA 窗体的事件. 单击checkbox事触发修改单元格内容的动作. 具体操作如下:1.在VBA编辑器中打开你的这个窗体,双击具体的一个CheckBox. 然后会进入此窗体的代码页面.系统会自动帮你建立一个checkbox的单击事件.2. 你的代码是通过判断单击的checkbox的状态来执行操作, 这个用到checkbox的Value属性.如:以上只是举例,没有套用你的代码. 我做了个简单的示例,可以下载查看.你有4个checkbox最简单的做法就是针对每个checkbox都添加一个单击事件. 单击事件也可以用change事件替代. 8. excel vba使用方法/步骤如下1打开Excel开发工具下的Visual Basic。2在项目工程区域,鼠标右击选择“插入”,点击“用户窗体”。3添加窗体后,在其右侧会自动出现一个工具箱。4点击“视图”下的工具箱可以控制它的显示和不显示。5点击工具箱中的控件,添加至用户窗体中。6点击执行按钮后,可以在Excel工作表中显示窗体界面,且可以使用控件按钮9. excel vba文档方法/步骤:1.打开Excel数据表。2.按下Alt+F11组合键,打开VBA编辑界面,双击左侧要导入数据的工作表,弹出右侧空白代码编辑区。3.输入代码: Sub 鱼木混猪() Dim a(7) For i = 1 To 7 a(i - 1) = Int(Rnd() * 100)Next i代码先定义一个一维数组,然后利用循环将随机数字放入到数组中4.继续输入代码: For i = 0 To 6 Range("B" & i + 2) = a(i)NextEnd Sub代码是再次利用循环将一维数组中的数字挨个放入到指定单元格中5点击上方的“运行子程序”按钮,返回Excel中,就可以看到一维数组中的数字就导出到了Excel单元格中10. vba操作excel文件代码如何用vb写一、增加模块1.增加一个模块,命名为“我的模块”ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).Name = "我的模块"系统常量vbext_ct_StdModule=12.增加一个类模块,命名为“我的类”ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_ClassModule).Name = "我的类"vbext_ct_ClassModule=23.增加一个窗体,命名为“我的窗体”ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm).Name = "我的窗体"vbext_ct_MSForm=3二、删除模块1.删除“模块1”ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("模块1")2.删除窗体“UserForm1”ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("UserForm1")3.删除类模块“类1”ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("类1")4.删除所有的窗体Sub RmvForms()
Dim vbCmp As VBComponent
For Each vbCmp In ThisWorkbook.VBProject.VBComponents
If vbCmp.Type = vbext_ct_MSForm Then ThisWorkbook.VBProject.VBComponents.Remove vbCmp
Next vbCmpEnd Sub相关:工作表和ThisWorkbook的模块类型为vbext_ct_Document=100三、增加代码1.在“模块1”中插入代码如果需要在“Sheet1”、“Thisworkbook”、或“Userform1”中操作,用只需将下面的“模块1”换成相应的名称即可。方法1:在模块的开始增加代码,增加的代码放在公共声明option,全局变量等后面。Sub AddCode1()
ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.AddFromString _
"sub aTest()" & Chr(10) & _
"msgbox ""Hello""" & Chr(10) & _
"end sub"End Sub方法2:在模块指定行处增加代码,原代码后移。增加代码不理会和判断插入处代码的内容。当指定行大于最后一行行号时,在最后一行的后面插入。Sub AddCode2()
With ThisWorkbook.VBProject.VBComponents("模块1").CodeModule
.InsertLines 1, "sub aTest()"
.InsertLines 2, "msgbox ""Hello"""
.InsertLines 3, "end sub"
End WithEnd Sub相关语句:(1)“模块1”中代码总行数:ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.CountOfLines(2)“模块1”中代码公共声明部分的行数:ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.CountOfDeclarationLines(3)显示“模块1”中第1行起的3行代码内容:Sub ShowCodes()
Dim s$
s = ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.Lines(1, 3)
Debug.Print sEnd Sub(4)过程aTest的起始行数:ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.ProcBodyLine("aTest", vbext_pk_Proc)ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.ProcStartLine("aTest", 0)系统常量vbext_pk_Proc=0二者的区别是ProcBodyLine返回sub aTest或Function aTest所在的行号,如果sub前面有空行,ProcStartLine返回空行的行号。(5)过程aTest的总行数:ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.ProcCountLines("aTest", vbext_pk_Proc)2.建立事件过程建立事件过程除了使用上面的代码如下面的AddEventsCode1外,还可以使用CreateEventProc方法,如AddEventsCode2所示。一般方法:Sub AddEventsCode1()
ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule.AddFromString _
"Private Sub Workbook_Open()" & Chr(13) & _
"MsgBox ""Hello""" & Chr(13) & _
"End Sub"End Sub'CreateEventProc方法:Sub AddEventsCode2()
Dim i%
With ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule
i = .CreateEventProc("SelectionChange", "Worksheet") + 1
.InsertLines i, "Msgbox ""Hello"""
End WithEnd Sub上面CreateEventProc的两个参数建立的事件过程为Worksheet_SelectionChange,分别是下划线两边的内容。相关:测试是否存在SelectionChange事件下面函数测试模块modulname是否存在过程subname,如果存在,则返回起始行号,否则返回0。debug.print HasSub("Worksheet_SelectionChange","Sheet1")Function HasSub(ByVal subname As String, ByVal modulname As String) As Long
On Error Resume Next
Dim i&
i = ThisWorkbook.VBProject.VBComponents(modulname).CodeModule.ProcBodyLine(subname, 0)
If Err.Number = 35 Then
Err.Clear
HasSub = 0
Else
HasSub = i
End IfEnd Function如果存在,则返回起始行号,否则返回0。四、删除代码1.删除Sheet1中第2行起的三行代码:如果只删除1行代码,第二个参数可省略。Sub DelCodes()
ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.DeleteLines 2, 3End Sub2.删除“模块1”的所有代码:Sub DelCodes()
With ThisWorkbook.VBProject.VBComponents("模块1").CodeModule
.DeleteLines 1, .CountOfLines
End WithEnd Sub3.删除过程aTest:Sub DelCodes()
With ThisWorkbook.VBProject.VBComponents("模块1").CodeModule
.DeleteLines .ProcStartLine("aTest", 0), .ProcCountLines("aTest", 0)
End WithEnd Sub4.将“模块1”的第5行代码替换为“x=3”ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.ReplaceLine 5, "x=3"五、引用项目1.增加引用ThisWorkbook.VBProject.References.AddFromFile "C:\Windows\System32\asctrls.ocx"2.取消引用ThisWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References("ASControls")这里ASControls是引用的名字,即后面的rf.Name。3.显示当前所有引用Sub ShowRefs()
Dim rf As VBIDE.Reference
For Each rf In ThisWorkbook.VBProject.References
Debug.Print rf.Name, rf.FullPath
NextEnd Sub六、信任及密码上面所有操作都基于这样的前题:(1)EXCEL已设置:工具(T)-宏(M)-安全性(M)-可靠发行商(T)-勾选了“信任对于VB项目的访问(V)”(2)工程没有设置密码如果不能满足它们中的任何一个,代码运行就会出错。因为微软不希望我们对VBProject进行操作,我们无从知道这种操作的直接方法被藏到了什么地方。幸运的是,微软在关起正门的同时,还是为我们留了一道门:SendKeys。借助于这道后门和“错误陷阱”,我们仍可以完成我们所要做的事。下面给出绕开这两道门的示意代码,如果你要运行它们,请记得切回EXCEL主界面,而不是在VBE中直接运行。1.信任对于VB项目的访问Sub SetAllowableVbe()
On Error Resume Next
Dim Chgset As Boolean
'陷阱测试,VBProject.Protection在这儿并无实际的意义
Debug.Print ThisWorkbook.VBProject.Protection
If Err.Number = 1004 Then
Err.Clear
Application.SendKeys "%TMS%T%V{ENTER}"
Chgset = True
DoEvents
End If
'要执行的操作....
'.....
'操作完成后还原操作前的状态
If Chgset Then
Application.SendKeys "%TMS%T%V{ENTER}"End Sub2.操作密码工程Sub AllowPass()
Dim pw$
pw = "Password"
If ThisWorkbook.VBProject.Protection = vbext_pp_locked Then
Application.VBEmandBars(1).Controls("工具(T)").Controls("VBAProject 属性(&E)...").Execute
Application.SendKeys pw & "{ENTER}{ENTER}"
DoEvents
End If
'要执行的操作….
'.....End SubProtection属性返回工程的受保护状态,vbext_pp_locked(1)为受保护,vbext_pp_none(0)表示没有保护。

我要回帖

更多关于 sheet_by_name 的文章

 

随机推荐