我正在尝试制作一个excel ui /宏,它允许用户选择多个excel工作簿(wb1,wb2,wb3 ...)并将某些值从其中转移到另一个工作簿(wb_template)。然后,将其中每个保存为新工作簿(wb1_new,wb2_new,wb3_new ...)。
含义:模板工作簿可以反复使用,并且每次都保存为新工作簿-应该以原始工作簿(wb1)+“ _new”)命名:
> Wb1 + wb_template = wb1_new
> Wb2 + wb_template = wb2_new
> Wb3 + wb_template = wb3_new
总结场景:
如何实现这样的目标?这是当前用户界面的屏幕截图:https://imgur.com/a/ynnhbm0
我具有用于数据传输的以下代码:
Sub Button1_Click()
Dim wb1 As Workbook
Dim wb_template As Workbook
Set wb1 = Application.Workbooks.Open("C:\Users\PlutoX\Desktop\Folder\wb1")
Set wb_template = Application.Workbooks.Open("C:\Users\PlutoX\Desktop\Folder\wb_template")
wb_template.Sheets("Sheet1").Range("A1").Value = wb1.Sheets("Sheet1").Range("A1").Value
wb_template.Sheets("Sheet1").Range("A2").Value = wb1.Sheets("Sheet1").Range("A2").Value
wb_template.Sheets("Sheet1").Range("A3").Value = wb1.Sheets("Sheet1").Range("A3").Value
wb1.Close False
wb_template.Close True
End Sub
问题:
我有以下代码用于对话框窗口/文件选择:
Sub openDialog()
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = True
' Set the title of the dialog box.
.Title = "Please select the file."
' Clear out the current filters, and add our own.
.Filters.Clear
.Filters.Add "Excel 2003", "*.xls"
.Filters.Add "All Files", "*.*"
' Show the dialog box. If the .Show method returns True, the
' user picked at least one file. If the .Show method returns
' False, the user clicked Cancel.
If .Show = True Then
txtFileName = .SelectedItems(1) 'replace txtFileName with your textbox
End If
End With
End Sub
问题:
非常感谢您的帮助!
答案 0 :(得分:0)
首先,我要放弃use Sonata\BlockBundle\Block\Service\AbstractBlockService;
use Symfony\Component\OptionsResolver\OptionsResolver;
class MyBlockService extends AbstractBlockService
{
public function configureSettings(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'url' => false,
'title' => 'Insert the rss title',
'template' => '@SonataBlock/Block/block_core_rss.html.twig',
));
}
}
并使用Excels内置方法。像这样:
FileDialog
上方是您的Private Sub CommandButton1_Click()
Dim fNames As Variant
With Me
fNames = Application.GetOpenFilename("Excel File(s) (*.xls*),*.xls*", , , , True)
If IsArray(fNames) Then .ListBox1.List = fNames
End With
End Sub
(来自屏幕截图)按钮。
对于BrowseFile
按钮,您需要迭代到Transfer File
项。
但是在此之前,您需要使文件传输ListBox
通用。像这样:
Sub
上面是一个Sub Transferfile(wbTempPath As String, wbTargetPath As String)
Dim wb1 As Workbook
Dim wb_template As Workbook
Set wb1 = Workbooks.Open(wbTargetPath)
Set wb_template = Workbooks.Open(wbTempPath)
'/* I believe this should be dynamic but that is another story */
wb_template.Sheets("Sheet1").Range("A1").Value = wb1.Sheets("Sheet1").Range("A1").Value
wb_template.Sheets("Sheet1").Range("A2").Value = wb1.Sheets("Sheet1").Range("A2").Value
wb_template.Sheets("Sheet1").Range("A3").Value = wb1.Sheets("Sheet1").Range("A3").Value
wb1.Close False
wb_template.Close True
End Sub
过程,带有2个参数。
现在,剩下的部分是Sub
按钮的代码,看起来应该像这样:
Transfer File