Python程序员资源
我已经用Python写了很多代码,因此我非常习惯Python的语法,对象结构等。
什么是最好的在线指南或者资源站点,可以为我提供基础知识,以及具有VBA与Python等效功能/特性的比较或者查找指南。
例如,我在将Python中的简单列表等同于VBA代码时遇到麻烦。我对字典等数据结构也有疑问。
有哪些可用资源或者教程可以为我提供将python功能移植到VBA的指南,或者仅是从强大的OOP语言背景适应VBA语法的指南?
解决方案
回答
本教程不是针对" Python程序员"的,但我认为这是一个非常不错的vba资源:
http://www.vbtutor.net/VBA/vba_tutorial.html
该站点使用列表列出了一个真实的示例:
http://www.ozgrid.com/VBA/count-of-list.htm
回答
可能不完全是我们要寻找的内容,但是如果我们具有一定的编程背景,那么这是一个不错的VBA网站。这不是列表,而是更多的问题/解决方案
http://www.mvps.org/access/toc.htm
回答
不赞成使用Office 2000、2003和VB6中的VBA,而支持.Net技术。除非我们维护的是旧代码,否则请坚持使用python,或者甚至可以使用IronPython for .Net。如果我们使用IronPython,则在处理各种COM对象(例如Office中的对象)时,可能不得不在这里和那里编写一些C#/ VB.Net帮助程序类,但否则它应该是功能不错的。 IronPython中几乎所有的Python优点都已结束。如果我们只是在做一些COM脚本,请看一下ActiveState提供的内容。我过去曾用它来做一些COM工作。专门使用Python作为Active Scripting语言(经典ASP)。
回答
"I'm having trouble equating a simple List in Python with something in VBA..."
这不是学习语言的最佳方法。在某种程度上,我们要放弃大量的Python,因为VBA中没有类似的东西。
如果VBA中没有像Python列表那样的东西,那么-好-这是新东西。而新的将是Python部分中的重要价值。
Python内置类型的第一部分可能无法很好地映射到VBA。这使学习显得艰巨。但是将自己限制为仅出现在VBA中的内容往往会阻止学习。
回答
我认为就普通用法而言,列表的等效项将是数组。
在Python中通常使用列表的地方,通常会在VB中使用数组。
但是,与Python列表相比,VB数组非常不灵活,更像C中的数组。
' An array with 3 elements '' The number inside the brackets represents the upper bound index '' ie. the last index you can access '' So a(2) means you can access a(0), a(1), and a(2) ' Dim a(2) As String a(0) = "a" a(1) = "b" a(2) = "c" Dim i As Integer For i = 0 To UBound(a) MsgBox a(i) Next
请注意,如果声明元素的初始数量,则无法调整VB中的数组大小。
' Declare a "dynamic" array ' Dim a() As Variant ' Set the array size to 3 elements ' ReDim a(2) a(0) = 1 a(1) = 2 ' Set the array size to 2 elements '' If you dont use Preserve then you will lose '' the existing data in the array ' ReDim Preserve a(1)
我们还将在VB中遇到各种集合。
例如。 http://devguru.com/technologies/vbscript/14045.asp
VB中的字典可以这样创建:
Set cars = CreateObject("Scripting.Dictionary") cars.Add "a", "Alvis" cars.Add "b", "Buick" cars.Add "c", "Cadillac"
http://devguru.com/technologies/vbscript/13992.asp
回答
VBA与Python完全不同,因此我们至少应阅读将要使用的应用程序(Excel,Access)所提供的" Microsoft Visual Basic帮助"。
一般来说,VBA具有与Python模块等效的功能。它们被称为"库",创建起来不像Python模块那么容易。我之所以提到它们,是因为图书馆将为我们提供可以使用的更高级别的类型。
作为启动微动,可以使用两种类型来代替list
和dict
。
清单
VBA的类型为"收藏"。默认情况下可用(位于库VBA中)。所以你只要做一个
将昏暗名单列为新收藏集
从那时起,我们可以使用其方法/属性:
.Add(item)
(list.append(item)),.Count
(len(list)),.Item(i)
(list [i])和.Remove(i)
(del list [i])。很原始,但是就在那里。
我们还可以使用VBA Array类型,就像python数组是相同类型项的列表一样,并且与python数组不同,我们需要执行ReDim
来更改其大小(即,我们不能仅添加和删除项)
dict
要具有类似字典的对象,应将脚本库添加到VBA项目1. 之后,我们可以
昏暗的字典作为新字典
然后使用其属性/方法:
.Add(key,item)
(dict [key] = item),.Exists(key)
(dict.has_key [key]),.Items()
(dict.values()),- .Keys()(dict.keys()),以及在对象浏览器2中可以找到的其他。
1打开VBA编辑器(Alt + F11)。转到ToolsReferences,然后在列表中检查" Microsoft Scripting Runtime"。
2要查看对象浏览器,请在VBA编辑器中按F2(或者ViewObject Browser)。
回答
这听起来可能很奇怪,但是由于我学习了C ++中的数据结构,因此我很难确定如何在不使用指针的情况下创建它们。 VB6 / VBA的某些特性使他们对我感到不自然。无论如何,我遇到了MSDN的这一部分,该部分有几个用VBA编写的数据结构示例。我发现它很有用。
使用类模块创建动态数据结构
回答
虽然我不是Python程序员,但我们也许可以使用Iron Python和Visual Studio运行VSTO。至少那样,我们将不必学习VBA语法。