我正在Excel中的一个项目上工作,在该项目中,我有一个数据透视表,其中包含人们的姓名及其相关声明。我需要双击表中的每个名称,然后在单独的工作表中显示详细信息(索赔详细信息)时,将该工作表另存为单独的工作簿,并将该人的名字保存在文件夹中。有什么办法可以在VBA中自动执行此过程?
我有下面的代码可用于第一项,但有一些问题:
-工作表和工作簿的名称是硬编码的,因此仅适用于第一项。无论如何,有没有只是选择新的表而不是按名称选择它?有没有一种方法可以使用项目名称代替Book3.xlsx?
这是我的代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|enterAlways"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_collapseMode="pin"
app:layout_scrollFlags="enterAlways|scroll" />
</android.support.design.widget.AppBarLayout>
<!--<include layout="@layout/content_main" />-->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_container"
android:background="@color/colorPrimary"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Your content here -->
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</FrameLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>
谢谢您的帮助!
*编辑:这是解决方案后的代码。
Sub IndividualReports()
Application.ScreenUpdating = False
On Error Resume Next
Dim LastRow As Long
Sheets("Table").Select
With Application.ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
For i = 8 To LastRow
Range("C" & i).Select
Selection.ShowDetail = True
Sheets("Sheet2").Select
Sheets("Sheet2").Move
Sheets("Sheet2").Select
ChDir "C:\Users\haghigy\Desktop\New3"
ActiveWorkbook.SaveAs Filename:="C:\Users\haghigy\Desktop\New3\Book3.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Next
End Sub
答案 0 :(得分:0)
一个好的开始!我注意到了几件事。首先,当您将明细表移动到新工作簿并另存为时,带有“数据透视表”的工作簿不再是活动工作簿。因此,在新工作簿上选择范围将无效。您可以添加
QueuedTaskScheduler
到循环顶部。此外,
Workbooks("[WorkbookName].xlsx").Activate
Sheets("Table").Activate
不需要两个Select方法,并且工作表编号将增加,因此它并不总是为Sheet2。您可以将上面的代码替换为:
Sheets("Sheet2").Select
Sheets("Sheet2").Move
Sheets("Sheet2").Select
最后,您必须更改要保存的工作簿的名称,这样它不会每次都被覆盖。也许像:
ActiveSheet.Move
然后它应该工作。
* edit:也不是真的需要ChDir