我有一个Excel 2007电子表格,我想写一个VBA程序来按名称打印特定的工作表.我该怎么做呢?
例如,我想打印"FirstSheet","ThirdSheet",和"FourthSheet",但不"SecondSheet".
可笑的是,以下代码仅在实际在excel窗口中选择了工作表的情况下才有效。我真的很想尽快完成此宏,但似乎无法找出如何选择特定的工作表,以便在excel中打开它?如果有人知道,非常感谢。我必须使用范围等。
sheet.Range(Cells(firstRow, 2).Address(False, False), Cells(lastRow, 50)).Select
With Selection
.Copy
End With
sheet.Range(Cells(firstRow, 3).Address(False, False), Cells(lastRow, 51)).Select
With Selection
.PasteSpecial xlPasteValuesAndNumberFormats
End With
Run Code Online (Sandbox Code Playgroud) Microsoft Excel 2010-
我有两个工作表Sheet1和Sheet2。
两个工作表上都有数据表,涵盖了不同类型的数据-如下所示。
<Worksheet "Sheet1">
<DataTable "Table1">
<Columns>
<Column "T1Col1" />
<Column "T1Col2" />
</Columns
</DataTable>
</Worksheet>
<Worksheet "Sheet2">
<DataTable "Table2">
<Columns>
<Column "T2Col1" />
<Column "T2Col2" />
</Columns
</DataTable>
</Worksheet>
Run Code Online (Sandbox Code Playgroud)
当前,T2Col2中的每个单元格都包含以下函数:
=COUNTIF('Sheet1'!B:B, [T2Col1])
Run Code Online (Sandbox Code Playgroud)
我想用[T1Col2]的方括号内的引用替换“ B:B”,但是我不确定如何在单独的表和工作表之间完成此操作。
我试图从excel工作簿中永久删除工作表,但它没有按预期工作,
CType(oWB1.Sheets("ABC"), Excel.Worksheet).Delete()
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
我正在编写一个程序来将数据写入现有的Excel文件.计划将新数据附加到旧数据,但现在我仍然试图访问特定的工作表.我在网上做了很多搜索,但没有一个人在我的网站上工作过.我仍然得到错误.希望有人能帮助我弄清楚我做错了什么.我有一个写入Excel的功能.我一直被困在线上来创建工作表对象.总是在这条线上得到错误.我尝试过不同的方式:
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelWorksheets.get_Item(1);
Run Code Online (Sandbox Code Playgroud)
要么
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelWorksheets.Worksheet[0];
Run Code Online (Sandbox Code Playgroud)
要么
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelWorksheets.get_Item(1);
Run Code Online (Sandbox Code Playgroud)
要么
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelWorksheets.get_Item(currentSheet);
Run Code Online (Sandbox Code Playgroud)
我尝试了许多不同的在线方式,但似乎没有一种方法适合我.
这是我的Excel代码的功能:
using Microsoft.Office;
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
public void write_to_file(string lux_excel, string serialnumber_excel)
{
Excel.Application excelapp = new Excel.Application();
excelapp.Visible = true; //make the object visible
Excel.Workbooks excelWorkbooks;
Excel.Workbook excelWorkbook;
excelWorkbooks = excelapp.Workbooks;
object misValue = System.Reflection.Missing.Value;
string fileName = @"C:\Designs\C_sharp_learn\chapter2\test_data.xlsx";
excelWorkbook = excelWorkbooks.Open(fileName, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, …Run Code Online (Sandbox Code Playgroud) 我有一个电子表格,我想通过 LibreOffice Calc 和 Excel 访问该电子表格。我将电子表格保存为.xls文件,当我在这两个程序中打开它时,大部分内容的工作方式相同。
但是,如果我想要一个引用工作表“XYZ”上的单元格“A1”的公式,我必须在 Excel 中将其编码为=XYZ!A1,在 LibreOffice Calc 中将其编码为=XYZ.A1。
这会阻止我在想要在 LibreOffice Calc 和 Excel 中访问的任何电子表格中使用此类工作表引用。
有谁知道一种在 LibreOffice Calc 和 Excel 中都可以使用的单元格工作表引用编码方法?
我正在尝试自动化为每月报告类型工作簿在 excel 中为每个客户名称添加工作表(带有数据)的过程
我认为它应该是直接的......但我使用的方法不起作用......它甚至没有进入制表模式......你能帮我弄清楚我做错了什么吗?
以下是我做的功能
function Excelclientstatstemplate ($clients) {
$Exl = New-Object -ComObject "Excel.Application"
$Exl.Visible = $false
$Exl.DisplayAlerts = $false
$WB = $Exl.Workbooks.Open($excelmonthlysummary)
$clientws = $WB.worksheets | where {$_.name -like "*$clients*"}
#### Check if Clients worksheet exists, if no then make one with client name ###
$sheetcheck = if (($clientws)) {} Else {
$WS = $WB.worksheets.add
$WS.name = "$clients"
}
$sheetcheck
$WB.Save
# Enter stat labels
$clientws.cells.item(1,1) = "CPU Count"
$clientws.cells.item(2,1) = "RAM"
$clientws.cells.item(3,1) = "Reserved CPU"
$clientws.cells.item(4,1) = "Reserved …Run Code Online (Sandbox Code Playgroud) 有用户定义的函数(UDF),它位于工作簿的所有工作表上.
如何查看函数所在的工作表?
我正在使用ThisWorkbook.ActiveSheet,但结果不断变化.
Function äëÿñèò(Diapozon As Range) As Long
'äëÿ ñèòóàöèè
Application.Volatile
Dim n As Long
Dim C As Range
Dim m As Long
m = -1
n = 0
For Each C In Diapozon.Rows
If C.Value = 1 Then
m = m + 1
If ThisWorkbook.ActiveSheet.Cells(101, 42 + (m * 21)).Value = 1 Then
n = n + 1
End If
End If
Next C
äëÿñèò = n
End Function
Run Code Online (Sandbox Code Playgroud) 我希望我的代码复制整个工作表(SOURCE)并将其粘贴到其他工作簿(WHERE_I_WANNA_PASTE_IT)下的其他工作表(TARGET)中并保存.
我收到此错误:
运行= -time错误'1004':范围类的复制方法失败
在这条线上:
Run Code Online (Sandbox Code Playgroud)CurrentSheet.Cells.Copy Destination:=oSheet.cells
代码:
Public Const path1 As String = "C:\Where_I_WANNA_PASTE_IT.xlsb"
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
Dim CurrentSheet As Object
Sub copyNpaste
Set CurrentSheet = ActiveSheet
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open(path1)
Set oSheet = oBook.Worksheets("TARGET")
'Deleting what's on "TARGET" first
oSheet.cells.delete
'This is where the Error happens.
CurrentSheet.Cells.Copy _
Destination:=oSheet.Cells
oBook.Save
oBook.Close
Set oExcel = Nothing
Set oBook = Nothing
Set oSheet = Nothing
Set CurrentSheet …Run Code Online (Sandbox Code Playgroud) 我设置了多个Worksheet对象,仅设置了最后一个对象Nothing,第一个X是empty
多行声明有效
Dim ws1, ws2 As Worksheet
If ws1 is nothing then
If ws1 = "" then
If ws1 = "Empty" then
If ws1 = vbEmpty then
If IsEmpty(ws1) then
If IsNull(ws1) then
'tried all of these but get
'runtime error
If ws2 is nothing then
'works fine
Run Code Online (Sandbox Code Playgroud)
Dim ws1 As Worksheet, ws2 As Worksheet
If ws1 is nothing then
'works fine
If ws2 is nothing then
'works fine
Run Code Online (Sandbox Code Playgroud)
由于P ??的回答而导致的后续行动:
Dim ws1, ws2 As …Run Code Online (Sandbox Code Playgroud) worksheet ×10
excel ×9
vba ×5
excel-vba ×3
c# ×1
cells ×1
com ×1
copy-paste ×1
excel-2010 ×1
object ×1
powershell ×1
printing ×1
vb.net ×1