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

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

例如,我在将Python中的简单列表等同于VBA代码时遇到麻烦。 我还遇到数据结构(例如字典等)的问题。

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

===============>>#1 票数:24

VBA与Python完全不同,因此您至少应阅读要使用的应用程序(Excel,Access…)所提供的“ Microsoft Visual Basic帮助”。

一般来说,VBA具有与Python模块等效的功能。 它们被称为“库”,创建起来不像Python模块那么容易。 我之所以提到它们,是因为图书馆将为您提供可以使用的更高级别的类型。

作为入门者,可以使用两种类型来代替listdict

list

VBA的类型为Collection 默认情况下可用(位于VBA库中)。 所以你只要做一个
dim alist as New Collection
从那时起,您可以使用其方法/属性:

  • .Add(item) (list.append(item)),
  • .Count (len(list)),
  • .Item(i) (list [i])和
  • .Remove(i) (del list [i])。 很原始,但是就在那里。

您还可以使用VBA数组类型,就像python数组是相同类型项的列表一样,并且与python数组不同,您需要执行ReDim来更改其大小(即,您不能仅添加和删除项)

dict

要具有类似字典的对象,应将脚本库添加到VBA项目¹。 之后,您可以
Dim adict As New Dictionary
然后使用其属性/方法:

  • .Add(key, item) (dict [key] = item),
  • .Exists(key) (dict.has_key [key]),
  • .Items() (dict.values()),
  • .Keys() (dict.keys()),
    以及其他将在“对象浏览器”²中找到的对象。

¹打开VBA编辑器(Alt + F11)。 转到工具→参考,然后在列表中检查“ Microsoft脚本运行时”。

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

===============>>#2 票数:2

本教程不是针对“ Python程序员”的,但我认为这是一个很好的vba资源:

http://www.vbtutor.net/VBA/vba_tutorial.html

该站点使用列表展示了一个真实的示例:

http://www.ozgrid.com/VBA/count-of-list.htm

===============>>#3 票数:2

可能不完全是您要寻找的内容,但是如果您有一定的编程背景,那么这是一个不错的VBA网站。 这不是列表,而是更多的问题/解决方案

http://www.mvps.org/access/toc.htm

===============>>#4 票数:2

不赞成使用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)。

===============>>#5 票数:1

我认为就普通用法而言,列表的等效项是数组。 在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

===============>>#6 票数:1

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

===============>>#7 票数:0

这听起来可能很奇怪,但是由于我学习了C ++中的数据结构,因此我很难确定如何在没有指针的情况下创建它们。 VB6 / VBA的某些特性使他们对我感到不自然。 无论如何,我遇到了MSDN的这一部分,该部分有几个用VBA编写的数据结构示例。 我发现它很有用。

使用类模块创建动态数据结构

===============>>#8 票数:0

“在将Python中的简单列表与VBA中的某些东西等同时,我遇到麻烦...”

这不是学习语言的最佳方法。 在某种程度上,您要放弃大量的Python,因为VBA中没有类似的东西。

如果VBA中没有像Python列表那样的东西,那么-很好-这是新的东西。 而新的将是Python部分中的重要价值。

Python 内置类型的第一部分可能无法很好地映射到VBA。 这使学习显得艰巨。 但是将自己限制为仅出现在VBA中的内容往往会阻止学习。

  ask by translate from so

未解决问题?本站智能推荐:

2回复

将python应用程序移植到移动平台

我有一个在Windows,Linux和Mac上正常运行的python应用程序,我想将其移植到多个移动平台,如Blackberry,Windows Mobile,Palm,Android和iPhone。 我有几个想法: port app to platform支持某种类似Andro
1回复

用Python控制圆形包装

我正在尝试将Python中的“受控圆形包装与处理”算法移植到此处: http://www.codeplastic.com/2017/09/09/controlled-circle-packing-with-processing/?replytocom=22#respond 现在我的目
1回复

检查python 3支持的要求

我在pip要求文件中列出了几个具有不同依赖项集合的python项目。 我已经开始考虑将代码移植到python 3,但是我需要知道我的依赖项是否已经存在。 是否有可能检查从什么包requirements.txt文件支持Python 3里,什么不? 示例requirements.txt
1回复

将Python 2.7字节字符串移植到Python 3的最佳方法

我目前正在将Python 2.7代码移植到Python 3,并且在确定哪种最佳方法来处理字符串时遇到了麻烦。 我有具有以下导入的Python脚本: 现在,由于unicode_literals在Python 2.7脚本中转换了我所有的字符串,因此在脚本中出现了如下错误: 现在
1回复

从Java角度到Python的基本对象实例化

我试图通过将我之前做过的一个旧Java项目移植到Python中来学习Python。 但是我将在这里以更简化的方式表达我的疑问... 我想让我的代码尽可能地面向对象... 这是我得到的基本疑问... 实例化此对象时,可以在AnotherClass()中处理过程代码,并从那
1回复

端口C对Python的fread(&struct,...)

嘿,我真的很挣这个。 我试图将一小部分别人的代码移植到Python,这就是我所拥有的: 后来我需要像这样访问数据:frame.Y [x] [y] 所以我在Python中创建了一个Class'frame'并插入了相应的变量(frame.Y,frame.Cb,frame.Cr)。
1回复

端口MATLAB将椭球代码绑定到Python

存在MATLAB代码以找到所谓的“最小体积包围椭圆体”(例如, 这里 ,也在这里 )。 为方便起见,我会粘贴相关部分: 这是一些MATLAB测试代码: 这将产生协方差矩阵: 现在,我尝试将此代码移植到Python(2.7): 相应的测试代码: 产生这个
2回复

如何以与MATLAB相同的方式构造Python库和路径

多年来,我已经在matlab中为空间工程目的编写了数百个函数,这些函数我每天都会使用。 它们都很好地放在一个在子文件夹中排序的文件夹中,在matlab中,我在startup.m文件中仅对根文件夹有一个addpath()命令,然后在启动matlab之后可以立即使用任何功能。 我现在正在尝试
1回复

如何修改此python键盘记录器代码以在Linux下使用Windows?

python中有此基本键盘记录程序代码,可在Windows下运行。 如何修改使其在Linux下运行?
1回复

从Python迁移到Racket(正则表达式库和“Racket Way”)

我正在尝试学习Racket,并在此过程中尝试重写Python过滤器。 我的代码中有以下一对函数: 从我可以看出,Racket中第一个函数的实现将是以下几点: (define (dlv-input? text) (regexp-match? #rx"^DLV|^{|^Best