Python程序员资源

Python程序员资源,python,vba,porting,Python,Vba,Porting,我已经用Python编写了很多代码,我非常习惯Python的语法、对象结构等等 什么是最好的在线指南或资源站点,可以为我提供基本知识,以及VBA与Python中具有等效功能/特性的比较或查找指南 例如,我很难将Python中的简单列表等同于VBA代码。我还担心数据结构问题,例如字典等 有哪些资源或教程可以为我提供将python功能移植到VBA的指南,或者只是从强大的OOP语言背景中适应VBA语法?本教程不是“针对python程序员”,但我认为它是一个非常好的VBA资源: 本网站介绍了一个使用列

我已经用Python编写了很多代码,我非常习惯Python的语法、对象结构等等

什么是最好的在线指南或资源站点,可以为我提供基本知识,以及VBA与Python中具有等效功能/特性的比较或查找指南

例如,我很难将Python中的简单列表等同于VBA代码。我还担心数据结构问题,例如字典等


有哪些资源或教程可以为我提供将python功能移植到VBA的指南,或者只是从强大的OOP语言背景中适应VBA语法?

本教程不是“针对python程序员”,但我认为它是一个非常好的VBA资源:

本网站介绍了一个使用列表的真实示例:


可能不完全是您想要的,但如果您有一些编程背景,这是一个不错的VBA站点。这不是这个=那个的列表,而是更多的问题/解决方案


VBA作为Office 2000、2003和VB6的一部分而被弃用,取而代之的是.Net技术。除非您正在维护旧代码,否则请坚持使用python,或者甚至使用IronPython for.Net。如果您使用IronPython,在处理各种COM对象(如Office中的对象)时,可能需要编写一些C#/VB.Net帮助程序类,但除此之外,它应该是功能非常好的。几乎所有Python的优点都在IronPython中结束了。如果您只是在编写COM脚本,请查看ActiveState的输出。我过去用它做过一些COM工作。特别是使用Python作为活动脚本语言(经典ASP)

“我很难把一个简单的 在Python中列出 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中遇到各种集合。 例如

VB中的词典可以这样创建:

Set cars = CreateObject("Scripting.Dictionary")
cars.Add "a", "Alvis"
cars.Add "b", "Buick"
cars.Add "c", "Cadillac" 

VBA与Python有很大的不同,因此您至少应该阅读将要使用的应用程序(Excel、Access…)提供的“Microsoft Visual Basic帮助”

一般来说,VBA与Python模块是等价的;它们被称为“库”,它们不像Python模块那样容易创建。我之所以提到它们,是因为库将为您提供可以使用的更高级类型

作为启动轻推,有两种类型可以替代
list
dict

列表
VBA的类型为
集合
。默认情况下,它是可用的(它位于库
VBA
)。所以你只需要做一个
dim列表作为新集合

从那时起,您可以使用它的方法/属性:

  • .Add(项目)
    (list.append(项目))
  • .Count
    (len(列表))
  • 。项目(i)
    (列表[i])和
  • 。删除(i)
    (删除列表[i])。非常原始,但它就在那里
您还可以使用VBA数组类型,与python数组一样,VBA数组是相同类型项的列表,与python数组不同,您需要执行
ReDim
来更改它们的大小(即,您不能只追加和删除项)

dict
要拥有类似字典的对象,应将脚本库添加到VBA项目中。之后,您可以
Dim adct As New Dictionary

然后使用其属性/方法:

  • 添加(键,项)(dict[key]=项)
  • .Exists(key)
    (dict.has_key[key])
  • .Items()
    (dict.values())
  • .Keys()
    (dict.Keys()),
    以及您将在对象浏览器中找到的其他对象
⑨打开VBA编辑器(Alt+F11)。转到工具→引用,并选中列表中的“Microsoft脚本运行时”


²要查看对象浏览器,请在VBA编辑器中按F2键(或查看)→对象浏览器。

这听起来可能很奇怪,但是自从我在C++中学习数据结构以来,我很难找出如何在没有指针的情况下创建它们。VB6/VBA有些东西让我觉得它们不自然。无论如何,我遇到了MSDN的这一部分,其中有几个用VBA编写的数据结构示例。我发现它很有用


虽然我不是Python程序员,但您可能可以使用Iron Python和Visual Studio运行VSTO。至少这样,您就不必学习VBA语法。

只是好奇而已。。。你为什么要学vba?这是个好问题,如果他跟我一样,他最终会成为办公室里的万事通,需要自动化一些Excel的废话。为什么有人想学一门新的编程语言,有很多原因。他们中的许多人在不同的平台上具有非常不同的功能和功能,因此了解多种语言是有意义的。我同意IronPython的建议。可能是贬值了。但是它在Office2007和2010中仍然可用。正如James提到的,VBA仍然是Office2010中的主要自动化语言。我找不到与此相反的信息,这将在下一次办公室发布时发生变化