如何使用 VBA 写入 Python 文件?
How to write a Python file using VBA?
我想使用 excel VBA 在 python 中编辑脚本文件,然后在 ArcGis 中 运行。首先,我愿意接受任何更简单的方法,但到目前为止,我在使用 VBA sub!
制作多行脚本时遇到了问题
& vbCrLf &
在命令 Fileout.Write
中不起作用。当我打开我的脚本文件时,所有内容都在同一行上。
& Char(34) &
都不工作。
Private Sub CommandButton4_Click()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim path As String
path = Application.ActiveWorkbook.path
Dim Fileout As Object
Set Fileout = fso.CreateTextFile(path & "\" & "test2.py", True, True)
Fileout.Write "import arcpy & vbCrLf & lyr = arcpy.mapping.Layer( & Char(34) & limits & Char(34) &) & vbCrLf & lyr.visible = True & vbCrLf & arcpy.RefreshActiveView()'"
Fileout.Close
End Sub
这里是:你在正确的轨道上,但在处理字符串构建时被绊倒了。
您想使用 & 运算符连接用双引号括起来的字符串位。当您需要在字符串中使用双引号时,只需将它们加倍即可。
Private Sub CommandButton4_Click()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim path As String
path = Application.ActiveWorkbook.path
Dim Fileout As Object
Set Fileout = fso.CreateTextFile(path & "\" & "test2.py", True, True)
Fileout.Write "import arcpy" & vbCrLf & "lyr = arcpy.mapping.Layer(""limits"")" & vbCrLf & "lyr.visible = True" & vbCrLf & "arcpy.RefreshActiveView()'"
Fileout.Close
End Sub
错误在这里:
Fileout.Write "import arcpy & vbCrLf & lyr = arcpy.mapping.Layer( & Char(34) & limits & Char(34) &) & vbCrLf & lyr.visible = True & vbCrLf & arcpy.RefreshActiveView()'"
这没有给出预期的输出,因为您在要计算的 VBA 代码周围有引号。修复引号给出
Fileout.Write "import arcpy" & vbCrLf & "lyr = arcpy.mapping.Layer(" & Char(34) & limits & Char(34) & ")" & vbCrLf & "lyr.visible = True" & vbCrLf & "arcpy.RefreshActiveView()"
让我们使用一些续行符 (_
) 使这段代码更易读:
Fileout.Write "import arcpy" & vbCrLf _
& "lyr = arcpy.mapping.Layer(" & Char(34) & limits & Char(34) & ")" & vbCrLf _
& "lyr.visible = True" & vbCrLf _
& "arcpy.RefreshActiveView()"
Char(34)
可以通过双引号实现(""
内的引号计算为双引号):
Fileout.Write "import arcpy" & vbCrLf _
& "lyr = arcpy.mapping.Layer(""" & limits & """)" & vbCrLf _
& "lyr.visible = True" & vbCrLf _
& "arcpy.RefreshActiveView()"
您可以使用多个 WriteLine
代替 Write
去掉每行的 & vbCrLf _
:
Fileout.WriteLine "import arcpy"
Fileout.WriteLine "lyr = arcpy.mapping.Layer(""" & limits & """)"
Fileout.WriteLine "lyr.visible = True"
Fileout.WriteLine "arcpy.RefreshActiveView()"
我想使用 excel VBA 在 python 中编辑脚本文件,然后在 ArcGis 中 运行。首先,我愿意接受任何更简单的方法,但到目前为止,我在使用 VBA sub!
制作多行脚本时遇到了问题& vbCrLf &
在命令 Fileout.Write
中不起作用。当我打开我的脚本文件时,所有内容都在同一行上。
& Char(34) &
都不工作。
Private Sub CommandButton4_Click()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim path As String
path = Application.ActiveWorkbook.path
Dim Fileout As Object
Set Fileout = fso.CreateTextFile(path & "\" & "test2.py", True, True)
Fileout.Write "import arcpy & vbCrLf & lyr = arcpy.mapping.Layer( & Char(34) & limits & Char(34) &) & vbCrLf & lyr.visible = True & vbCrLf & arcpy.RefreshActiveView()'"
Fileout.Close
End Sub
这里是:你在正确的轨道上,但在处理字符串构建时被绊倒了。
您想使用 & 运算符连接用双引号括起来的字符串位。当您需要在字符串中使用双引号时,只需将它们加倍即可。
Private Sub CommandButton4_Click()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim path As String
path = Application.ActiveWorkbook.path
Dim Fileout As Object
Set Fileout = fso.CreateTextFile(path & "\" & "test2.py", True, True)
Fileout.Write "import arcpy" & vbCrLf & "lyr = arcpy.mapping.Layer(""limits"")" & vbCrLf & "lyr.visible = True" & vbCrLf & "arcpy.RefreshActiveView()'"
Fileout.Close
End Sub
错误在这里:
Fileout.Write "import arcpy & vbCrLf & lyr = arcpy.mapping.Layer( & Char(34) & limits & Char(34) &) & vbCrLf & lyr.visible = True & vbCrLf & arcpy.RefreshActiveView()'"
这没有给出预期的输出,因为您在要计算的 VBA 代码周围有引号。修复引号给出
Fileout.Write "import arcpy" & vbCrLf & "lyr = arcpy.mapping.Layer(" & Char(34) & limits & Char(34) & ")" & vbCrLf & "lyr.visible = True" & vbCrLf & "arcpy.RefreshActiveView()"
让我们使用一些续行符 (_
) 使这段代码更易读:
Fileout.Write "import arcpy" & vbCrLf _
& "lyr = arcpy.mapping.Layer(" & Char(34) & limits & Char(34) & ")" & vbCrLf _
& "lyr.visible = True" & vbCrLf _
& "arcpy.RefreshActiveView()"
Char(34)
可以通过双引号实现(""
内的引号计算为双引号):
Fileout.Write "import arcpy" & vbCrLf _
& "lyr = arcpy.mapping.Layer(""" & limits & """)" & vbCrLf _
& "lyr.visible = True" & vbCrLf _
& "arcpy.RefreshActiveView()"
您可以使用多个 WriteLine
代替 Write
去掉每行的 & vbCrLf _
:
Fileout.WriteLine "import arcpy"
Fileout.WriteLine "lyr = arcpy.mapping.Layer(""" & limits & """)"
Fileout.WriteLine "lyr.visible = True"
Fileout.WriteLine "arcpy.RefreshActiveView()"