私はいくつかのデータで名前のついた範囲をいくつか取り込む必要があるプロジェクトに取り組んでいます。しかし、私はこれらの名前付き範囲のアドレスを文字列として受け取っていますが、Microsoft.Office.Tools.Excel.NamedRange
ではありません。文字列はSheet1_A1_D1
のようになります。どのようにしてこれらの文字列をNamedRangeオブジェクトに変換できますか?事前定義されたメソッドはありますか?あなたのすべての協力に感謝します!どのように名前の範囲をExcelに文字列を変換するには?
-1
A
答えて
0
文字列に一貫したパターンがある場合は、必要な名前付き範囲を見つけるために必要な情報を保持する配列に分割できます。
あなたがシート名と住所細胞を取得したら、範囲を名前のシートを反復して、文字列から抽出したデータと、各名前付き範囲のアドレスを比較することができますという名前を反復処理するために
private const int SHEET_ARRAY_INDEX = 0;
private const int RANGE_START_ARRAY_INDEX = 1;
private const int RANGE_END_ARRAY_INDEX = 2;
static void Main(string[] args)
{
string myString = "Sheet1_A1_A2";
string[] rangeInfo = myString.Split('_');
string sheet = rangeInfo[SHEET_ARRAY_INDEX]; // holds "Sheet1"
string arrayStart = rangeInfo[RANGE_START_ARRAY_INDEX]; // holds "A1"
string arrayEnd = rangeInfo[RANGE_END_ARRAY_INDEX]; // holds "A2"
}
範囲参照してください。https://bishoponvsto.wordpress.com/2009/09/01/reading-named-ranges-in-excel-using-c/
0
を、それが厄介に見えると私はこれを行うには簡単に/より良い方法がある賭けています...しかし、これはそれが
string sheetRange = "DataSheet1_A1_D1";
string[] splitStringArray = sheetRange.Split('_');
string sheetToGet = splitStringArray[0];
string firstCell = splitStringArray[1];
string lastCell = splitStringArray[2];
// Use the specified sheet
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets[sheetToGet];
// Get the full range to work with
Range currentRange = xlWorkSheet.get_Range(firstCell + ":" + lastCell, Type.Missing);
// Note here:
// You could use "A","B","C"... etc to specify a column
// However... When the range is returned... The returned range will start on Col "A"
// so the given values wont match anyway...
// However all we need to know though is how many columns are involved
int colCount = currentRange.Columns.Count;
// the variables below are for testing the output
int curRow = 1;
int curCol = 1;
foreach (Range row in currentRange.Rows)
{
curCol = 1;
for (int i = 1; i <= colCount; i++)
{
((Excel.Range)row.Cells[1, i]).Value2 = "Row: " + curRow + " Column: " + curCol;
curCol++;
}
curRow++;
}
をします
希望これは、あなたが名前がとても好きに参照範囲を得ることができます
0
を支援:
range = _excelApp.ActiveWorkbook.Names.OfType<Name>().SingleOrDefault(n => n.Visible && n.Name == "rangeName")?.RefersToRange;
別のアプローチは、アドレスを解決するために、Excelを依頼することです:
range = _excelApp.get_Range(address);
これが必要になりますアドレスは、次のいずれかの形式で指定します。
- B4
- Sheet1のB4
- Sheet1のA1:!!D1
- namedRangeName
オプション3は、あなたのケースでは、Sheet1_A1_D1
は、名前付き範囲ではないようですので、移動するための方法であると思われますファンキーなアドレス文字列のようだ。最初のアンダースコアを '!'に置き換えることをお勧めします。 2つ目は ':'で、excelApp.get_range
メソッドを使用します。
関連する問題
- 1. excel vbaは文字列を範囲に変換します
- 2. Excelの数字の範囲を英字に変換する
- 3. C#IP範囲を文字列配列に変換するにはどうすればよいですか?
- 4. dfの名前文字列をdfに変換するには?
- 5. VBA - 文字列を範囲に変換する
- 6. Excel - 範囲の値のリストを範囲に変換
- 7. 名前が重複しているときにExcelワークブックで名前付き範囲を文字列で取得
- 8. Excel名前付き範囲変更イベント
- 9. Excel VBA:範囲オブジェクトを配列に変換する
- 10. Wordのオートコレクト - AddRichTextスプリアス文字と文字列を範囲に変換
- 11. excelで可変文字列範囲を定義する方法
- 12. 文字列をオブジェクトの名前に変換する方法
- 13. Excel vbaは、ブックレベルの名前付き範囲を可変に設定します。
- 14. Excel名前付き範囲にある行を削除する
- 15. 名前付き範囲を変更する作業Excel VBA
- 16. Excel Interop - 名前付き範囲を変更する方法
- 17. 文字列をファイルに変換する方法名前
- 18. Excelのセルの範囲の文字列を置き換えるVBAコード
- 19. シートからシートに名前付き範囲のコピーをExcel
- 20. はスウィフト3の範囲内の文字列に変換できない
- 21. Excel範囲のNoProofingをどのようにマークしますか?範囲のスペルチェックをオフにする?
- 22. Excelの文字列を配列形式に変換する
- 23. はどのようにExcelで特定の範囲
- 24. 列に名前付き範囲があるかどうかを調べる
- 25. golang - 文字列置換 - スライス境界が範囲外にある
- 26. どのように「エスケープ文字」にバックスラッシュの後に文字を変換する
- 27. 角2パイプ変換文字列に変換する前にヌルチェック
- 28. Office-JS Excelの機能(名前の範囲、スタイル、ユニオンなど)
- 29. Excelの文字列を時間の長さに変換する
- 30. Excel "Begins With ..."アルファベット文字の範囲