Tag: vba

Characters.Insert方法(Excel)将文本限制为255个字符

在MS Excel中,通过VBAmacros添加超过255个字符到单个单元中真的不可能? 示例代码: Option Explicit Sub TestSub() Dim L As Long ' Const str = "1" & vbLf Dim i As Integer Range("A1").ClearContents Range("A1").WrapText = True For i = 1 To 260 ' any number greatest than 255 L = Range("A1").Characters.Count Debug.Print L Range("A1").Characters(L + 1, 1).Insert ("A") Next i End Sub 补充:保存单元格中的字符格式是非常重要的。

从另一个表中更新表值

我有一个大约20000行,52列的表的工作簿。 有时,我需要一次更新所选行的百分比。 我希望使用macros来更新基于行中的值的select单元格,由第二个更小的表格映射出来,并将更新后的值input到表1中。几乎就像一个VLOOKUP函数,如果没有find条目,则清除单元格。 例如,根据主机ID更改电话号码。 我试图用下面的代码中的一个数组做一下表1中的一组特定值,但是我的值没有更新。 我的VBA是有点生疏,所以如果有人可以审查和协助得到这个function,这将不胜感激。 我想使它最终根据表头更新表中的任何条目。 Sub NewNameandCostCenter() Dim myList, myRange Dim sht As Worksheet Dim sht2 As Worksheet Dim LastRow As Long Dim LastColumn As Long Dim StartCell As Range Dim LastRow2 As Long Set sht = Worksheets("NewNameMacro") Set sht2 = Worksheets("ALL") Set StartCell = Range("A2") 'Find Last Row and Column LastRow = […]

Excel VBA Msxml2.XMLHTTP.6.0与Msxml2.ServerXMLHTTP.6.0

我是一个自学成才的业余程序员,我是这个论坛的新手。 请多多包涵。 大约两年前,我写了一个简单的Excel vba程序来login到一个网站,并以.csv文件的forms获取客户声明。 我的程序利用GET和POST请求。 这个程序在三周前完全运行(为了我的需要),当时不幸的是我断了。 该程序无法通过最初的GET请求。 具体来说,它会在getReq.send行中断开。 我碰到这个职位: login到网站使用MSXML2.XMLHTTP而不是InternetExplorer.Application与VBA 在这里,我了解到您可以使用“Msxml2.XMLHTTP.6.0”而不是“Msxml2.ServerXMLHTTP.6.0”。 我相应地修改了我的代码,无需在Get请求之后parsingCookie,而且工作正常! 但我不知道。 即使我把它运用起来,我也不觉得在这个过程中学到了很多东西。 一些资料要注意: 我原来的程序打破了我的工作电脑(WindowsXP)。 考虑到这可能是一个XP的问题,无论如何在新机器的市场,我更新到一台运行Windows7的新电脑。 该程序仍然没有工作,虽然我收到了不同的错误信息。 我在Windows10电脑上运行我的代码,它运行良好。 我使用相同的代码连接到各种其他网站,它工作正常,不pipe什么操作系统。 所以,我的具体问题是: 为什么代码可以使用Msxml2.XMLHTTP.6.0而不是Msxml2.ServerXMLHTTP.6.0? 为什么代码首先会被打破? 为什么代码在一个特定的网站上工作,但没有另一个? 任何有识之士将不胜感激。 我已经附上我的代码(login信息X'd了)。 Sub RCGInquiry() Dim postReq, getReq, cookies Dim p0 As Integer, p1 As Integer, temp As String Dim result As String, respHead As String Set getReq = CreateObject("Msxml2.ServerXMLHTTP.6.0") 'Set getReq […]

macros将单张复制到工作簿后停止一张

我有一个工作簿在哪里加速计算(长话短说)我创build了一个macros,将三个表单复制到另一个文件,然后另一个macros将它们复制回来。 要复制的macros工作正常,但是在复制一个工作表后复制回来的macros。 我在StackOverflow内search,发现了一些类似的问题,但找不到一个有效的答案。 有一篇文章认为它与Office版本有关,另一篇文章则涉及Shift键问题。 这里是代码: Application.Calculation = xlCalculateManual Application.ScreenUpdating = False Application.DisplayAlerts = True Application.EnableEvents = False ' ' Set up the workbooks ' Set ThisWkb = ThisWorkbook Fname = Application.GetOpenFilename( _ fileFilter:="Excel Macro Files, *.xlsm", _ Title:="Select the Storage File", _ MultiSelect:=False) Set StorageWbk = Workbooks.Open(Fname) ' MsgBox ("Beginning process – please click ok […]

logging数不同在VBA与访问

我有一个Excel VBA工作簿,以string的forms生成一个SQL语句。 我将这个SQL传递到logging集对象中,并使用CopyFromRecordSet函数将数据转储到Excel工作表中。 上面的方法给了我67条logging。 如果我将VBA中生成的确切SQL粘贴到Access中的新查询中,它将提供400条logging。 SQL是以下内容: SELECT tbJob.jobID, tbTasks.tskName, tbTaskCat.catName, tbTasks.tskActivity, tbJob.JobDueDate, tbJob.jobCompletedDate, tbJob.jobCreatedOn, tbJobStatus.statusDes, tbStaff.staffForename & ' ' & tbStaff.staffSurname AS Assignee FROM tbJobStatus INNER JOIN (tbStaff INNER JOIN (tbTaskCat INNER JOIN (tbTasks INNER JOIN tbJob ON tbTasks.tskID = tbJob.jobTaskID) ON tbTaskCat.catID = tbTasks.tskCatID) ON tbStaff.staffID = tbJob.jobAssignedToID) ON tbJobStatus.statusID = tbJob.jobStatusID WHERE tbJob.jobStatusID […]

在图表中定位标签

我有一个包含两个图表的电子表格,其中我想根据表格中的值在一个系列的点之后添加一些文本框。 我为此创build了两个程序,每个程序都有自己的优点和缺点: Sub add_comments(apply_to As Series, source_range As Range) Dim i As Long Dim c As Range If source_range.Count > apply_to.Points.Count Then Set source_range = source_range.Resize(apply_to.Points.Count, 1) End If i = 1 For Each c In source_range If Not IsError(c) And i <= apply_to.Points.Count Then If Len(c.Text) <> 0 Then apply_to.Points(i).HasDataLabel = True apply_to.Points(i).DataLabel.Text = […]

如何locking包含公式的单元格,但仍然允许macros运行?

我有一个工作表,我让我的员工填写,我已经计算了要locking的单元格,所以他们不能更改它们。 我已经select了单元格和选定的属性,并确保选中“locking”checkbox。 当我保护工作表/工作簿“导出到CSV”macrosbutton停止工作。 为了使macros能够完成,我将这个VB代码插入到工作簿中: Private Sub Workbook_Open() Dim wSheet As Worksheet For Each wSheet In Worksheets wSheet.Protect Password:="password", _ UserInterFaceOnly:=True Next wSheet End Sub 这工作,但有意想不到的副作用,即使他们被locking,我的locking公式即可被编辑。 只有包含非公式值的单元格保持locking状态。 什么是允许macros但仍locking公式单元格的正确方法?

Excel VBA映射过滤XML到表

我有下面的代码,将XML架构映射到Excel表(如在ListObjects中)。 Sub MapXMLFieldsToExcelCells(wb As Workbook, sLOB As String) '******************************************************************* '** Name: xmlFieldMap '** Purpose: Maps fields of existing xlmMap (named "xmlData") to file '** Dependents: TieXMLToExcel (remapping of xml file) '** Notes: '******************************************************************* sProcName = "MapXMLFieldsToExcelCells" With wb Dim xMap As XmlMap Set xMap = .XmlMaps(sLOB) Dim wsXMLMain As Worksheet Set wsXMLMain = .Worksheets("xml" & […]

Excel:需要VBAmacros的Power Query插件加载

该场景是Windows Server 2012 R2,64位; Excel 2010,32位。 许多用户,其中只有一些用户具有pipe理权限。 我从内置的pipe理员安装了Power Query。 无需询问任何内容,为所有用户安装加载项; 我的意思是它的设置可能在HKLM下的registry键中find,而不是HKCU。 关键是 HKEY_LOCAL_MACHINE – > SOFTWARE – > Wow6432Node – > Microsoft – > Office – > Excel – > AddIns – > Microsoft.Mashup.Client.Excel 和相关的价值是 LoadBehavior(REG_DWORD) 现在只有less数用户确实需要Power Query。 我不希望它为每个人加载,每次启动Excel。 我为LoadBehavior值尝试了一些不同的设置(请参阅此链接)。 我发现以下内容: 如果LoadBehavior = 2,加载项不加载任何用户,没办法。 如果LoadBehavior = 3,则为所有用户加载加载项。 但是,如果为特定用户(在registry中)创build特定的密钥,则用户可以禁用Excel中的加载项。 例如,在HKEY_CURRENT_USER中,密钥的path是: 软件 – > Microsoft – > […]

我可以在Excel 2007数据透视表中创build自定义摘要字段吗?

有没有办法在XL 2​​007数据透视表中创build一个自定义的“汇总值字段”函数。 标准的总和,计数,平均值,最大值等对我来说是不够的。 我会接受VBA解决scheme,或需要XLA或XLL的解决scheme。 请注意,我不在询问计算字段或计算项目。 既不符合我的目的 – 我需要用中位数,第一四分位数等函数来总结基础数据。