powerpoint

时间:2015-08-10 12:47:21

标签: excel vba excel-vba powerpoint powerpoint-vba

我有一张销售KPI的Excel表格,该表格链接到SQL数据库并设置为每5分钟刷新一次。

我制作了一张在我们的销售办公室展示的PowerPoint。我使用“链接数据”选项从Excel复制饼图。当我第一次构建PowerPoint时,这很棒。每隔5分钟,当Excel数据从SQL更新时,PowerPoint会自动更新。

但是,当我关闭Excel和PowerPoint并在第二天打开它时,PowerPoint中的饼图不再保持动态链接。换句话说,我必须手动点击每个图表(其中有超过15个),然后单击“刷新数据”。即使在我这样做之后,链接也不再是动态的 - 当Excel图表发生变化时,它不会自动更新。

要明确的是,当这种情况发生时我会打开这两个文件。

我假设有一种方法可以使用VBA执行此操作,并希望有助于编写代码。 PP打开后,我希望每次Excel更改时都能不断自动更新。如果必须打开Excel才能完成这项工作,这没关系。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是未经测试的,但想法是每当工作表更新(更改)时,这应该更新名为KPIs.pptx的powerpoint文件中的链接。
可能需要暂停宏直到更新PPTX文件,然后释放对象。

services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
}).AddCookie(options => new CookieAuthenticationOptions
{
    //AuthenticationScheme = "Cookies", // Removed in 2.0
    ExpireTimeSpan = TimeSpan.FromHours(12),
    SlidingExpiration = false,
    Cookie = new CookieBuilder
    {
        Path = CookiePath,
        Name = "MyCookie"
    }
})
.AddOpenIdConnect(options => SetOpenIdConnectOptions(options));

private void SetOpenIdConnectOptions(OpenIdConnectOptions options)
{
    options.ClientId = Configuration["OpenIdSettings:ClientId"];
    options.ClientSecret = Configuration["OpenIdSettings:ClientSecret"];
    options.Authority = Configuration["OpenIdSettings:Authority"];
    options.MetadataAddress = $"{Configuration["OpenIdSettings:Authority"]}/.well-known/openid-configuration";
    options.GetClaimsFromUserInfoEndpoint = true;
    options.SignInScheme = "Cookies";
    options.ResponseType = OpenIdConnectResponseType.IdToken;

    options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
    {
        // This sets the value of User.Identity.Name to users AD username
        NameClaimType = IdentityClaimTypes.WindowsAccountName,
        RoleClaimType = IdentityClaimTypes.Role,
        AuthenticationType = "Cookies",
        ValidateIssuer = false
    };

    // Scopes needed by application
    options.Scope.Add("openid");
    options.Scope.Add("profile");
    options.Scope.Add("roles");
}