我要将一系列单元格从现有工作簿复制到临时工作簿,并希望保留源工作簿的确切格式。 我正在使用Ron de Bruin的RangetoHTML函数的修改版本。
目的是将范围从源工作簿复制到邮件正文。
但是,当我运行宏时,它仅将值中的范围粘贴到邮件中。所有其他粘贴类型的PasteSpecial要么失败,要么给出相同的结果。
我尝试过PasteSpecial方法的每种粘贴类型都没有运气。
如果我尝试为PasteSpecial函数指定更多参数,则会引发1004错误(不过,我不需要使用默认值以外的任何东西)。
源工作簿已经合并了单元格,但是我尝试删除了合并的单元格,但这并没有改变输出。
此代码被多次调用,因为我要插入其他工作簿中的范围。结果始终是正确的范围,但没有格式。
它是从Access运行的,因为我正在尝试从表单运行此脚本。它在公共模块中,并在另一个模块中创建邮件正文时被调用。 这是删除注释时引发错误的部分摘录:
client.cmd("wget http://%s:8000/DCN.py &" % server.IP())
我希望范围显示在邮件正文中,与源工作簿相同。
尽管我进行了所有尝试,但我似乎找不到任何可以阻止复制格式的代码问题。
编辑:
如果我更改行:
import pandas as pd
df_prices = pd.read_csv('data/prices.csv', delimiter = ',')
# sample data from prices.csv
# date,symbol,open,close,low,high,volume
# 2010-01-04,PCLN,222.320007,223.960007,221.580002,225.300003,863200.0
# 2010-01-04,PDCO,29.459999,28.809999,28.65,29.459999,1519900.0
# 2010-01-04,PEG,33.139999,33.630001,32.889999,33.639999,5130400.0
# 2010-01-04,PEP,61.189999,61.240002,60.639999,61.52,6585900.0
# 2010-01-04,PFE,18.27,18.93,18.24,18.940001,52086000.0
# 2010-01-04,PFG,24.110001,25.0,24.1,25.030001,3470900.0
# 2010-01-04,PG,61.110001,61.119999,60.630001,61.310001,9190800.0
df_latest_prices = df_prices.groupby('symbol').last()
df_latest_prices.iloc[115]
# date 2014-02-07
# open 54.26
# close 55.28
# low 53.63
# high 55.45
# volume 3.8587e+06
# Name: CTXS, dtype: object
df_latest_prices.iloc[115].volume
# 3858700.0
df_latest_prices.iloc[115].Name
# ---------------------------------------------------------------------------
# AttributeError Traceback (most recent call last)
# <ipython-input-8-6385f0b6e014> in <module>
# ----> 1 df_latest_prices.iloc[115].Name
至:
Public Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
Dim xlApp As Excel.Application
Dim TempWB As Excel.workbook
Set TempWB = xlApp.Workbooks.Add(1)
rng.Copy 'This is passed as an argument of the RangetoHTML function
TempWB.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues ', Operation:=-4142, SkipBlanks:=True, Transpose:=False
TempWB.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteFormats ', Operation:=-4142, SkipBlanks:=True, Transpose:=False
TempWB.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteColumnWidths ', Operation:=-4142, SkipBlanks:=True, Transpose:=False
'The rest is similar to the original version of RangetoHTML
'Close TempWB
TempWB.Close savechanges:=False
xlApp.Quit
Set TempWB = Nothing
Set xlApp = Nothing
End Function
然后输出格式正确,但是有一个Excel实例在子结束后仍在任务管理器中保持打开状态。