小编Mar*_*ret的帖子

通过 VBA 将 MS Excel 2003 工作簿导出为 PDF

我有一个 Excel 2003 工作簿,其中包含一个宏,用于将某些工作表复制到新工作簿,然后保存并关闭新工作簿。它这样做了几十次,每次都略有不同的工作表选择。

我想向宏添加一个额外的步骤,以将辅助工作簿的电子表格导出为 PDF。显而易见的方法是使用 PDF 打印机和 Excel 的内置打印功能,但大多数 PDF 打印机在完成之前会给您一个“另存为...”对话框。显然,在七十多次单独输入此内容缺乏吸引力 - 所以我想要一些可以让我提前设置它的东西(可能是“使用我正在打印的文件的文件名减去其扩展名”)然后只需选择默认选项。

有免费的 PDF 打印机可以做到这一点吗?或者合适的替代品?

pdf excel vba pdf-generation excel-2003

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

使用ggmap和gganimate创建"天桥"地图动画

我有一个人到达某个地点的数据集,他们待了多久,以及他们的家乡位置.我想创建一个动画图表,将它们"飞"到目的地,并在旅行结束后将它们返回原点.但我不确定这是否可行gganimate.目前我似乎只能做一个"开始"和"结束"框架,虽然有点难以判断它是否没有足够的框架来执行预期的操作.

这就像我到目前为止的情况:

library(dplyr)
library(ggplot2)
library(ggmap)
library(gganimate)

#Coordinates
europecoords <- c(left = -23, bottom = 36, right = 27.87, top = 70.7)
londonareacoords <- c(left = -.7, bottom = 51, right = 0.2, top = 52)
londonpointcoords <- as.data.frame(list(lon = -.14, lat = 51.49))

#Get the map we'll use as the background
europe <- get_stamenmap(europecoords, zoom = 4, maptype = "toner-lite")

#Sample dataset configuration
numberofpoints <- 10
balance <- 0.1

#Set up an example dataset
ids <- seq(1:numberofpoints)
arrivalday …
Run Code Online (Sandbox Code Playgroud)

r ggmap gganimate

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

Excel 2003 VBA:将工作表移动到由变量引用的新工作簿

我有一个函数,用于运行ShowPages()数据透视表的命令,然后将每个工作表保存到一个单独的文件.

这是我希望我能做到的方式:

Sub Split()
    ThisWorkbook.Sheets("Data").PivotTables("Data").ShowPages PageField:="Codename"
    Dim newWb As Workbook

    For Each s In ThisWorkbook.Sheets
        If s.Name <> "Data" Then
            Set newWb = s.Move #This is the line I'm trying to work out
            newWb.SaveAs Filename:="C:\Export\" + s.Name + ".xls"
            newWb.Close
        End If
    Next s

End Sub
Run Code Online (Sandbox Code Playgroud)

不幸的是,这与未创建对象等(可以理解)的问题有关.这样做最明智的方法是什么?

excel vba excel-2003 excel-vba

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

如果value = true,则在VBA中追加1 else 0

我不确定这是否可行,但我想我会问,看看是否有人有任何明智的解决方案.

我正在创建一个VBA表单,人们将用它来组装一个SQL字符串:"勾选此框以使此参数成为真"这种东西.

实现这一目标的显而易见的方法是

If Checkbox.Value Then
    string = string + "@parameter = 1, "
Else
    string = string + "@parameter = 0, "
End If
Run Code Online (Sandbox Code Playgroud)

令人烦恼的是,这有点冗长.如果我可以做这样的事情会很好:

string = string + "@parameter = " + Checkbox.value + ", "
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否可行.可能吗?

vba

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

根据标志,通过SQL从不同的表中选择

我有一个脚本从更大的表中提取某些数据,其中一个字段特别是定期更改,例如

SELECT CASE @Flag WHEN 1 THEN t.field1 WHEN 2 THEN t.field2 WHEN 3 
       THEN t.field3 END as field,
       ...[A bunch of other fields]
FROM table t
Run Code Online (Sandbox Code Playgroud)

但是,现在问题是我想对数据进行其他处理.我想找出最有效的方法.我需要有一些方法来获取标志,所以我知道我正在谈论由正确的字段切片的数据.

我正在玩一个可能的解决方案(主要是看看会发生什么)是将脚本的内容转储到一个表函数中,该表函数已经传递给它,然后对函数的结果使用SELECT查询.我设法让它工作,但它明显慢于......

显而易见的解决方案,也许是处理器周期的最有效使用:创建一系列缓存表,一个用于三个标志值中的每一个.然而,问题是找到一些从正确的缓存表中提取数据以执行计算的方法.显而易见但不正确的反应就像是

SELECT CASE @Flag WHEN 1 THEN table1.field WHEN 2 THEN table2.field WHEN 3 
       THEN table3.field END as field,
       ...[The various calculated fields]
FROM table1, table2, table3
Run Code Online (Sandbox Code Playgroud)

不幸的是,很明显,这会产生一个巨大的交叉连接 - 这根本不是我想要的结果.

有谁知道如何将这个交叉连接变成"只看x桌"?(不使用动态SQL,这会让事情难以处理?)或者另一种解决方案,那仍然相当快速?

编辑:这是否是一个很好的理由,我试图实现的想法是没有三个基本相同的查询,只有表格不同 - 每当对逻辑进行更改时,必须进行相同的编辑.这就是为什么我到目前为止避免了"让国旗完全分开"的原因......

sql t-sql sql-server sql-server-2005

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

Oracle:程序在日期的SELECT CASE语句中没有正确分支

我目前正在开发一个项目,根据它是否是一个公共假日而行为不同(显然还有其他限制因素).为此,我正在尝试创建一个包含日期和一周中某一天的表(将"假日"视为本周的第八天').

我有一个表,我正在寻找假名列表,名称holiday,只有一个字段,holidaydate(DATE数据类型).我正在尝试将值放入的表daydates以两个字段day(DATE数据类型)和dayofweek(CHAR(10)数据类型)命名.

这是我现在拥有的逻辑,而我正在测试.

 INSERT INTO holiday
  (holidaydate)
 SELECT sysdate FROM dual;

 SELECT sysdate,
   (
   CASE
     WHEN sysdate IN
       (SELECT h.holidaydate FROM holiday h)
     THEN 'holiday'  
     ELSE TO_CHAR(sysdate , 'day')
   END)
 FROM dual;
Run Code Online (Sandbox Code Playgroud)

不幸的是,它目前正在回归,比如"周三",而不是"假期".我有一种感觉,我需要改变WHEN sysdate IN一个WHEN to_char (sysdate, 'dd-mon-yyyy') IN或类似的东西,但我尝试了一些变化,他们似乎没有工作到目前为止.

有什么建议?

oracle

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

使用SELECT查询加速UPDATE

我有两张桌子:

  • 表1有Episode和Code,Episode为distinct.
  • 表2有Episode和Code,但Episode并不明显(表中的其他字段,与任务无关,使每一行都是唯一的).

我希望将每个剧集的表1的代码复制到表2.目前执行此操作的代码如下:

UPDATE Table2
SET Table2.Code = (SELECT TOP 1 Code FROM Table1 WHERE Episode = Table2.Episode)
Run Code Online (Sandbox Code Playgroud)

这需要数小时和数小时.(我不确切知道多少小时,因为我在大约20小时的时候取消了它.)他们大桌子,但肯定有更快的方法吗?

sql-server optimization sql-server-2005

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