我有一张销售KPI的Excel表格,该表格链接到SQL数据库并设置为每5分钟刷新一次。
我制作了一张在我们的销售办公室展示的PowerPoint。我使用“链接数据”选项从Excel复制饼图。当我第一次构建PowerPoint时,这很棒。每隔5分钟,当Excel数据从SQL更新时,PowerPoint会自动更新。
但是,当我关闭Excel和PowerPoint并在第二天打开它时,PowerPoint中的饼图不再保持动态链接。换句话说,我必须手动点击每个图表(其中有超过15个),然后单击“刷新数据”。即使在我这样做之后,链接也不再是动态的 - 当Excel图表发生变化时,它不会自动更新。
要明确的是,当这种情况发生时我会打开这两个文件。
我假设有一种方法可以使用VBA执行此操作,并希望有助于编写代码。 PP打开后,我希望每次Excel更改时都能不断自动更新。如果必须打开Excel才能完成这项工作,这没关系。
感谢任何帮助。
答案 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");
}