ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: lfspecter

[求助] PDF export from Excel

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-10-15 13:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:工作表和工作簿
是这样的么?

原文件中的代码好像在Win7中没有什么反应,所以全部修改了。

PDF Export from Excel 2.0.rar

1.37 MB, 下载次数: 43

测试文件

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-10-15 14:03 | 显示全部楼层
joforn 发表于 2015-10-15 13:50
是这样的么?

原文件中的代码好像在Win7中没有什么反应,所以全部修改了。

请教joforn版主,由于水平太有限了,很多东西都看不懂,但最想知道的是,那个pdf文件的内容是怎么生成的,比较好奇点,谢谢。

TA的精华主题

TA的得分主题

发表于 2015-10-15 14:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
范德萨 发表于 2015-10-15 14:03
请教joforn版主,由于水平太有限了,很多东西都看不懂,但最想知道的是,那个pdf文件的内容是怎么生成的 ...

直接从xls文件中读取出来的。

TA的精华主题

TA的得分主题

发表于 2015-10-15 14:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
joforn 发表于 2015-10-15 14:04
直接从xls文件中读取出来的。

谢谢指点,明白了。就是表中的那个pdf(像是图片一样的那个)文件。
joforn版主,那个文件有点神奇,我先解剖去。作品看来需要时间去消化了,谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-15 14:43 | 显示全部楼层
joforn 发表于 2015-10-15 13:50
是这样的么?

原文件中的代码好像在Win7中没有什么反应,所以全部修改了。

多谢版主,第一次测试成功,之后就没有反应了,而且我有三个PDF文档,只是导出了一个。

TA的精华主题

TA的得分主题

发表于 2015-10-15 19:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lfspecter 发表于 2015-10-15 14:43
多谢版主,第一次测试成功,之后就没有反应了,而且我有三个PDF文档,只是导出了一个。

如果方便的话,把你的文件发到版主群,我用的你文件调试下。看下问题在哪。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-16 10:19 | 显示全部楼层
joforn 发表于 2015-10-15 19:22
如果方便的话,把你的文件发到版主群,我用的你文件调试下。看下问题在哪。

谢谢,不好意思,这个因为资料保密,不方便上传。

TA的精华主题

TA的得分主题

发表于 2015-10-16 10:33 | 显示全部楼层
liucqa好好笑,发个知识数,在发表一句每年都有人找这个问题。
解决又解决不了。
我估计你连版主发的帖子要求是什么都不知道。

TA的精华主题

TA的得分主题

发表于 2015-10-16 11:44 | 显示全部楼层
lfspecter 发表于 2015-10-16 10:19
谢谢,不好意思,这个因为资料保密,不方便上传。

你把这个代码覆盖掉ClsLaolaFile类中的同名过程,然后再运行测试。原来代码多了几层判断,可能你的有些文件不通过,被过滤掉了。还有就是,提取前要保证文件已经存过盘,如果插入对象后没有存盘的话,只能提取存盘前的文件:

  1. Public Sub SaveAllOLEFile(ByVal strPath As String, Optional ByVal strFileName As String, Optional ByVal Extension As String, _
  2.                            Optional ByVal StartNumber As Long = 1, _
  3.                            Optional ByRef CheckFileHand As Variant = Null)
  4.   Dim blnCheck      As Boolean
  5.   Dim Length        As Long
  6.   Dim bytFile()     As Byte
  7.   Dim bytCheck()    As Byte
  8.   Dim lenCheck      As Long
  9.   Dim I As Long, J  As Long, K As Long, L As Long
  10.   Dim FileName      As String
  11.   
  12.   On Error Resume Next
  13.   blnCheck = Not IsNull(CheckFileHand)
  14.   blnCheck = blnCheck And Not (IsEmpty(CheckFileHand))
  15.   
  16.   
  17.   strPath = PathAddBackslash(strPath)
  18.   If StartNumber < 0 Then StartNumber = 1
  19.   If Not MKDirctory(strPath) Then
  20.     MsgBox "创建目录失败!请确认你的目录名是否设置错误!", vbCritical
  21.     Exit Sub
  22.   End If
  23.   
  24.   If blnCheck Then
  25.     Select Case VarType(CheckFileHand)
  26.       Case vbString:  bytCheck = CheckFileHand: lenCheck = UBound(bytCheck) - LBound(bytCheck) + 1
  27.       Case vbArray Or vbByte
  28.         J = LBound(CheckFileHand)
  29.         I = UBound(CheckFileHand)
  30.         lenCheck = I - J + 1
  31.         ReDim bytCheck(0 To I - J)
  32.         For I = 0 To UBound(bytCheck)
  33.           bytCheck(I) = CheckFileHand(I + J)
  34.         Next I
  35.       Case vbInteger
  36.         lenCheck = 2
  37.         ReDim bytCheck(0 To 1)
  38.         bytCheck(0) = CInt(CheckFileHand) And &HFF&
  39.         bytCheck(1) = CInt(CheckFileHand) \ &H100&
  40.       Case vbLong
  41.         lenCheck = 4
  42.         ReDim bytCheck(0 To lenCheck - 1)
  43.         I = CheckFileHand
  44.         CopyMemory bytCheck(0), I, lenCheck
  45.       Case Else: blnCheck = False
  46.     End Select
  47.   End If
  48.   
  49.   For I = 0 To UBound(Directory)
  50.     With Directory(I)
  51.       If (.Length > 0) And (.DirType = UserStream) Then
  52.         K = 0
  53.         If lenCheck > 0 Then
  54.           If ReadStream(I, bytFile, lenCheck) Then
  55.             For L = 0 To lenCheck - 1
  56.               K = K Or (bytFile(L) Xor bytCheck(L))
  57.             Next L
  58.           End If
  59.         End If
  60.         
  61.         If K = 0 Then
  62.           If ReadStream(I, bytFile, .Length) Then
  63.             Do
  64.               FileName = PathRenameExtension(strPath & strFileName & StartNumber, Extension)
  65.               StartNumber = StartNumber + 1
  66.             Loop While FileExists(FileName)
  67.             K = FreeFile
  68.             Open FileName For Binary As K
  69.             Put K, , bytFile()
  70.             Close K
  71.           End If
  72.         End If
  73.       End If
  74.     End With
  75.   Next I
  76. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-10-17 00:34 | 显示全部楼层
lfspecter 发表于 2015-10-16 10:19
谢谢,不好意思,这个因为资料保密,不方便上传。

新上传的文件已经使用你的文件测试OK

PDF Export from Excel 2.0.rar

42.11 KB, 下载次数: 42

已经测试OK

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-7 01:19 , Processed in 0.035609 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表