Tag: vba

使用XLwings将variables从Excel传递给Python

我想在Python中编写一个简单的用户定义的函数,我通过Xlwings从Excel传递一个值。 我用一个加载项运行一些例子,你需要导入用户定义的函数,但是这似乎过于复杂。 为什么我的例子不工作? VBA: Function Hello(name As String) As String RunPython ("import Test; Test.sayhi(name)") End Function Python( Test.py ): from xlwings import Workbook, Range def sayhi(name): wb = Workbook.caller() return 'Hello {}'.format(name) 错误: NameError: name 'name' is not defined

macros按月分组数据

我试图创build一个按月分组数据的macros:例如,如果客户A的2月份有3个条目,那么它将把这三个条目合并为一个,然后对这些条目进行总和。 我有: 答:客户名称 B:发票号码 C:帐单月份 D:货币 E:收费金额 F:发票步骤 我试图做的是将以下内容合并到一行中,将发票数量相加,并将三行replace为一行。 这些条目是针对单个客户端的(因此分组取决于列A中的值)。 例如。 客户端A有一个三个入口,客户端B有一个,客户端C有一个。 那么对于二月份客户端A有一个,客户端B有一个,客户端C有两个。 我在这里看到的任何macros观build议都没有对我有帮助,我不断收到错误,所以我不知道是什么问题。 这是我试过的一个: Sub Group() Dim e As Range, a as Range Set e = Range("C6") Set c = e.Offset(, 2) Do If Evaluate("=month(" & e.Address & ")") <> Evaluate("=month(" & e(2).Address & ")") Then e(2).Resize(2, 3).Insert e(2).Offset(, 2) = "=sum(" & Range(a, […]

VBAstring比较失败

当我比较两个string时,遇到了有趣的问题。 我从文件中读取数据,一切正常。 然后同事给我发送input文件,这只是工作文件的CTRL + C和CTRL + V。 然后奇迹发生! VBA是如此混乱,不能比较两个简单的string,我倒了椅子。 如果你看看图像,你可以看到比较通过,如果条件是两个相同的string,但不应该。 我有点困惑如何发生。 所以遇到这样的人? 我真的开始考虑像终结者机器革命的东西。 (文件都保存在记事本+ +没有奇怪的字符或类似的东西) 进度更新 所以我试着从下面的评论中提示。 结束了这样的事情 If CStr(Trim(rowArray(4))) <> (CStr("N/A")) Then rowArray(4)的内容仍然是上图中的“N / A”string,而且excel仍然认为这个string不一样。 我也保存在pspad,netbeans和正常的记事本中的文件,问题仍然是一样的。

在VBA中使用替代函数运行时1004错误

任何想法为什么这个代码产生运行时1004错误? Dim outputHtml As String, tbody As String outputHtml = Right(htmlCode, Len(htmlCode) – InStr(htmlCode, "<div class=""b-campaign-stat-data b-campaign-stat-data_type_custom"">") + 1) tbodyStart = InStr(outputHtml, "<tbody") tbodyEnd = InStr(outputHtml, "</tbody>") tbody = Mid(outputHtml, tbodyStart, tbodyEnd + 8 – tbodyStart) outputHtml = WorksheetFunction.Substitute(outputHtml, tbody, "g") 这是绊倒它的最后一行。 我已经尝试了Application.Substitute以及…

如何在使用VBA打开Excel工作簿时绕过SharePoint“只读”警报。

我试图检查下面的工作簿文件是否已经在代码试图运行时在“编辑模式”下打开。 我试图计划,当这将错误,因为其他人已经在文件中。 我需要Workbook.Open打开为ReadOnly = False因为如果没有人在里面,我需要能够在更新后保存。 我遇到的问题是,即使DisplayAlerts = False当Workbook.Open行运行时,我得到一个屏幕提示,说:“文件被locking以供(某些用户)编辑。是否要:查看阅读 – 仅复制或保存并编辑文件的副本。“ 还有一个checkbox,显示“当服务器文件可用时接收通知”。 DisplayAlerts = False似乎不能取消SharePoint提示。 任何想法为什么不会取消promt? 我想在代码中试图在编辑模式下打开的点,不能,然后去If Activeworkbook.Readonly Then行和退出的子。 现在,它停止并等待SharePoint提示中的select。 Sub SendFCSpec() MsgBox ("Please wait while your comments are sent to the database.") ActiveSheet.Unprotect Password:="BAS1" 'Turn Screen Updating and Alerts off Application.ScreenUpdating = False Application.DisplayAlerts = False 'Disable Macros on AutoOpen of the Excel Workbook Application.AutomationSecurity […]

将单元格内容识别为文件名的语法

我已经写了一个Excelmacros将PDF文件从源文件夹复制到目标文件夹。 我现在正试图将一个Do循环合并到macros中,这样我就可以移动多个文件,每个文件都在一个单独的单元中标识。 此外,要移动的文件数量也会有所不同。 当我使用命令行 sFile = Range("G14").Value & ".pdf" 它会将单元格G14中列出的文件复制到目标文件夹。 但是,我没有使用Do Loop和sFiles = Cells (I,7)来增加我想要移动的一系列文件名。 这个macros在最后一步轰炸。 任何build议,将不胜感激。 Sub Copying_File() Sheets("Sheet1").Select I = 8 Do I = I + 1 If Cells(I, 7) = "zzzz" Then Cells(I, 8) = "Transfer of Files Complete" If Cells(I, 7) = "zzzz" Then Exit Do 'Declare Variables Dim FSO Dim […]

如何调用位于其他文件夹中的VBA脚本中的VBA脚本

我有一个名为“Summary_logic”的Excel工作表,它打开文件夹列表,每个文件夹都有一个带有VBA脚本的Excel工作表。 我想调用每个文件夹中的VBA脚本(processR1),并将结果复制到Summary_logic表单中。 'My code is given below. Private Const test_pvt_1_name As String = "TestPVT_Result_template" Private Const pvt_1_range As String = "G7:V1000" Private Const pvt_1_range_testname As String = "C7:C1000" Sub CleanTable() clear_summary delete_auxiliary_sheets Sheets("Summary_logic").Select End Sub ' Deletes all the values in the specified range Private Sub clear_summary() Sheets("Summary_logic").Select 'PVT_R01, Sensitivity Range: Range(pvt_1_range).Select Selection.ClearContents Range(pvt_1_range_testname).Select Selection.ClearContents […]

Excel VBA – 对象'_Global'的方法'范围'失败。 错误

我是新的excel VBA和在这个项目中,我想如果单元格B4不是空的,单元格C4是空的,那么应该高亮显示C4。 同样的代码应该循环到B16单元格。 “AMA79”是工作表名称。 我得到对象'_Global'的方法'范围'失败。 错误使用此代码。 你可以让我知道该怎么做才能纠正这个问题。 Dim i As Integer Dim rng As Range Set rng = Range("B4:B16") For i = 4 To 16 With ThisWorkbook.Worksheets("AMA79") If Range(B, i).Value <> "" And Range(D, i).Value = "" Then Range(c, i).Interior.Color = vbYellow End If End With Next i

如何在使用vba的邮件正文中连接文本,当我们需要使用IF THEN条件?

我想结合邮件正文中的文本,也需要使用IFTHEN条件。 我应该如何继续。 下面给出的是代码,可以看到Body之间的If条件。 Dim olApp As Object Set olApp = CreateObject("Outlook.Application") Dim olMail As Object Set olMail = olApp.CreateItem(olMailItem) Dim x As Integer Dim i As Integer Dim last As Integer x = 3 i = 2 last = Range("H" & Rows.Count).End(xlUp).Row Cells(23, 2).Value = last Do While i <= last If x – i […]

VBA错误1004:范围类的PasteSpecial方法失败

我现在使用的任何一种粘贴方法都有点麻烦。 从一张纸上的数据必须剪切和粘贴到另一张,但我不知道我错过了什么。 错误发生在这里,在评论“HERE”之后不久: Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 完整的代码可以在下面find,感谢任何答复。 Option Explicit Public Sub Workbook_Open() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim wb As Variant Dim wsName As Variant Dim blastrow As Variant Dim flastrow As Variant Dim lastrow As Variant ActiveWorkbook.Sheets("combined").Select Range("A1:U9999").ClearContents Dim MyObj As Object, MySource As Object, file As Variant file = Dir("G:\BS\Josh […]