excel - 填充每个单元格时,从 xls 文件自动生成 PDF

我从 VBA 代码开始,我想从 xls 文件生成一个 PDF。这个 xls 文件是一周的日程安排,每天填充 0 或 1,如下所示:

D1 D2 D3 D4 SUM EXPECTED VALIDATE
1 0 1 1 4 4 OK

然后,我计算总和并与预期总和进行比较。如果它相等,那么列验证是好的,否则它是 KO。

最后,我想从这个文件生成一个 PDF,当用户填写每一天(D1,..,D4)然后计算验证列并在 PDF 中导出文件,如果它是“OK”

我暂时试试这个:

Sub generate_PDF_()
    '
    ' generate_PDF_ Macro
    '
    
    Dim saveLocation As String
    saveLocation = "path/to/savefolder"
    
    Range("AG2").Select
    ActiveCell.FormulaR1C1 = "=SUM((RC[-31]:RC[-1]))"
    Range("AI2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-2]=RC[-1],""OK"",""KO"")"
    
    If Range("AI2").Select = 'OK' Then
        .ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=saveLocation & "/attendance_sheet" & .ActiveSheet.Name & ".pdf"
        
End If
    
    End Sub

在此先感谢您的帮助

回答1

If Range("AI2").Select = 'OK' Then - 这不会像您想的那样工作,请使用“OK”而不是“OK”

使用 Worksheet_Change 事件来控制 value。 (您只能在工作表模块中使用它)

Private Sub Worksheet_Change(ByVal Target As Range)
         If Not (Intersect(Target, Range("AI2")) Is Nothing) Then
             If Target.Value2="OK" Then 
                  ... ' add your code
             End if
         End if
    End Sub

.Activesheet 没有“With Application ... end with”构造会给你一个错误。使用 Application.ActiveSheet

没有理由使用 Range.Select 方法。代替:

Range("AG2").Select
    ActiveCell.FormulaR1C1 = "=SUM((RC[-31]:RC[-1]))"

利用:

Range("AG2").FormulaR1C1 = "=SUM((RC[-31]:RC[-1]))"

相似文章

最新文章