小编tjb*_*jb1的帖子

运行大量VBA后打印预览问题

我有一个Excel工作簿,几乎所有内容都是自动化的.它打开其他工作簿,从中复制数据,关闭它们,然后多次循环数据以生成我们打印和使用的报告.几乎每次运行所有VBA然后尝试打印之后,打印预览都会卡住,无论是找到打印机还是加载页面大小,如图所示.关闭Excel并重新打开文档可将打印预览恢复为正常功能.VBA唯一与打印相关的是改变打印区域.我没有遇到任何其他运行VBA的文档的问题.这只是一个错误或代码中的某些内容吗?

问题

这是导致打印预览无法以某种方式加载的代码.如果我跳过这一部分然后按预期工作...我希望以某种方式使用此代码功能,因为它仍然需要.

    Set wb1 = Workbooks.Open(FileName)
    Set wb2 = ThisWorkbook

    For i = LBound(sArray) To UBound(sArray) 'Loops through array, copies available data from last report
        ShtName = sArray(i, 0)
        On Error Resume Next
            wb1.Sheets(ShtName).Activate
            If Err.Number = 0 Then
                wb1.Sheets(ShtName).Activate
                Columns("A:U").Copy
                wb2.Sheets(ShtName).Activate
                Columns("BE:BV").Select
                Selection.PasteSpecial xlPasteValues
                Application.CutCopyMode = False
                lastrow = Cells(Rows.Count, "BE").End(xlUp).Row
                Range("BA2:BC2").Select
                Selection.AutoFill Destination:=Range(Cells(2, "BA"), Cells(lastrow, "BC")), Type:=xlFillDefault
            End If
        On Error GoTo 0

        DoEvents

    Next i

    wb1.Close False

    Sheet2.Activate
Run Code Online (Sandbox Code Playgroud)

我已经尝试评论"On Error Resume Next","On Error Goto 0","If ...","End If"和"DoEvents".打印预览仍然无法删除,只是从上一页进行复制和粘贴.

excel vba excel-vba

7
推荐指数
1
解决办法
1676
查看次数

从字符串中提取特定长度数字并使用这些数字创建新字符串

我有一个文本字段,我需要从中提取某些数字.该数字始终为7位数字,但字符串中的位置未知,字符串中的位数也未知.

样品串是"SF WO 1564892 DUE 5/19 FIN WO 1638964 DUE 5/27".我希望能够提取1564892和1638964,并生成一个新的字符串,如"1564892; 1638964",如果字符串中有更多,则继续添加"; number".我使用新字符串来查找并返回这些数字中最大的一个.

我找到了这个并且它有点工作,但它也会从字符串"123456789"返回"1234567",这是不受欢迎的.

Public Function ExtractDigits(Alphanumeric As String, DigitLength As Long)
Dim StringLenght As Long
Dim CurrentCharacter As String
Dim NewString As String
Dim NumberCounter As Long
Dim TempString As String


StringLenght = Len(Alphanumeric)
For r = 1 To StringLenght
    CurrentCharacter = Mid(Alphanumeric, r, 1)
    If IsNumeric(CurrentCharacter) Then
        NumberCounter = NumberCounter + 1
        TempString = TempString & CurrentCharacter
        If NumberCounter = DigitLength Then
            If NewString = "" Then
                NewString …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

4
推荐指数
1
解决办法
1198
查看次数

正则表达式仅返回七位数字匹配

我一直在尝试构建一个正则表达式来从字符串中提取 7 位数字,但很难获得正确的模式。

示例字符串 -WO1519641 WO1528113TB WO1530212 TB

返回示例 -1519641, 1528113, 1530212

我在 Excel 中使用的代码是...

Private Sub Extract7Digits()
    Dim regEx As New RegExp
    Dim strPattern As String
    Dim strInput As String
    Dim strReplace As String
    Dim Myrange As Range

    Set Myrange = ActiveSheet.Range("A1:A300")

    For Each c In Myrange
        strPattern = "\D(\d{7})\D"
        'strPattern = "(?:\D)(\d{7})(?:\D)"
        'strPattern = "(\d{7}(\D\d{7}\D))"

        strInput = c.Value

        With regEx
            .Global = True
            .MultiLine = True
            .IgnoreCase = False
            .Pattern = strPattern
        End With

        If regEx.test(strInput) …
Run Code Online (Sandbox Code Playgroud)

regex excel vba

1
推荐指数
1
解决办法
2150
查看次数

另存为期间要求替换文件时,选择“否”或“取消”时出现 VBA 错误

我有代码用于将工作簿保存在具有特定名称的特定文件夹中。当文件已经存在时就会出现问题。我将“ConflictResolution”设置为询问用户,但当用户在对话框中 选择No或时,我收到“运行时错误 1004:对象 _Workbook 的方法 SaveAs 失败” 。Cancel

我不确定如何或是否可以退出NoCancel或者我是否应该将自定义错误处理添加到此部分?

  NewFileType = "Excel Macro-Enabled Workbook (*.xlsm), *.xlsm," & _
               "All files (*.*), *.*"

    NewFile = Application.GetSaveAsFilename( _
        InitialFileName:=SaveArea & newfilename, _
        fileFilter:=NewFileType)

    If NewFile <> "" And NewFile <> "False" Then
        ActiveWorkbook.SaveAs FileName:=NewFile, _
            FileFormat:=xlOpenXMLWorkbookMacroEnabled, _
            CreateBackup:=False, _
            ConflictResolution:=xlUserResolution
    End If
Run Code Online (Sandbox Code Playgroud)

excel vba

1
推荐指数
1
解决办法
2757
查看次数

标签 统计

excel ×4

vba ×4

excel-vba ×2

regex ×1