excel - VBA:使用字符串创建 PDF 文件
问题描述
我在用不同的未预定义张数创建 .pdf 文件时遇到问题。
逻辑: 按 Button1 - 创建一个新工作表(员工 x),例如,您为员工创建 3 个不同的工作表。
所以,我只想从这 3 张纸中创建一个 .pdf 文件。
For-Loop 给了我这个字符串:“Worker1”、“Worker2”、“Worker3”
如果我将此字符串(mystring)放入:
Sheets(Array(**mystring**)).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FolderPath & "\Sales", _
openafterpublish:=False, ignoreprintareas:=False
我得到错误: 运行时错误'9':下标超出范围。
否则,如果我手动插入字符串,它会起作用。但是,您有多少员工以及他们的名字是没有预定义的。
Sheets(Array("Worker1", "Worker2", "Worker3", ... ,"Workerx")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FolderPath & "\Sales", _
openafterpublish:=False, ignoreprintareas:=False
有人知道如何解决这个问题吗?
解决方案
如果您将字符串创建为“Worker1,Worker2,Worker3”,您可以使用它Split(myString, ",")
来创建数组。
像这样的东西:
Option Explicit
Private Sub CommandButton1_Click()
Dim stringname As String, wb As Workbook, ws As Worksheet, i As Long, sep As String
Set wb = ThisWorkbook 'or ActiveWorkbook
Set ws = wb.Worksheets("MitarbeiterListe")
For i = 6 To 106
If ws.Range("B" & i) <> "" Then
stringname = stringname & sep & ws.Range("B" & i) & " " & ws.Range("C" & i)
sep = "," 'populate separator after first item
End If
Next i
MsgBox stringname
ThisWorkbook.Sheets(Split(stringname, ",")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FolderPath & "\Sales", _
openafterpublish:=False, ignoreprintareas:=False
MsgBox "All PDF's have been successfully exported."
End Sub
推荐阅读
- excel - 使用 OLEDB 连接将 Access 数据库连接到 Excel
- linux - ceph-rgw 安装后服务自动停止
- android - Android Studio 模拟器的 Android 8、9 和 10 ARM 映像在哪里?
- .net-core - 有没有办法在 .NET Core 库中包含 .NET Framework 代码?
- docker - 将 kafDrop 连接到安全代理
- postman - 收集运行中的邮递员收集变量
- c++ - 无法使用 Arduino 和 SIM900 连接或发布到 MQTT 代理
- c# - 堆栈溢出响应 API
- arrays - 使用 ID 从另一个工作表导入数据,但只导入一些列
- python - 如何更快地遍历十个列表(每个十个元素)的笛卡尔积?(概率和骰子)