Tag: excel vba

将网页保存为PDF到某个目录

我有它在哪里将打开Internet Explorer给用户另存为框,然后退出。 但是,我宁愿如果不是用户必须导航到正确的文件夹,该目录来自工作表中的单元格,并将网页保存为PDF。 我安装了完整的Adobe。 代码: Sub WebSMacro() Dim IE As Object Dim Webloc As String Dim FullWeb As String Webloc = ActiveSheet.Range("B39").Value FullWeb = "http://www.example.com=" & Webloc Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.Navigate FullWeb Do While IE.Busy Application.Wait DateAdd("s", 1, Now) Loop IE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER Application.Wait DateAdd("s", 10, Now) IE.Quit Set IE = […]

将数据复制到另一个工作表

我无法理解下面的函数在做什么。 该function本身具有将数据复制到工作Sheet History 。 但是,我不明白这是怎么回事? Sub histFunc() Dim Y As String Y = "R" & Range("G7").Value Sheets("Sheet History").Select Range("h17").Select Cells.Find(What:=Y, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate Range(Selection, Selection.End(xlToRight)).Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Sheets("Sheet Current").Select End Sub 任何build议这个macros如何运作? 我很感激你的回复!

如何将VBAmacros绑定到特定的单元格?

我正在处理一个Excel表格,在这个表格中,我将数据组织成行,并且需要一种方法来运行VBAmacros,它将根据特定行中的数据执行程序。 我正在努力实现的是find一种机制,让用户只需点击button就可以完成这个任务。 另外,用户应该能够复制现有的行(和macros触发器),并执行与新行相关的macros,而不必进行任何代码修改。 我到目前为止所尝试的是excelbutton,但它无法绑定到某个单元格。 每次添加新行时,也必须手动分配macros。 我也试着“Worksheet_SelectionChange”事件过滤到包含链接文本的某个列。 这样可以正常工作,但有些用户使用箭头键在表单内导航,如果macros单元格被选中,则会意外触发macros。 另外,鼠标光标在hover时不会变成指向手指。 最后一次尝试是尝试=HYPERLINK("#'Sheet1'!E3";"Run macro")function,并将其与“Worksheet_FollowHyperlink”一起使用。 但是,在这种情况下,如果超链接指向当前表单,则不会触发事件。 那么有没有什么新的想法,或者可以改进其中的一些来克服我所描述的问题?

将名称字段添加到基于列的combobox而不重复?

我在这里find这个链接: 基于列A中的值创build表的VBA代码 它告诉我如何基于第一张纸上的一列中的名称而不重复地创build列中的纸张列表。 我试图把这个代码翻译成可用于ComboBox,但我的VBA技能绝对是平淡无奇。 我到目前为止是 Private Sub form_load() Dim lastRow As Integer Dim cellName As Integer Dim match As Boolean lastRow = Sheets(1).Range("F2").End(xlDown).Row For i = 2 To lastRow match = False cellName = .Sheets(1).Range("F" & i).Value For _________________ ComboBox1.AddItem i End Sub 你会注意到在我链接的例子中,他们使用了代码 For Each ws In ActiveWorkbook.Worksheets If ws.Name = sheetName Then match […]

对象variables或块variables未设置(错误91)错误

我有以下工作更早的代码,但现在显示一个错误: Sub AttachLabelsToPoints() 'Dimension variables. Dim Counter As Integer Dim ChartName As String Dim xVals As String ' Disable screen updating while the subroutine is run. Application.ScreenUpdating = False 'Store the formula for the first series in "xVals". xVals = ActiveChart.SeriesCollection(1).Formula 'Extract the range for the data from xVals. xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, […]

用于从单元格中获取文件名的macros,并提示保存文件的位置

我正在寻找一个macros,它将在运行时从单元格中获取值并使用该名称进行保存,并提示保存文件的path。 以下是我的尝试: Sub SelectFolder() Dim diaFolder As FileDialog Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker) diaFolder.AllowMultiSelect = False diaFolder.Show ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:= _ diaFolder & ActiveSheet.[d2] & ".xlsx", FileFormat:= _ xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False Set diaFolder = Nothing End Sub 在这个值取自单元格,并有一个提示要求文件夹保存文件。 但该文件不存储在文件夹中,并存储在一个单独的文件夹中。 我想这里需要做一些小的修改。 同时保存,这是给我一个警告,可能有兼容性问题97-2003文件types。 我想这一行中有些东西需要纠正: diaFolder & ActiveSheet.[d2] & ".xlsx", FileFormat:= _ xlExcel8, Password:="", WriteResPassword:="", […]

Dim myConn As ADODB.Connection

我正在尝试几件事情,其中​​之一是将excel工作簿连接到AS400,以便在我们的系统中获得对部件号的描述,但试图保持连接处于打开状态,或者至less在工作簿closures之前。 有没有人有什么build议? Public Sub GetPartNumbers() Dim myConn As ADODB.Connection Dim myRS As ADODB.Recordset '' Dim selVal As String '' Dim selRow As Integer Set myConn = New ADODB.Connection myConn.ConnectionString = "Provider=SEQUEL ViewPoint;" myConn.Open Set myRS = New ADODB.Recordset

根据x轴格式化数据透视图数据标签

我试图find一种方法(如果可能)将数据标签的文本颜色更改为红色,如果X轴恰好是某个标签。 我遇到的问题是我的图表是dynamic的(每天通过PowerPivot进行刷新,并有date和其他切片器来更改图表中显示的数据),所以即使将数据标签颜色设为红色,刷新图表时,它恢复到原来的黑色字体。 例如,在下面的图片中,我有一个图表跟踪他们已经打开的天数; 目标是在45天内解决所有票据; 因此,当图表显示“45+”部分中的任何数据时,我希望该数据标签的字体为红色。 我的图表示例: 在我的研究中,我能够find并修改一些使所有数据标签变成红色的代码,但是我使用VBA来处理图表是非常新的,并且希望得到一些帮助。 我到目前为止的代码是: Sub ChrtTest() Dim i As Long Sheets("Dashboard").Select ActiveSheet.ChartObjects("DB_Chrt_1").Activate ActiveChart.PlotArea.Select With ActiveChart For i = 1 To .SeriesCollection.Count With .SeriesCollection(i).Format.Fill Select Case .Parent.Parent.Name Case "45+" .Visible = msoTrue With .Parent.Parent .ApplyDataLabels With .DataLabels .Position = xlLabelPositionOutsideEnd .Font.Color = vbYellow End With End With Case Else .Visible = msoTrue […]

运行时错误7:内存不足,加速代码

我一直在解决这个问题已经有一段时间了,在这里的人们的帮助下,我设法提出了两个解决scheme。 第一个解决scheme工作,但我不能得到msgbox显示正确的信息。 下面的版本第一次工作, msgbox在msgbox中显示正确的数据,但如果我再次尝试运行代码,它会崩溃excel,并给我一个运行时错误7:内存不足。 它打破了: wsNew.Name = strWS ,它看起来总是试图创build工作表,即使他们已经存在。 我认为这可能与On Error Resume Next, If Len(Worksheets(strWS).Name) = 0 Then 。 无论如何可以加快这个代码吗? 目前它正在通过全球表格中的42行进行查看,但可能会出现数百条的情况,而此时它正在以合理的速度运行,只要我在全局表格中引入更多行,慢一点。 Private Sub CommandButton2_Click() Dim j As Long, strWS As String, rngCPY As Range, FirstAddress As String, sSheetsWithData As String Dim sSheetsWithoutData As String, lSheetRowsCopied As Long, lAllRowsCopied As Long, bFound As Boolean, sOutput As […]

匹配两张纸上的数据,如果颜色不同,则显示黄色

我正在试图检查两张表上的数据。 逻辑: 如果Sheet2上的ABC ABC数据与Sheet1上任何行上同一列上的数据相匹配,然后检查两张纸上的col E和col F,并在Sheet2上有不同的数据时将其着色为黄色 码: Option Explicit Sub CheckData() Dim wb, wn As Worksheet Dim i, j, m Dim strA, strB, strC, strE, strF, NstrA, NstrB, NstrC, NstrE, NstrF As String Dim FinalRowB, FinalRowN, count Set wb = Sheets(1) Set wn = Sheets(2) FinalRowB = wb.Range("A900000").End(xlUp).Row FinalRowN = wn.Range("A900000").End(xlUp).Row For i = 2 […]