Tag: macros

dynamic更改SAS ODS中的工作表名称

有没有办法使用macrosdynamic更改SAS ODS中的图表名称? 在macros里面,我有下面的代码: %DO N = 1 %TO &SQLOBS; ODS TAGSETS.ExcelXP OPTIONS(SHEET_NAME = &&TABLEVAR&N EMBEDDED_TITLES = 'NO' EMBEDDED_FOOTNOTES = 'NO' PRINT_HEADER = 'CURRENT &&TABLEVAR&N AS OF &D'; PROC PRINT DATA = WORK.&&TABLEVAR&N NOOBS; RUN; %END; 基本上循环遍历一个表格数组,每个表格输出一个单独的Excel工作表。 通过调用一个macrosvariables&TABLEVAR,它应该dynamic地改变每个表的表名。 但是,我得到以下错误: 错误22-322:期待一个引用的string。 所以SAS确实parsing了macrosvariables,我可以看到表名在日志中是正确的,但是问题是它们不是引用的string。 所以我尝试了这样的引号: 选项(SHEET_NAME ='&& TABLEVAR&N' 但是,macrosvariables没有被SAS解决,所有的表都被命名为&& TABLEVAR&1,2等。 有没有解决的办法? (而且每张表是不同名称的单独表,所以我不能使用BY组。)如果不能与ODS交互,那么macros有什么好处呢?

xlDown不select空白单元格

我有一个问题,特定的列在其中间空白某些行。 这是领先的代码: Range(FieldName.Offset(1),FieldName.End(xlDown))。Select 为了不select所有的单元格,因为它在空白单元处停止,并在空白处填充单元格的XYZ。 我知道,xlup将解决这个问题,但是,如果该字段的最后一个单元格是空白的,那么它将不会更改该单元格,并转到下一个填充的单元格。 我不知道如何修改我的代码,以便它利用xlup,并避免如果列中的底部单元格为空。 我有一个名为“ABC”的列将始终填充所有的行,我可以ping通,以便作为筛选的数据的最后一行调出它,但我不知道如何做到这一点。 我的代码 Sub SelectDown() Dim FieldName As Range Dim rng As Range, res As Variant, lrow As Long Set rng = ActiveSheet.AutoFilter.Range.Rows(1) res = Application.Match("Errors", rng, 0) 'Finds the Specific Error' rng.AutoFilter Field:=res, Criteria1:="*-SHOULD BE XYZ*" 'Only Shows rows that have something that matches the filter criteria lrow = […]

使用偏移量转到下一个可见单元格

我有一个Excel中的自动过滤表。 我必须根据特定的条件复制粘贴值,我必须在特定列中的所有可见单元格上执行此操作。 我已经写了代码,它运作良好,但唯一的事情是,它需要很多时间,因为有很多行。 任何人都可以请帮助我如何捶打所需的时间? 这是代码。 谢谢! Sub TrialAnotherOne() Windows("Epson Itemcodes.xlsm").Activate Range("A" & i).Select Selection.Copy Windows("Epson ASINs.xlsx").Activate Range("U1048576").End(xlUp).Offset(0, -12).Select If ActiveCell.Value <> "Itemcode" Then If ActiveCell.Value = "" Then ActiveSheet.Paste Else If ActiveCell.Value = Workbooks("Epson Itemcodes.xlsm").Sheets("Sheet1").Range("A" & i).Value Then ActiveSheet.Paste Else ActiveCell.Value = "Conflct" End If End If Else Windows("Epson Itemcodes.xlsm").Activate Range("I" & i).Value = "No […]

如果单元格包含值,则用显示消息框的macros

我想做一个macros。 我的testing单元在另一张纸上。 工作表 – (数据)macros如果单元格中包含值12,则检查一个范围("D2:D10") ,如果是,则显示一个消息框"Go to add to system"并且此单元格中的macrosfind的值将设置为0。 我有这个代码,但它不适用于我我不知道为什么。 你可以帮我吗? Private Sub check(ByVal Target As Range) For Each c In Worksheet("data").Range("D2:D10") If Range("D2:D10") = 12 Then MsgBox "Go to add to system" Range ("D2:D10").value = 0 End If Next c End Sub

Excel VBA将特定列导出到CSV

我对VBA编程相当陌生,但仍设法创build一个将Excel工作表导出为CSV文件的小代码。 这一定是尽可能的用户友好,所以我想出了这个: Sub export_first() Application.DisplayAlerts = False Dim wb As Workbook, InitFileName As String, fileSaveName As String InitFileName = ThisWorkbook.Path & "\Export nr1_" & Format(Date, "yyyymmdd") Sheets("MySheetNameToExport").Copy Set wb = ActiveWorkbook fileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitFileName, _ fileFilter:="Semicolon separated CSV (*.csv), *.csv") With wb If fileSaveName <> "False" Then .SaveAs fileSaveName, FileFormat:=xlCSV, Local:=True .Close Else .Close False […]

Excel VBA – 将多个工作簿合并到一张表中

我正在尝试将多个Excel工作簿合并到一个工作表中。 我find了其他网站的代码,并设法select文件夹,并将文件夹中的所有excel文件合并到当前活动工作簿中。 目标工作簿由2个PID和服务表组成。 以下是代码: Option Explicit Public strPath As String Public Type SELECTINFO hOwner As Long pidlRoot As Long pszDisplayName As String lpszTitle As String ulFlags As Long lpfn As Long lParam As Long iImage As Long End Type Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As […]

为什么我的自动填充公式被修改了?

我已经使用以下解决scheme自动从macros中填充公式。 在这里input链接描述 代码调用以下行: Sub FillData() Dim rng1 As Range Set rng1 = Range([a1], [a1].End(xlDown)) If Not (rng1.Rows.Count = Rows.Count And Len([a1].Value) = 0) Then rng1.Offset(0, 3).FormulaR1C1 = "=RC2" End Sub 使用这个例子,我创build了以下代码片段: If Not (rng1.Rows.Count = Rows.Count And Len([a1].Value) = 0) Then rng1.Offset(1, 4).FormulaR1C1 = "=VLOOKUP(RC1,'My Excel Tab name'!A:D,4,FALSE)" 然而,最后在单元格中的公式在A:D中的D中有括号,并且看起来像这样: =VLOOKUP($A3,'SubstationsPJM-New'!A:(D),4,FALSE) 我在这里做错了什么? 谢谢

激活macros查看button在非响应模式下发送excel

在Excel 2013中:macros直到今天工作正常。 现在,我可以打开“Personal.xlsb”文件,但是我不能再使用macros视图button,我只能得到Excel无法使用的模式。 然后,唯一的办法是完全停止Excel。 当我进入devise模式时,我根本无法访问macrosregistry(试图这样做导致相同的未响应状态)。 我完全重新启动电脑,没有帮助。 铅似乎特定于一个特定的“Personal.xlsb”文件(我用XSTART文件夹中的另一个“个人”文件replace了犯人的文件,而Excelmacros使用不同的.xlsb文件工作得很好)。 所以我怀疑文件腐败pb。 如果是这样,是否有可能恢复原来的macros,或者至less破解macros文件打开并获得原始编码的副本?

杀死Outlook邮件正文中的空格

这个代码的function是复制特定范围的单元格,每个单元格(像1ML-234-1R这样的代码),并将其放在Outlook邮件主体(取自Ron de Bruin Excel自动化代码)中。 我想杀死每个单元格之前和之后出现在主体中的空格,并用逗号(,)分隔每个单元格的值。 使用修剪命令,但没有运气。 Sub Mail_Selection_Range_Outlook_Body() Dim rng As Range Dim OutApp As Object Dim OutMail As Object Set rng = Nothing On Error Resume Next 'Only the visible cells in the selection 'Set rng = Selection.SpecialCells(xlCellTypeVisible) 'You can also use a fixed range if you want Set rng = Sheets("Sheet1").Range("D1:D12").SpecialCells(xlCellTypeVisible) On Error […]

VBA代码来根据单元格中用户定义的variables来select列

我正在尝试在VBA的excel中为我的macros编写代码,但是我一直卡在用户定义的variables部分。 我目前有一个电子表格,其中包含四组对应于一个date的测量数据。 我试图达到的是: – 开始date有一个单元格,用户指定结束date的另一个单元格; 我想要macros读取这两个单元格,并使用这两个date,读取它们之间的数据,并创build一个与我有4个数据系列这些date对应的线图。 最终目标是能够在用户希望的两个date之间创build一个图表。 我已经想出了macros来绘制线图,如果我指定整个列(即我已经把B3:F170作为数据范围),但我不知道如何将用户定义的范围集成在代码中。 任何帮助将不胜感激。 提前谢谢了。 编辑:这是我到目前为止,对不起,如果它相当凌乱,我刚刚开始! Dim chtChart As Chart Set chtChart = Charts.Add With chtChart .Name = "Chart Name" .ChartType = xlLine .SetSourceData Source:=Sheets("Sheet1").Range("B3:F170"),_ PlotBy:=xlColumns End With Dim FromDateCell As String Dim ToDateCell As String Dim DateRange As Range FromDateCell = Range("I13").Value ToDateCell = Range("I14").Value DateRange = Range(FromDateCell, ToDateCell) […]